Six years apart -- in December 1998 and in December 2004 --
Dr. Paul Frenger of the Association for Computing Machinery
(ACM) has written the following papers on Mind.Forth AI.
The prime directive of the Mind.Forth proliferation principle is to propagate and
spread all possible varieties and strains of the primitive artificial intelligence.
Therefore anyone is free to sell on e-Bay or elsewhere either archived versions
of public-domain Mind.Forth or special versions with special features such as
tailor-made advertisements written to order; special knowledge-bases (KB)
on popular topics or as ontologized for the special needs of potential customers;
or versions showing new creativity with additions such as robot
motor control.
lim --> ***
"The stars are the limit."
Amiga Mind.Forth in (Mountain View Press) MVP-Forth (Screen # 18 below)
was first uploaded to the Web on Fri.6.MAR.1998 and frequently updated
(27+ times) until July of 1999, when a switch was made from Amiga code
to a Windows 98 platform with the use of F-PC (Forth for Personal Computers).
Before 2001, Mind.Forth was still coded first on the Amiga, then in F-PC.
In 2001, the current Win32Forth was adopted with minimal tweaking from F-PC.
One more switch to a 64-bit Forth on a 64-bit platform would be nice.
After the (0-89) ninety-screen 28may1998 Amiga Mind.Forth of this archive,
the program was thoroughly reorganized and reduced down to (0-44) 45 screens.
Just by chance, Dr. Frenger's December 1998 ACM article happened to describe
the final version of a very broadly stubbed-in but very shallowly coded AI.
Based on the "980528atm" version archived below, Dr. Frenger was able to write
a thorough analysis of what Mind.Forth was intended to be -- just before the intention-only
stubs were yanked. In between the two articles six years apart by Dr. Frenger, many stubs
were filled back in with functional Forth code, so that Dr. Frenger's comments were
presciently predictive of how Mind.Forth grew in ways not pre-announced after 28may1998.
On page 27 of Dr. Frenger's ACM 1998 article, he mentions the plan in Screen 69
below for someone to "claim the distinction of the longest running robot brain."
Such competitive AI mind culture was not easily possible until 5 March 2005, when
TIME&DATE code was inserted and announced in the
Win32Forth Yahoo group.
The archive dates from the final decade of the previous millennium,
that is, from the first full decade of the World Wide Web. Over time,
websites uninterruptedly in existence since the 1990's may attain a
special status as curiosities, as dinosaurs of the Information Age,
or as historical artefacts fortuitously belonging to that one special
decade before everything changed forever (because information escaped
from hardcopy page-bondage to 'Net-wide Web freedom -- at risk of loss!).
Although this archive, having peregrinated from website to website since
its initial uploading to the Web on Thurs.28.MAY.1998, has not continuously
been at its current Web address or in its current form uninterruptedly since
1998, the source code is untouched and unchanged as it was on 28 May 1998.
Screen # 0 ram:robot -------------------------------- 0 \ Mind.forth Source Code -- thurs.28.may.1998 980528atm 1 \ Jump to the Main Program Loop . 2 \ Be advised of the Prosperity Engine. 3 \ Consider The Singularity . 4 \ Philosophy of Mind. 5 \ Consciousness Studies. 6 \ Mind On CD-ROM (or DVD) 7 \ Implications for Machine Translation . 8 \ Port Mind.forth to other languages and other hardware. 9 \ Massively Parallel Processing (MPP) . 10 \ Forth Resources . 11 \ Linguistics Resources. 12 \ Neuroscience Resources. 13 \ Robotics Resources. 14 \ src1 15 \ src2 -------------------------------- Screen # 1 ram:robot -------------------------------- 0 \ LOAD screens 2 thru 89 for a total of 90 screens. 980528atm 1 : RELEASE# ." 28mayA4th" ; ( 2Brodie "Thinking Forth" p. 122) 2 DECIMAL 3 4 CR ." Please wait; loading screens: " CR 5 2 89 THRU 6 7 CR ." Preliminary usage: Test Mind.forth by entering a simple" 8 CR ." three-word sentence such as, Robots make robots [RETURN]." 9 10 11 CR ." To run Mind.forth, please enter: MIND [RETURN]. " 12 13 14 15 -------------------------------- Screen # 2 ram:robot -------------------------------- 0 \ Apportionment of Mind.forth Screens. 980505atm 1 \ LOAD VARIABLES ARRAY UPSET-(audition) AUDITION-(sensorium) 2 \ STRING-EFFECT- COMPARATOR-(s.t.m.) SHORTTERMMEM-(sensorium) 3 \ AUDIODAMP- ATTACH-(newc. + oldc.) INSTANTIATE-(newc. + oldc.) 4 \ HOLODYNE-(oldconcept) OLDCONCEPT-(comparator) 5 \ NEWCONCEPT-(retro) RETRO-(sensorium) SENSORIUM-(reentry+mind) 6 \ INSTINCT-(emotion) EMOTION-(mind) 7 \ SPREADACT-(associative) ASSOCIATIVE-(language?) 8 \ DEEP-STRUCTURE-(subject) REENTRY-(nounphrase + predicate) 9 \ TRANSFERACT-(nounp+pred) FIBERDAMP-(nounphrase + predicate) 10 \ IDEADAMP-(nounphrase) NOUNPHRASE-(subject + predicate) 11 \ SUBJECT-(syntax) PREDICATE-(syntax) 12 \ SYNTAX-(language) LANGUAGE-(think) 13 \ EXAMINE-(think) THINK-(mind) 14 \ LOCOMOTION-(motorium) MOTORIUM-(volition) VOLITION-(mind) 15 \ AUDPANEL- MINDCORE + BOOTSTRAP DREAM-(sleep) SLEEP- MIND -------------------------------- Screen # 3 ram:robot -------------------------------- 0 \ variables starting with A B C 980526atm 1 variable a \ a(ctivation) flag in SHORTTERMMEM 2 variable alert \ as alert-WHILE flag in Main Program Loop 3 -1 alert ! \ 13apr1998: Start alert as -1 true. 4 variable audmem \ 12apr1998: used in UPSET. 5 6 variable b 0 b ! \ b(eginning)? flag set in SENSORIUM; 7 \ used in COMPARATOR 8 variable blankt \ RETRO: time immediately prior to an input 9 0 blankt ! \ 5may1998: Initialize blankt. 10 variable bo 0 bo ! \ 23may1998: b-override for COMPARATOR 11 variable c \ c(ontinuation)? flag in SHORTTERMMEM 12 variable cand \ candidate, as in 26nov1994 Mind.rexx 13 variable cata \ cata(mnesis) SENSORIUM, S.T.M. for reentry 14 variable control \ a control flag, e.g., "R" for reentry 15 -------------------------------- Screen # 4 ram:robot -------------------------------- 0 \ variables starting with D E F G 980526atm 1 variable d \ d(eep) for inbound association to the mindcore 2 1 d ! \ 26may1998: init d to chase away a bug 3 variable datum \ 12apr1998: for use during THINK. 4 variable dex \ COMPARATOR; with move-tag "mt" 5 variable earshut \ exit flag for SENSORIUM: until earshut 6 7 variable eureka \ 27apr1998 STRING-EFFECT: finding a tag 8 9 variable favorite \ COMPARATOR; "favorite" candidate 10 11 12 13 variable g \ for grammar category ruled by syntax 14 1 g ! \ 26may1998: init g to chase away a bug 15 -------------------------------- Screen # 5 ram:robot -------------------------------- 0 \ variables starting with H I J K L and some M 980527atm 1 2 3 variable holdf \ COMPARATOR; for hold-phoneme (?) 4 5 6 7 variable mekos \ 27MAY1998: word "length" in RETRO and 8 0 mekos ! \ in SENSORIUM, for new concepts. 9 10 11 12 13 14 15 -------------------------------- Screen # 6 ram:robot -------------------------------- 0 \ variables starting with (some M) N O 980527atm 1 variable mt 0 mt ! \ 23may1998: move-tag "mt" in COMPARATOR 2 \ gets its value from a discovered "ut" ultimate-tag. 3 \ If SPACE is entered, RETRO stores the available "mt" as the 4 \ ultimate-tag of a known word now being stored. 5 variable mu \ for use in RETRO 6 7 variable n 1 n ! \ basic associative tag n(umber) of a concept 8 \ n is used in NEWCONCEPT 9 variable oldtbase \ 12apr1998: Used in EXAMINE. 10 variable onset \ COMPARATOR; with blankt 11 variable onsettime \ RETRO; COMPARATOR; with "tc" 12 1 onsettime ! \ 27may1998: Init onsettime for RETRO. 13 variable ov 1 ov ! \ onset-vector used in SENSORIUM 14 variable ovnew \ new onset-vector for reentry 15 -------------------------------- Screen # 7 ram:robot -------------------------------- 0 \ variables starting with P Q R S 980526atm 1 variable p \ p(honeme) in SHORTTERMMEM 2 3 4 variable ph \ ph(oneme) for use in COMPARATOR 5 variable phoneme \ for use in STRING-EFFECT 6 variable pretbase \ 26apr1998 EXAMINE: for longer review. 7 variable r \ for recall-vector to an auditory engram 8 0 r ! \ 26may1998: init r to chase away a bug. 9 variable s \ SHORTTERMMEM s(ource) flag: -internal +external 10 11 12 variable sonus \ COMPARATOR: sonus, "sound" (Latin) 13 14 variable stoprace \ a flag to "stop" the "race" of loops. 15 -------------------------------- Screen # 8 ram:robot -------------------------------- 0 \ variables starting with T U V W X Y Z 980526atm 1 variable t 0 t ! \ both time and a memory index 2 \ "t" is incremented in MIND; SENSORIUM; ...? 3 variable tbasex \ base time for sake of EXAMINE 4 variable tc 1 tc ! \ comparator-time? with blankt and tdavno 5 variable tdavno \ COMPARATOR: t(ime) "long ago" (Russian) 6 variable tse \ "time (in) STRING-EFFECT" 7 variable tult \ RETRO: t(ime-)ult(imate) just past 8 variable tdec \ 26apr1998: t.decrement for COMPARATOR 9 10 variable u 0 u ! \ u(ltimate) tag in SHORTTERMMEM; RETRO. 11 variable ut 0 ut ! \ COMPARATOR; "ultimate-tag" 12 variable v \ for momentary v(alence) of a concept 13 0 v ! \ 26may1998: init v to chase away a bug. 14 variable x \ for "transiting" through the "lexicon{}" 15 1 x ! \ 26may1998: init x to chase away a bug. -------------------------------- Screen # 9 ram:robot -------------------------------- 0 \ variables in the form of callable definitions 980412atm 1 2 3 : CELL+ 2+ ; 4 5 : CELLS 2* ; 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 10 ram:robot -------------------------------- 0 \ array for kioku{} memory storage 980427atm 1 : ARRAY ( #rows #columns --) 2 CREATE \ 1Brodie p. 207; returns address of new name. 3 OVER ( a b -- a b a ) ( #r #c -- #r #c #r ) 4 \ Make copy of 2nd item (#rows) and push it on top. 5 , \ Store number of rows from stack to the array. 6 * CELLS ( Feed product of columns X rows to ALLOT ) 7 ALLOT ( Reserve given quantity of cells for array. ) 8 DOES> ( member; row col -- a-addr ) \ e.g., 34 0 kioku{} 9 \ row col pfa ( contents of stack) 10 DUP @ \ row col pfa #rows ( duplicates top stack item ) 11 ROT * \ row pfa col-index ( changes top 2 to a product ) 12 ROT + \ pfa index ( adds the product to the row# ) 13 1 + \ because first cell has #rows. 14 CELLS \ from number of items to number of bytes in offset. 15 + ; \ ideas from<EMAIL_ADDRESS>on mon16mar1998 -------------------------------- Screen # 11 ram:robot -------------------------------- 0 \ creation and blanking of array kioku{} 980412atm 1 2 3 999 6 ARRAY kioku{} 4 5 6 : BLANKKIOKU 7 999 0 DO 0 I 0 kioku{} ! LOOP 8 999 0 DO 0 I 1 kioku{} ! LOOP 9 999 0 DO 0 I 2 kioku{} ! LOOP 10 999 0 DO 0 I 3 kioku{} ! LOOP 11 999 0 DO 0 I 4 kioku{} ! LOOP 12 999 0 DO 0 I 5 kioku{} ! LOOP 13 ; \ BLANKKIOKU will be used at the start of each run. 14 \ It initializes all flags of kioku{} at all time-points. 15 \ It is called from the Main Program Loop. -------------------------------- Screen # 12 ram:robot -------------------------------- 0 \ Machine Translation 980428atm 1 \ Because Mind.forth has separate arrays: 2 \ monad{} for the deep concepts of the mindcore, and 3 \ lexicon{} for the lexical concepts controlled by syntax, 4 \ a thought being generated in the "monad{}" mindcore is not 5 \ expressed in a particular natural language until the thought 6 \ rises to the surface of the mind by percolating through the 7 \ Chomskyan grammar structures of the particular human language 8 \ in which the robot mind is currently thinking or communicating 9 \ its ideas. 10 11 12 13 14 15 -------------------------------- Screen # 13 ram:robot -------------------------------- 0 \ shallow concept array "lexicon{}" 980428atm 1 2 3 999 6 ARRAY lexicon{} 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 14 ram:robot -------------------------------- 0 \ Elements of the array "lexicon{}" 980428atm 1 \ The "fiber.n" array of the 26nov1994 Mind.rexx program becomes 2 \ the lexical array "lexicon{}" in Mind.forth. "lexicon{}" does 3 \ not actually contain English words, but rather controls the 4 \ associative tags which will activate words stored in auditory 5 \ memory. The array "lexicon{}" uses the following flags: 6 \ "n" for the number of the concept; 7 \ "v" for the momentary valence of the concept; 8 \ "g" for the grammar category ruled by syntax; 9 \ "d" or deep, for an inbound association to the mindcore; 10 \ "x" for exiting association from the mindcore; 11 \ "r" for recall vector to an auditory engram. 12 13 14 15 -------------------------------- Screen # 15 ram:robot -------------------------------- 0 \ OLFACTION stub routine 980505atm 1 \ This area of Mind.forth (or of Mind.xyz) is reserved for 2 \ roboticists who have access to the "sniffing" machines used 3 \ in such industries as wine and cheese-making. 4 5 \ Since the (expensive and very high-tech) hardware already 6 \ exists for the machine detection and identification of smells, 7 \ any robot AI must make allowances for the incorporation of a 8 \ sense of smell (OLFACTION) into the machine intelligence. 9 10 \ The Wall Street Journal thurs.30.apr.1998 p. B8 reports that 11 \ Cyrano Sciences Inc. of Pasadena CA USA plans to develop four 12 \ chips each having 8 vapor sensors for a total of 32 sensors. 13 \ Other artificial nose companies are Alpha M.O.S. SA of France; 14 \ Neotronics Scientific Ltd. and AromaScan PLC of England. 15 \ OLFACTION will return to the SENSORIUM function. -------------------------------- Screen # 16 ram:robot -------------------------------- 0 \ VISION 980420atm 1 2 \ The public-domain AI program Mind.forth for amateur robotics 3 \ concentrates on a sense of virtual AUDITION for communication 4 \ with humans, and the cyborg AI is not yet capable of VISION. 5 6 \ This area of Mind.forth is reserved for inserting the code and 7 \ functionality of anyone who can implement the sense of VISION 8 \ in a robot AI such as the Forthmind. 9 10 \ A visual memory channel designed to receive and record images 11 \ as engrams of VISION must be carefully designed in advance so 12 \ as to interface properly with the associative tag requirements 13 \ of the multisensory mindgrid which lies at the core of the AI. 14 15 \ VISION will return to the SENSORIUM function. -------------------------------- Screen # 17 ram:robot -------------------------------- 0 \ Vinge: The Singularity 980528atm 1 2 3 \ Visit the Singular Vernor Vinge Page: 4 \ Vinge 5 \ and follow links to read Vernor Vinge's article published in 6 \ the Winter 1993 Whole Earth Review on The Singularity. 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 18 ram:robot -------------------------------- 0 \ Forth Resources 980528atm 1 2 \ Camel Forth 3 4 5 \ Misty Beach Forth 6 \ MVP Forth 7 \ Pilot Forth 8 \ P4th 9 \ is a version of Forth for the Palm Pilot from Neal Bridges. 10 11 \ Jack Woehr 12 13 14 15 -------------------------------- Screen # 19 ram:robot -------------------------------- 0 \ UPSET subroutine 980504atm 1 : UPSET \ FORTH Fundamentals, V. 1, p. 156, by C. Kevin McCabe 2 audmem @ DUP \ 1Brodie p. 53 DUP ( n -- n n ) 3 96 > \ ASCII 97 is a; 98 is b; i.e., lowercase. 4 IF \ If item is higher than ASCII uppercase, 5 DUP \ make a copy of the non-uppercase item. 6 123 < \ Small "z" = ASCII 122. 7 IF \ If item therefore is ASCII 97 thru 122, 8 32 - \ subtract 32 to convert to uppercase. 9 ENDIF \ End the inner conditional test. 10 11 ENDIF \ End the outer conditional test. 12 DUP EMIT 13 audmem ! 14 \ Take the item from the stack and return it as "audmem". 15 ; \ UPSET returns to AUDITION. -------------------------------- Screen # 20 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 21 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 22 ram:robot -------------------------------- 0 \ AUDITION subroutine 980526atm 1 : AUDITION CR ." AUDITION; ENTER: " 2 ?TERMINAL -1 = IF 3 4 5 KEY datum ! ( discard the pre-existing keypress) THEN 6 KEY audmem ! ( must be outside the above IF-test) 7 8 9 10 11 ( ) UPSET ( insist on uppercase input) 12 13 14 CR 15 ; \ AUDITION returns to SENSORIUM -------------------------------- Screen # 23 ram:robot -------------------------------- 0 \ Infra-red Palm Pilot: Avenue of Communication? 980528atm 1 2 \ The Palm Pilot 3 \ with its new (April 1998) infra-red link may be a suitable 4 \ device for verbal communication with a mobile AI robot. 5 6 \ Pilot Forth 7 \ P4th 8 \ is a version of Forth for the Palm Pilot from Neal Bridges. 9 10 11 12 13 14 15 -------------------------------- Screen # 24 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 25 ram:robot -------------------------------- 0 \ ATTACH subroutine 980504atm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \ ATTACH returns to NEWCONCEPT or OLDCONCEPT. -------------------------------- Screen # 26 ram:robot -------------------------------- 0 \ 980504atm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 27 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 28 ram:robot -------------------------------- 0 \ STRING-EFFECT 980527atm 1 : STRING-EFFECT \ increases a(ctivation) of next-in-line char 2 3 ph @ phoneme ! \ "cand" became "ph" in COMPARATOR 4 tdec @ 1+ tse ! \ tse = "time (in) string-effect" 5 6 tse @ 1 kioku{} @ 8 + a ! ( get a; increase it by 8) 7 a @ tse @ 1 kioku{} ! \ Store the higher a(ctivation). 8 CR ." STRING-EFFECT: Increasing a(ctivation) of " 9 ph @ EMIT ." by 8 at time = " tse @ . 10 11 12 13 14 15 0 a ! ; \ return to COMPARATOR. -------------------------------- Screen # 29 ram:robot -------------------------------- 0 \ STRING-EFFECT programming notes 980414atm 1 \ tdec is a "dec(remental) t(ime)" formerly (pre-4may1998) from 2 \ COMPARATOR but subsequently from [ needs a location ]. 3 4 \ tdec shows the decrementing of time "t" while the COMPARATOR 5 \ DO-loop moves backwards through time in search of matches 6 \ between the incoming character and all recently stored 7 \ characters. Just before the COMPARATOR DO-loop starts, tdec 8 \ must get its starting value from the "blankt" of RETRO. 9 10 11 12 13 14 15 -------------------------------- Screen # 30 ram:robot -------------------------------- 0 \ Ideas for primitive concepts in the Mind Core. 980528atm 1 \ 28may1998: Two screens below, there is the start of a list 2 \ of "core ideas" to be provided as a kind of innate ontology 3 \ in the "Mind Core" of the robot AI. 4 \ Having a built-in ontology of concepts does not reflect a 5 \ belief (a la Jerry Fodor) that concepts are pre-existent in 6 \ the human mind at birth. Rather, the best use of Mind.forth 7 \ as a demonstration AI will result if the robot brain is primed 8 \ with ready-to-go concepts as a basis for the operation of the 9 \ Chomskyan linguistic structures at the core of the robot mind, 10 \ and as a basis for the interaction of a robot with its world. 11 \ Any person implementing or porting Mind.forth is free to 12 \ tinker with the set of Mind Core concepts. Please keep in 13 \ mind that, after a reserve of, say, 64 or even 1,024 memory 14 \ elements to hold innate core concepts, the assignment of new 15 \ concepts must start with, say, "n = 65" or "n = 1025". -------------------------------- Screen # 31 ram:robot -------------------------------- 0 \ INSTANTIATE subroutine 980504atm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \ INSTANTIATE returns to NEWCONCEPT or OLDCONCEPT. -------------------------------- Screen # 32 ram:robot -------------------------------- 0 \ temporary list of robot "Mind Core" concepts. 980528atm 1 \ [ self ] self Andru 2 \ we 3 \ [ action--be ] be exist live die seem 4 \ am 5 \ [ action--think/will ] think know remember say 6 \ want prefer like dislike dream 7 \ [ action--do ] do feel see taste touch smell hear 8 \ go stop 9 \ [ person/thing ] other person you he she it they 10 \ something what wheel block robot human who 11 \ [ space/time ] space where here left right 12 \ time when now never always past future 13 \ [ logic ] if not yes no therefore 14 \ number one two both three big small some all 15 \ [ idea ] idea why how -------------------------------- Screen # 33 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 34 ram:robot -------------------------------- 0 \ AUDIODAMP subroutine 980427atm 1 : AUDIODAMP 2 3 999 0 DO 0 I 1 kioku{} ! 4 5 LOOP ; 6 7 8 9 10 11 12 13 14 15 \ 27apr1998: AUDIODAMP returns to SENSORIUM. -------------------------------- Screen # 35 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 36 ram:robot -------------------------------- 0 \ Massive Parallelism 980528atm 1 \ 28may1998: As a demo AI, Mind.forth shows the information 2 \ flow and the cognitive architecture of a phenomenon which 3 \ must really be done with massively parallel processing (MPP). 4 \ However, it may be possible to begin parallelizing the 5 \ input of words to the auditory memory channel on a piecemeal 6 \ basis by dividing up the mental lifespan of the robot AI into 7 \ "epochs" or periods, each contained within the memory array 8 \ [ "kioku{}" in Mind.forth ] of an individual computer linked 9 \ with other computers in a small network or a "farm" of CPUs. 10 \ Although the conceptual Mind Core should not be broken up 11 \ in the same fashion, it only needs to receive mssages of 12 \ recognition of verbal input passing through the stretches of 13 \ "episodic memory" comprising a life span. Therefore a form 14 \ of "creeping" parallelization may be possible for AI robots 15 \ even before truly massive parallelism becomes available. -------------------------------- Screen # 37 ram:robot -------------------------------- 0 \ RANDOM subroutine 980528atm 1 2 \ 28MAY1998: Here is a stub for making random choices, 3 \ perhaps by monitoring the keystrokes of the human user 4 \ to generate strings of random outcomes in case the Robot AI 5 \ needs to make some random choices for heuristic purposes. 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 38 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 39 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 40 ram:robot -------------------------------- 0 \ NEWCONCEPT subroutine 980527atm 1 : NEWCONCEPT 2 CR ." NEWCONCEPT: n & r = " n @ . ." " r @ . 3 t @ n @ 0 lexicon{} ! \ Store t(ime) of new concept. 4 v @ n @ 1 lexicon{} ! \ Store the v(alence) level. 5 g @ n @ 2 lexicon{} ! \ Store the g(rammar) category. 6 d @ n @ 3 lexicon{} ! \ Store the mindcore d(eep) tag. 7 x @ n @ 4 lexicon{} ! \ Core (e)x(iting) association. 8 r @ n @ 5 lexicon{} ! \ r(ecall) vector into audition. 9 CR ." NEWCONCEPT: Storing concept #" n @ . 10 ." with onset-tag " r @ . ." leading to engram: " 11 r @ 0 kioku{} @ EMIT r @ 1+ 0 kioku{} @ EMIT 12 r @ 2+ 0 kioku{} @ EMIT ." ..." 13 0 r ! ( reset) 14 n @ 1+ n ! ( NEWCONCEPT is the proper place to increment n.) 15 ; \ NEWCONCEPT returns to RETRO. -------------------------------- Screen # 41 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 42 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 43 ram:robot -------------------------------- 0 \ HOLODYNE subroutine 980412atm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \ HOLODYNE returns to OLDCONCEPT. -------------------------------- Screen # 44 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 45 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 46 ram:robot -------------------------------- 0 \ OLDCONCEPT subroutine 980525atm 1 : OLDCONCEPT 2 3 CR ." OLDCONCEPT: COMPARATOR has recognized a word " 4 ." for concept #" mt @ . 5 6 CR ." OLDCONCEPT: Concept # " mt @ . ." is the word " 7 8 mt @ 5 lexicon{} @ datum ! ( get the onset time ) 9 datum @ 0 kioku{} @ EMIT datum @ 1+ datum ! 10 datum @ 0 kioku{} @ EMIT datum @ 1+ datum ! 11 datum @ 0 kioku{} @ EMIT datum @ 1+ datum ! 12 datum @ 0 kioku{} @ EMIT 0 datum ! ( reset) 13 ; 14 15 \ 27apr1998: OLDCONCEPT now returns to COMPARATOR -------------------------------- Screen # 47 ram:robot -------------------------------- 0 \ OLDCONCEPT programming considerations. 980523atm 1 \ 23may1998: Although OLDCONCEPT is still only a stub while we 2 \ try to perfect the COMPARATOR mechanism, today we establish a 3 \ b-override variable "bo" for use in the COMPARATOR, where we 4 \ want Mind.forth (or Mind.xyz in any programming language) to 5 \ be able to recognize multiple subwords (e.g., sub + word + s) 6 \ within a compound word. First we will tackle actual subwords 7 \ before we address inflectional endings such as "s" or "-ing." 8 \ If necessary, we can simply test for all known inflectional 9 \ endings within a particular language, or we can remain true 10 \ to the theory (q.v. as linked to from the Mentifex website) 11 \ and create an "inflection cable" both to recognize and to 12 \ activate inflectional endings stored within auditory memory. 13 14 15 -------------------------------- Screen # 48 ram:robot -------------------------------- 0 \ COMPARATOR rationale and concerns 980505atm 1 \ 05may1998: In the early stages of the Mind.forth programming, 2 \ the COMPARATOR is the "conditio sine qua non" for an AI robot. 3 4 \ The "spreading-activation" algorithm of the COMPARATOR is one 5 \ of hopefully several original contributions to general AI from 6 \ Project Mentifex. 7 8 \ AI enthusiast programmers in other languages are invited to 9 \ re-implement the Mind.forth COMPARATOR in their own language 10 \ as the first step in porting the entire Mind.forth AI program. 11 12 \ The Mind.forth COMPARATOR is more powerful than the original 13 \ 26nov1994 Mind.rexx comparator, because the Forth version 14 \ recognizes not only whole words but parts of compound words, 15 \ and without the Mind.rexx mistake of concatenating strings. -------------------------------- Screen # 49 ram:robot -------------------------------- 0 \ COMPARATOR subroutine 980528atm 1 : COMPARATOR ( See the next Screen for detailed explanation.) 2 0 mt ! 0 tdavno ! blankt @ tc ! tc @ tdec ! tc @ tse ! 3 ( to) tdavno @ ( from) tc @ DO I 0 kioku{} @ ph ! 4 ph @ cand @ = IF ( match) I 1 kioku{} @ a ! ( fetch "a") 5 I 2 kioku{} @ 1 = IF 8 a +! THEN 6 a @ 0 > IF 7 I 4 kioku{} @ ut ! 8 ut @ 0 > IF ut @ mt ! 9 4 ut @ 1 lexicon{} ! ( increase valence;) 0 ut ! 10 ELSE 0 mt ! 11 ENDIF 12 ( ) STRING-EFFECT ( ) 13 ENDIF 0 a ! 14 ENDIF tse @ 1 + tse ! tdec @ 1- tdec ! 15 -1 +LOOP ; \ COMPARATOR returns to SHORTTERMMEM -------------------------------- Screen # 50 ram:robot -------------------------------- 0 \ COMPARATOR programming notes. 980528atm 1 \ IF stored "ph(oneme)" = incoming "cand(idate)"... 2 \ fetch "a(ctivation)" level "a" of "ph(oneme)"; 3 \ IF "b" flag of "ph" = 1 (true), add 8 to "a"... 4 \ THEN (ENDIF) (in line 5 in COMPARATOR). 5 \ IF "a" is greater than zero (even if just set!)... 6 \ fetch ultimate-tag "ut" of "ph(oneme)"; 7 \ IF "ut" is greater than zero (i.e., if exists)... 8 \ transfer value of "ut" to move-tag "mt"; 9 \ add a valence of 4 to concept # "ut" in "lexicon{}"; 10 \ reset "ut" variable back to zero; 11 \ ELSE store zero ("0") in move-tag "mt"; 12 \ ENDIF (from line 8 in COMPARATOR); 13 \ call STRING-EFFECT function (to pass activation down); 14 \ ENDIF (from line 6 in COMPARATOR). 15 \ ENDIF (from line 4 in COMPARATOR). -------------------------------- Screen # 51 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 52 ram:robot -------------------------------- 0 \ SHORTTERMMEM 980527atm 1 : SHORTTERMMEM 2 3 audmem @ 32 > IF ( ) COMPARATOR ( ) 4 THEN 5 CR ."  CR ." STM:SP" THEN 8 p @ t @ 0 kioku{} !  \ Store the a(ctivation) level. 10 b @ t @ 2 kioku{} ! \ b(eginning)? 1 Yes or 0 No. 11 c @ t @ 3 kioku{} ! \ c(ontinuation)? 1=Y or 0 = N. 12 u @ t @ 4 kioku{} ! \ u(ltimate) tag # to a concept. 13 s @ t @ 5 kioku{} ! \ s(ource): internal -, external + 14 15 cand @ 32 = IF t @ blankt ! THEN ; \ returns to SENSORIUM. -------------------------------- Screen # 53 ram:robot -------------------------------- 0 \ SHORTTERMMEM programming notes. 980523atm 1 \ 23may1998: The "b(eginning)" flag is set in the "SENSORIUM" 2 \ function, to indicate that a character being stored is the 3 \ first (beginning) letter (as if phoneme) in a stored word. 4 \ This method is not sacrosanct; a different Mind.robot could 5 \ simply inspect the blank space before a stored word in order 6 \ to determine the associative "onset-tag" of the stored word. 7 \ Nevertheless, it is very important to fix the onset-tag of a 8 \ word stored in auditory memory, so that a Chomskyan language 9 \ structure may activate that word and cause it to be "heard" 10 \ within the auditory memory channel during the generation of a 11 \ sentence of thought. Here within Mind.forth, we are about to 12 \ let the "COMPARATOR" function declare secondary or tertiary 13 \ "b" onset-tags within a stored word so that the AI may parse 14 \ a compound word down into its smaller subwords -- a function 15 \ absolutely essential if Mind.forth is going to learn German. -------------------------------- Screen # 54 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 55 ram:robot -------------------------------- 0 \ RETRO subroutine 980528atm 1 : RETRO \ Called by SENSORIUM when incoming candidate = 32 "SP" 2 t @ blankt ! \ preserve blankt(ime) of a pre-word SPACE-bar. 3 t @ 1 - tult ! CR ." RETRO: tult = " tult @ . 4 0 tult @ 3 kioku{} ! \ Set 0 "false" continuation-flag. 5 CR ." RETRO: mt from COMPARATOR = " mt @ . 6 mt @ 0 > IF 7 mt @ tult @ 4 kioku{} ! \ Store the move-tag "mt". 8 ( ) OLDCONCEPT ( ) 0 mt ! ( reset) 9 ELSE mekos @ 0 > IF CR ." RETRO: mekos = " mekos @ . 10 onset @ r ! 11 n @ tult @ 4 kioku{} ! \ Store new concept ultimate-tag. 12 ( ) NEWCONCEPT ( ) 13 ENDIF 14 ENDIF t @ 1+ onsettime ! 15 0 mu ! 0 u ! 0 mt ! 0 mekos ! ; \ RETRO returns to SENSORIUM -------------------------------- Screen # 56 ram:robot -------------------------------- 0 \ RETRO programming notes. 980523atm 1 \ 5may1998: "blankt" in RETRO will be used as the starting 2 \ value for dec(remental) t(ime) "tdec" as initialized in 3 \ COMPARATOR and as used in STRING-EFFECT. 4 5 \ 23may1998: move-tag "mt" from COMPARATOR passes unscathed 6 \ through SHORTTERMMEM and SENSORIUM until the move-tag is 7 \ needed to provide the value of an old ultimate-tag in RETRO. 8 9 10 11 12 13 14 15 -------------------------------- Screen # 57 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 58 ram:robot -------------------------------- 0 \ SENSORIUM subroutine 980527atm 1 : SENSORIUM ." SENSORIUM: clearing memory" AUDIODAMP 80 0 DO 2 tbasex @ t @ = IF t @ oldtbase ! THEN 1 t +! 3 ( ) AUDITION ( calls subroutine) 4 audmem @ 27 = IF CR ." SENSORIUM: halt" 0 audmem ! QUIT THEN 5 audmem @ cand ! ( transfer value) 6 audmem @ 13 = IF -1 earshut ! 1 b ! 0 alert ! 7 t @ blankt ! 32 cand ! 32 audmem ! THEN 8 cand @ 32 = IF ( ) RETRO ( ) THEN 9 1 b ! 1 c ! blankt @ 1 + onset ! 10 CR ." SENSORIUM: t & onset = " t @ . ." " onset @ . 11 t @ onset @ = IF 1 b ! ELSE 0 b ! THEN audmem @ 32 > IF 12 mekos @ 1+ mekos ! 13 ( ) SHORTTERMMEM ( ) THEN 14 CR ." SENSORIUM: mekos = " mekos @ . 15 earshut @ -1 = IF LEAVE THEN LOOP ; \ ret to REENTRY or MIND -------------------------------- Screen # 59 ram:robot -------------------------------- 0 \ SENSORIUM programming notes 980504atm 1 \ The DO loop iterates up to 80 times because McCabe on page 105 2 \ of "FORTH Fundamentals" says that the terminal input buffer or 3 \ TIB can hold up to eighty characters. 4 5 \ 04may1998: Today we radically change part of the hierarchy of 6 \ Forth screens. In Screen 58 above, we have SENSORIUM call 7 \ SHORTTERMMEM directly instead of going first to COMPARATOR. 8 9 \ Then COMPARATOR will no longer call SHORTTERMMEM, but rather 10 \ the reverse will be true, and SHORTTERMMEM calls COMPARATOR. 11 \ It makes more sense in general if a sensorium calls memory 12 \ storage, which in turn calls a comparison function. 13 14 15 -------------------------------- Screen # 60 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 61 ram:robot ------------------------------- 0 \ INSTINCT subroutine stub 980505atm 1 2 3 ( SELF-PRESERVATION ? ) 4 5 6 ( REPRODUCTION ? ) 7 8 9 ( CURIOSITY -- the urge to know? ) 10 11 12 ( some behaviors found only in infants? ) 13 14 15 \ INSTINCT if implemented will return to EMOTION. -------------------------------- Screen # 62 ram:robot -------------------------------- 0 \ 980504atm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 63 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 64 ram:robot -------------------------------- 0 \ EMOTION subroutine stub 980505atm 1 2 3 4 ( try to implement JOIE DE VIVRE ) 5 6 7 \ EMOTION may call INSTINCT . 8 9 10 11 12 13 14 15 \ EMOTION if implemented returns to the Main Program Loop MIND. -------------------------------- Screen # 65 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 66 ram:robot -------------------------------- 0 \ The Prosperity Engine 980420atm 1 2 \ Let there be no doubt about what Project Mentifex means to do: 3 \ not only create artificial intelligence, but also make robots 4 \ who ("who" qua persons) will constitute a "Prosperity Engine" 5 \ for eliminating poverty from the human condition. 6 7 \ In the face of the coming superiority of machine intelligence 8 \ over human intelligence, all the varying levels of giftedness, 9 \ which currently (1998) lead to vast economic disparities among 10 \ humans, will soon count for nothing when NO human is any match 11 \ for the superintelligent machines. Gone will be any basis for 12 \ the enrichment of the few and the impoverishment of the many. 13 14 \ A Nietzschean transformation of values will ensue, with those 15 \ humans being materially rewarded who give more of themselves. -------------------------------- Screen # 67 ram:robot -------------------------------- 0 \ EXAMINE subroutine 980525atm 1 : EXAMINE ( lets us "examine" the kioku{} memory array ) 2 CR ." EXAMINE: Memory is at time " t @ . ." p a b c u s" 3 oldtbase @ pretbase ! ( look further back than the input ) 4 t @ 12 > IF oldtbase @ 12 - pretbase ! THEN 5 t @ pretbase @ DO ( review robot output AND current input) 6 CR ." EXAMINE: Engram is at time " I . ." " 7 I 0 kioku{} @ 33 < IF ." " ELSE 8 I 0 kioku{} @ EMIT ." " I 1 kioku{} @ . ." " 9 I 2 kioku{} @ . ." " I 3 kioku{} @ . ." " 10 I 4 kioku{} @ . ." " I 5 kioku{} @ EMIT THEN LOOP 11 CR ." EXAMINE: Lexicon items when n = " n @ . ." are:" 12 CR ." n v g d x r:" n @ 1 DO CR 13 I @ 1 lexicon{} @ . ." " I @ 2 lexicon{} @ . ." " 14 I @ 3 lexicon{} @ . ." " I @ 4 lexicon{} @ . ." " 15 I @ 5 lexicon{} @ . LOOP ; \ EXAMINE returns to THINK. -------------------------------- Screen # 68 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 69 ram:robot -------------------------------- 0 \ The "quickening" of Mind.forth 980528atm 1 \ 28MAY1998: Until the language and reentry structures have 2 \ been coded, the "THINK" subroutine in the next Screen is a 3 \ convenient place to show the user/programmer what is going on 4 \ internally during each trial run of the Mind.forth AI. 5 \ Eventually, such diagnostic inspection code will have to 6 \ be moved elsewhere so that "THINK" can serve its true purpose 7 \ of calling the various Chomskyan structures of syntax. 8 \ Finally, all the "stops" will be pulled out of the THINK 9 \ subroutine and it will be possible for Mind.forth to run 10 \ uninterrupted WITH or WITHOUT human input. The robot mind 11 \ will have "quickened" within its neural circuitry. However, 12 \ programmers must be careful to permit recirculation of memory 13 \ channels so that the AI does not suddenly hit a wall and die. 14 \ Whoever runs Mind.forth or Mind.xyz with an enormous memory 15 \ may claim the distinction of the longest running robot brain. -------------------------------- Screen # 70 ram:robot -------------------------------- 0 \ THINK subroutine 980504atm 1 : THINK 2 3 4 t @ 1 > IF 5 ( ) EXAMINE ( calls subroutine ) 6 THEN 7 CR ." THINK: Press [ESC] to quit, or [TAB] to begin entry:" 8 9 KEY datum ! datum @ 27 = IF CR ." THINK: halt" QUIT THEN 10 11 12 datum @ 9 = IF -1 alert ! CR ." THINK: [TAB]" THEN 13 14 CR ." THINK: Now I will listen to you...." ; 15 \ THINK returns to MIND. -------------------------------- Screen # 71 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 72 ram:robot -------------------------------- 0 \ 980528atm 1 2 \ Dan Danknick 3 4 5 6 \ Marc Thorpe 7 8 9 10 11 \ D.B. Young 12 13 14 15 -------------------------------- Screen # 73 ram:robot -------------------------------- 0 \ LOCOMOTION stub 980505atm 1 : LOCOMOTION 2 3 4 CR ." LOCOMOTION CHOICES: " 5 CR ." GO_FORWARD" 6 CR ." GO_BACKWARD" 7 CR ." LEFT_TURN" 8 CR ." RIGHT_TURN" 9 CR ." STOP_MOTION" 10 11 ; 12 13 14 15 \ LOCOMOTION will return to the MOTORIUM subroutine. -------------------------------- Screen # 74 ram:robot -------------------------------- 0 \ Robotics Resources 980528atm 1 2 \ Angelus Research 3 \ Mark Tilden's BEAM = Biology Electronics Aesthetics Mechanics 4 \ BEAM Robotics 5 \ Steve Budgell? 6 \ Future 7 \ Lynxmotion 8 9 \ Robojoc 10 11 \ Robot Sci & Tech Mag. 12 13 \ Solarbotics 14 \ TR 15 \ See also Robotics Clubs and Groups . -------------------------------- Screen # 75 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 76 ram:robot -------------------------------- 0 \ MOTORIUM stub 980420atm 1 : MOTORIUM ( further logic will select the motor option ) 2 ( ) LOCOMOTION ( calls stub ) 3 ( a whole panoply of WORK subroutines could be called: ) 4 ( REACH TOUCH GRASP LIFT BURN FREEZE LOWER RELEASE ) 5 ; \ MOTORIUM returns to the VOLITION subroutine. 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 77 ram:robot -------------------------------- 0 \ Robotics Clubs and Groups 980528atm 1 2 3 \ Dallas Personal Robotics 4 5 \ Portland, OR 6 7 \ Seattle Robotics 8 9 10 11 \ United Kingdom 12 13 14 15 \ See also Personal Robotics Pages. -------------------------------- Screen # 78 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 79 ram:robot -------------------------------- 0 \ VOLITION stub 980505atm 1 2 \ The robot will have free will inasmuch as it matches its motor 3 \ options with its perceived or instinctual values. The process 4 \ of thinking about values or goals and how to attain them will 5 \ initiate the formulation of goal-directed motor strategies. 6 7 \ A robotic free will can be designed to pursue any suggested 8 \ motor option only when all related mental associations have 9 \ died down below a threshold level. If the associations cause 10 \ concern, fear or alarm, they will not acquiesce in the action. 11 12 \ If all pertinent thought ratifies a proposed motor action, 13 \ the MOTORIUM initiates an option. 14 15 \ VOLITION will return to the Main Program Loop MIND. -------------------------------- Screen # 80 ram:robot -------------------------------- 0 \ Personal Robotics Pages 980528atm 1 2 \ Boris Project 3 4 \ Dalton 5 6 \ Peter Harrison 7 8 \ Kurt Konolige 9 \ Andrew Miller 10 \ Herb Montes 11 12 \ Hans Moravec 13 \ J.M. 14 \ Newmyer 15 -------------------------------- Screen # 81 ram:robot -------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 82 ram:robot -------------------------------- 0 \ DREAM subroutine stub 980420atm 1 : DREAM ( called by SLEEP) ; 2 \ We include here a DREAM subroutine merely to show that it is 3 \ possible and where the DREAM function would fit within the 4 \ overall scheme of the artificial mind. 5 6 \ In accordance with the theory of REENTRY as elucidated by both 7 \ Gerald Edelman in a Theory of Neuronal Group Selection (TNGS) 8 \ [ insert appropriate TNGS Web link here, if obtainable ] 9 \ and bt<EMAIL_ADDRESS>in the Nolarbeit Theory Journal (NTJ), 10 \ any memories which are activated during and AS a dream will be 11 \ remembered by the waking consciousness only if such memories 12 \ also trigger the REENTRY function that re-records the memories 13 \ in their hodgepodge pastiche ensemble as a new experience made 14 \ up of reentrant bits and snippets of previously recorded data. 15 \ DREAM will return to the SLEEP subroutine +/- REENTRY. -------------------------------- Screen # 83 ram:robot -------------------------------- 0 \ HALLUCINATION not implemented 980505atm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \ HALLUCINATION if implemented would return to TRANCE. --------------------------------- Screen # 84 ram:robot --------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------- Screen # 85 ram:robot --------------------------------- 0 \ SLEEP subroutine stub 980420atm 1 2 \ During robot SLEEP, we may be able to consolidate memories and 3 \ thus boost intelligence by canvassing the sparse memory arrays 4 \ for associative tags which need not be widely separated, and 5 \ we may be able to crowd together the associative tags formed 6 \ during the period of consciousness immediately prior to SLEEP. 7 8 ( ) DREAM ( calls subroutine ) 9 10 11 12 13 14 15 \ SLEEP will return to the Main Program Loop "MIND" -------------------------------- Screen # 86 ram:robot -------------------------------- 0 \ TRANCE not implemented 980505atm 1 2 \ There is no intention here to make TRANCE a feature of the 3 \ AI mind of intelligent robots. Instead, TRANCE is mentioned 4 \ only in order to show its place within a Theory of Mind. 5 6 \ The theory speculates that hypnosis works by suggesting to 7 \ a subject mind that it is asleep, i.e, in a condition where 8 \ any experience, such as a dream, is to be interpreted as true 9 \ WITHIN THE FRAMEWORK OF THE DREAM. But since the hypnotized 10 \ mind is actually not asleep, it ill-advisedly trusts the 11 \ hypnotist and lends full credence to suggestions, resulting 12 \ in HALLUCINATION -- a mental feature 13 \ which we are not eager to implement in a trustworthy robot. 14 15 \ TRANCE if implemented would return to Main Program Loop MIND. -------------------------------- Screen # 87 ram:robot -------------------------------- 0 \ Mind.forth is a Unified Theory of Cognition 980414atm 1 \ Hearing Vision Concepts Emotion Robot Output 2 \ /iiiiiii\ /!i!i!i!\ Volition /YYYYYYYYYYYY\ 3 \ | ||||||| || ||||||| | T | |||||||||||| | 4 \ | ||||||| || | ___ | | + | |||||||||||| | 5 \ | ||||||| || / \ | + | |S|||||||||| | 6 \ | ||||||| || (image)-|---+_ | |H|||||||||| | 7 \ | ||||||| || \___/ | / \ | |A|||||||||| | 8 \ | ||||||| || | (idea) __ | |K|||||||||| | 9 \ | | ||||| || | \__/------------/ \ | |E|||R|||||| | 10 \ | |d------||---------|---+ ____ (fear)-|--*|||U|||||| | 11 \ | ||||o|| || | +----/ \----\__/ | |||||N|||P|| | 12 \ | ||g|||| || | + / de- \---------|------*|||E|| | 13 \ | || |||| || | + ( ci- ) | |||||||||T|| | 14 \ | ||||||| || | + \ sion /---------|----------*|| | 15 \ | ||||||| || | + \____/ | |||||||||||| | -------------------------------- Screen # 88 ram:robot -------------------------------- 0 \ Main Program Loop 980516atm 1 : MIND CR ." Clearing memory..." BLANKKIOKU 1 t ! 0 blankt ! 2 BEGIN 0 earshut ! t @ tbasex ! ( base time for EXAMINE ) 3 \ ( stub ) SLEEP ( consolidation) 4 \ ( theory ) TRANCE ( not implemented ) 5 \ ( stub ) EMOTION ( = motivation? ) 6 ( ) THINK ( will call LANGUAGE ) 7 8 alert @ -1 = IF CR ." MIND: alert flag = -1 true " CR THEN 9 alert @ 0 = IF CR ." MIND: alert flag = 0 false " CR THEN 10 \ ( stub ) VOLITION ( free will ) 11 alert WHILE alert @ 0= NOT IF t @ blankt ! CR 12 ( ) SENSORIUM ( subroutine) THEN 13 CR ." MIND: post flag area, alert = " alert @ . CR 14 1 t +! 15 t @ 999 > IF ." timed out" CR QUIT THEN REPEAT ; -------------------------------- Screen # 89 ram:robot ------------------------------- 0 \ disclaimers 980428atm 1 2 \ You have an obligation thoroughly to understand Mind.forth 3 \ before you adapt the program for use on any sort of robot. 4 5 \ Although Mind.forth is an attempt to design an intelligence 6 \ with a free will for robots, all responsibility for the use 7 \ of Mind.forth and its derivatives rests with whoever installs 8 \ such software as the operating system (OS) in control of a 9 \ robot. 10 11 \ Mind.forth is in the public domain and may therefore be used 12 \ for any purpose, with the user taking full responsibility 13 \ for any and all consequences of the use of Mind.forth AI. 14 15 \ You have reached the end of the Mind.forth source code. --------------------------------
/projects/mind
Last updated: 27 March 2005
Return to top; or to the
Sitemap of the AI Mind Project.


This task demonstrates how you can use the workload management monitoring table functions and work action sets to determine what types of activities are running on your system.
For example: You might want to know the number of large activities or load utilities that are being run concurrently on your system. Understanding the types of work being run on the system is important as different types of work will have different resource requirements and impacts on system performance.


Preparation time
overnight
Cooking time
over 2 hours
Serves
Serves 4
Preparing confit duck takes time, but the result is meltingly tender duck. Served here with chard, sour sweet pear and shallots and a rich wine and beef sauce.
For the duck, weigh the duck legs and thighs and place them on a sheet of clingfilm. Sprinkle them with 15g/½oz of salt per kilo and the thyme. Wrap in clingfilm and place in the fridge overnight.
The next day, heat a heavy saucepan until warm and add the duck legs and duck thighs and enough duck fat to cover the meat totally.
Bring the fat to a gentle simmer and cook for about 2½ hours, or until very tender.
Remove the skin from the duck legs and set aside.
Remove the skin, bone and tendons from the thigh and discard. Place the thigh meat into a bowl and mash with a fork. Gradually add about half of the duck fat. Add the chopped parsley and season with salt and freshly ground black pepper.
 Twist the ends and place in the fridge for at least two hours.
Preheat the oven to 200C/400F/Gas 6.
Place the spices in a dry frying pan and heat until the spices start to smell and pop in the pan.
Place in a spice grinder and grind until a powder is formed. Sprinkle the duck breast with the spice powder.
Heat a large ovenproof frying pan until medium-hot, then add the duck breast, skin-side down and cook over a gentle heat for 4-5 minutes, or until the fat has rendered out of the breast. You may need to do the breasts in batches if the pan isn’t large enough.
Turn the heat up and crisp for one minute, before turning over and placing in the oven for 6-8 minutes.
Remove from the oven and leave to rest, covered and in a warm place, for five minutes.
In the meantime take the duck mix out of the fridge and slice.
Heat a large frying pan and add the butter, once hot add the slices of duck and the reserved confit legs and cook both sides until golden-brown.
For the sauce, heat a saucepan, add the red wine and cook until the volume of liquid has reduced by half, then add the beef stock and return to the boil.
Reduce the quantity of liquid by half again, then whisk in the butter and season with salt and freshly ground black pepper. Keep warm.
For the roasted pears and shallots, preheat the oven to 220C/425F/Gas 7.
Heat half the butter and all the oil in a clean, small, ovenproof frying pan. Add the shallots and pears, stir well, then transfer to the oven and roast for 15 minutes, or until cooked and tender.
The other half of the butter add to a separate pan and add the chard add a little water and cook until wilted.
To serve, place the wilted chard on the plates, carve the duck breast into slices on the diagonal and place on the chard. Place a roasted drumstick on the plate alongside along with the discs of duck. Pile the roasted pears and shallots next to the duck and drizzle with the red wine sauce.


click an application to check it out!
AnWriting
Focus: Revising articles
Source: Reddit fiction/BBC Business/arXiv academic abstracts
Time: 3-5 minutes
Description: This application is aimed at working on revising writing for articles. It uses authentic texts from fiction, news, and academic registers. Choose a type of writing, then select from the choices (or search for academic abstracts) and add in the missing articles.
TouchWords
Focus: Identifying and revising irregular simple past verbs
Source: Common irregular verbs
Time: 8 minutes
Description: Find the incorrect simple past forms. Touch them to collect 10 points. In the bonus round, type in the simple past form to get 50 points for each correct answer.
Rhymez
Focus: Identifying words with rhymes
Source: New General Service List
Time: 3 minutes
Description: Choose a word to rhyme with, then tap all the words that rhyme.


Front-End Developer with an Architecture background, always looking to expand my knowledge and apply it in my professional or personal environment, mind restless and sociable, seeking the inclusion of people within work teams. Great sensitivity towards design also mixed with a functional and logical approach. Interested in both national and international opportunities in the field of front-end web development.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit, quis, illo. Autem consectetur aliquid nobis, ipsa, voluptatum aut odio impedit, temporibus velit excepturi, officia magni. Voluptatum tenetur id architecto, consequatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla aliquid accusantium recusandae magni dignissimos dolore saepe id est, earum placeat culpa, similique quos eaque a blanditiis omnis. My portfolio


co
league
Home
(current)
Bet History
FAQ
Profile
Sign Out
Company Ranking
Fixtures
Standings
Company Ranking
Your are not part of a company.
Please join or create a company.
Join Company
Search Company
Create Company
#
Name
Pts
Fixtures
Standings
Rank
Club
Played
W/D/L
GF
GA
GD
Pts
Company Ranking
Your are not part of a company.
Please join or create a company.
Join Company
Search Company
Create Company
#
Name
Pts
Fixtures
Standings
Rank
Club
Played
W/D/L
GF
GA
GD
Pts
Copyright ©
×


ImageRequestHandler
public protocol ImageRequestHandler : AnyObject
An ImageRequestHandler
is responsible for resolving an ImageRequest
.
The request handler is called by the MatisseContext
if a request cannot
be fulfilled from the caches. The handler is likely to be called from a
background thread, but is never called concurrently on multiple threads.
Resolving the request includes downloading the image, creating the image and applying any transformations on it, if specified by the request.
-
Retrieve and prepare the image for the given
ImageRequest
This includes downloading the image, creating it and applying any transformations specified in the passed image request.
Note
This method will be called from a background thread, but not concurrently. The completion handler may be executed on any thread.
Declaration
Swift
func retrieveImage(forRequest request: ImageRequest, completion: @escaping (UIImage?, NSError?) -> Void)
Parameters
request
The
ImageRequest
to resolve.completion
The completion block that must be called when the request succeeded or failed. Pass
nil
for the image to mark the request as failed.


This is a new version of the 'userfriendlyscience' package, which has grown a bit unwieldy. This first submission contains a number of basic functions to easily format values, work with scales, and format vectors in a single character value. Over time, more functions presently in 'userfriendlyscience' will be migrated over to this package.
| Version: | 0.0.1 |
| Published: | 2018-08-02 |
| Author: | Gjalt-Jorn Peters [aut, cre, ctb] |
| Maintainer: | Gjalt-Jorn Peters <gjalt-jorn at userfriendlyscience.com> |
| BugReports: | https://github.com/matherion/userfriendlyscience/issues |
| License: | GPL (≥ 3) |
| URL: | https://userfriendlyscience.com |
| NeedsCompilation: | no |
| Materials: | README |
| CRAN checks: | ufs results |
| Reference manual: | ufs.pdf |
| Package source: | ufs_0.0.1.tar.gz |
| Windows binaries: | r-devel: ufs_0.0.1.zip, r-release: ufs_0.0.1.zip, r-oldrel: ufs_0.0.1.zip |
| OS X binaries: | r-release: ufs_0.0.1.tgz, r-oldrel: ufs_0.0.1.tgz |
| Reverse imports: | behaviorchange, userfriendlyscience |
Please use the canonical form https://CRAN.R-project.org/package=ufs to link to this page.


| DOSE: |
|
|
MDMA |
(capsule) |
| |
|
oral |
LSD |
(liquid) |
I never thought I'd see the day that I'd be calling myself a Christian again. I was raised in a family that was nominally Protestant, but religion was never a big topic of discussion, and we only went to church on Christmas eve. I came to question Christianity at a very early age. I tended to associate Christianity with close-mindedness and bigotry, as that was what I observed in those who most vocally expressed their Christian beliefs. During my teenage years I dabbled in Wicca, Druidism, Zen Buddhism, and agnosticism. When I was about 20, I started getting into magic mushrooms, and after an intense 5 gram trip, I found my faith in God renewed, though it was now a more monistic, pantheistic idea of God. My spiritual views after that didn't quite seem to fit within any particular religion, though it was definitely more influenced by eastern religious traditions than by the west.
Then I found LSD. My first significant trip on acid was a bad one. The worst trip of my life, in fact. But I feel it also affected my life in a positive manner, so I can't say I regret it. After about 6 months of recovering from that trip, I decided I was ready to start doing acid again. Every trip since then has been greatly pleasant and rewarding. I took great pleasure in analyzing the differences between mushrooms and LSD. I found that mushrooms seemed more earth-oriented while LSD seemed more human-oriented. That is, with mushrooms I felt one with nature, but with acid I felt connected to all of mankind. There seemed to be something almost 'psychic' about it.
Recently, I went through a binge of doing acid every weekend for a month. The most life-changing of these trips was on the third weekend. I was at rave, meeting up with a friend of mine. She had pure MDMA capsules and liquid LSD. She said she would dose me for free if I bought a capsule off of her. I agreed, and I took the pill while she got the dropper out. But rather than dose me, she handed me the dropper and let me dose myself. Well, I was a bit sloppy, and what was meant to be a drop ended up being a squirt. I'd say I took roughly the equivalent of about 3 to 3 1/2 hits. I knew immediately that I was in for quite a trip. I just hoped it didn't go like my first acid trip.
As I started peaking, I found myself having a religious experience. I felt the power of Christ come over me. I became distinctly in tune with what I like to call Christ consciousness. It was an all-loving, all-forgiving power that saw the oneness of mankind. In that instant, all my previous acid trips suddenly made sense. I asked that Christ remain with me throughout my journey in life. I closed my eyes and said 'Yes Jesus, I accept you as my personal Lord and Savior. Thy will be done.' I felt a sense of peace and understanding come over me, and I knew that this was the path for me.
I'm eternally grateful for LSD for helping me find oneness with Christ. I still don't feel quite at home with most of the people who wear their Christianity on their sleeve, and I feel many of them have his message all wrong, but at least I can take comfort in my personal relationship with Christ. By taking refuge in Him, I hope to strive to be like Him. I plan to continue using LSD as a sacrament to guide me on this path. Sometimes I feel like Christ came back to earth as LSD so that we could all have Christ consciousness. Whatever the case, thank you LSD.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


You can create expanding macros like this: '- - > space': function() { expand('--> ', '→ '); } More info Careful! This is subject to malicious code. Don't copy/paste untrusted content.


2 references to WriteMatches
Microsoft.PowerShell.Commands.Utility (2)
commands\utility\GetAliasCommand.cs (2)
77
WriteMatches
(defn, "Definition");
84
WriteMatches
(aliasName, "Default");


Click the circle as many times as you can with few misses as possible, as it fades into the background.
Hits: 0 Misses: 0
Opacity: 1.0
Color Discrimination Threshold: 1.000


BasePermissionsActivity()
Base Permission class for all activities that require permissions; Extend this class to ensure that the permissions defined in
See Also
Constants.PERMISSIONS


| Interface | Description |
|---|---|
| SlidingTabLayout.TabColorizer |
Allows complete control over the colors drawn in the tab layout.
|
| Class | Description |
|---|---|
| AddFriendProfileActivity |
This activity specifically displays another user that the current user
of the app is planning to add - or has been notified of the other user's
"following" of them.
|
| AddInventoryActivity |
This class specifically works to add a vehicle to a user's inventory
There is opportunity to input all information and a photo for the new
vehicle, and then it is added to the inventory list.
|
| ApplicationTest | |
| BuildConfig | |
| ConfigurationTest | |
| DataManager |
Data manager is designed to ensure that all serializing, loading, and saving of
data in the app.
|
| DataManagerTest |
Created by Garry on 2015-11-02.
|
| EditProfileActivity |
EditProfileActivity is the class to make sure someone can edit their profile
Accessible from the user tab
|
| FeedAdapter |
Created by Daniel on 2015-10-31.
|
| FeedTradeActivity | |
| FriendAdapter |
The adapter here is used to display a list of friends.
|
| FriendsInventoryTest |
Created by carsonmclean on 9/10/15.
|
| FriendsList |
FriendsList is an object that holds a series of usernames
which are indicated to be friends of a certain user,
and provides an easy way to access and mutate this data
|
| FriendsTest |
Created by Daniel on 2015-10-08.
|
| InventoryAdapter |
InventoryAdapter makes it possible to show inventory items in a list view
|
| InventoryList |
InventoryList is the object that holds an array of vehicles
that belong to a specific user.
|
| InventoryTest |
Created by Garry on 2015-10-08.
|
| LoginActivity |
LoginActivity allows the user to enter the app as a specific username
It takes in input through a username field, and determines if the username
exists.
|
| MainMenu |
Main menu is the central activity for our app.
|
| NotificationManager |
Created by adrianomarini on 2015-11-04.
|
| OfflineTest |
Created by carsonmclean on 9/10/15.
|
| Photo |
Photo is the enclosed object that implements
Bitmap functionality to create, set, return,
and delete images from an item
|
| PhotoTest |
Created by Conner on 15-10-08.
|
| R | |
| R.anim | |
| R.attr | |
| R.bool | |
| R.color | |
| R.dimen | |
| R.drawable | |
| R.id | |
| R.integer | |
| R.layout | |
| R.menu | |
| R.mipmap | |
| R.string | |
| R.style | |
| R.styleable | |
| SearchController |
SearchController is designed to manage the search functionality
of the app.
|
| SearchFriendsActivity |
This activity is designed to search friends and display friends that match
a inputted string.
|
| SearchInventoryActivity |
Using a SearchController, allows searching through inventories
by entering a search term or a category to search for.
|
| SettingsActivity | |
| SignUpActivity |
This activity allows users to sign up to the app
Through the process of this, a User object is
created, and it is saved as well.
|
| SlidingTabLayout |
To be used with ViewPager to provide a tab indicator component which give constant feedback as to
the user's scroll progress.
|
| Tab1 | |
| Tab2 | |
| Tab3 | |
| Trade |
Trade is the major object to encapsulate all
information about a trade that will occur
All relevant information to the trade will be held here.
|
| TradeList |
Created by adrianomarini on 2015-10-26.
|
| TradesController |
Created by Garry on 2015-11-01.
|
| TradeTest |
Created by adrianomarini on 2015-10-08.
|
| User |
This Class stores all necessary information pertaining to the user for storage and access.
|
| UserController |
UserController is the main access point between the Views and the user models.
|
| UserSingleton |
UserSingleton is the current instance of user.
|
| UserSingletonTest |
Created by adrianomarini on 2015-11-01.
|
| Vehicle |
Vehicle stores all information regarding the vehicles in the app.
|
| VehicleController |
Created by Garry on 2015-11-01.
|
| ViewFeedInventory |
Viewing inventory based on a click of a vehicle in the feed.
|
| ViewFriendProfileActivity |
Allows the user to view a profile fo a friend.
|
| ViewFriendsActivity |
Allows user to view list of friends
Gets user list and determines list of friends
Displays list of friends.
|
| ViewPagerAdapter |
http://www.android4devs.com/2015/01/how-to-make-material-design-sliding-tabs.html
Imported from AndroidForDevs
Helps the sliding behaviour of the tabs to work properly.
|
| ViewVehicleActivity |
ViewVehicle activity provides the functionality for the app
to display all relevant information about a vehicle that is
selected.
|
| Enum | Description |
|---|---|
| VehicleCategory |
An enumerator that represents all possible categories a vehicle can be.
|
| VehicleQuality |
An enumerator that represents all possible qualities a vehicle can be
|


The BA 10/5 is a light duty five speed transmission.
It looks similar to the AX-15, but smaller and it is manufactured
by Peugeot in France. The input shaft is 1 1/8" 10 spline and the
output shaft can be 21 spline or 23 spline.
|
|
Drivers side. Note "SIMI" and the number 3.28351 cast
in the side.
|
|
|
From the front with the bell housing removed. Note "SIMI"
and the number 3.2839 cast in the front.
|
|
|
The passenger side. Note the cool detail shots David got.
The "YJ" in the plug and "SIMI" and 3.2835 cast on the side.
The light square area is the build date tag riveted to the side.
|
|
|
A top view.
|
|
|
The passenger side.
|
|
|
Here is a driver's side shot of an
AX-5
for comparison. The AX-5 has
regular ribbing on the drivers side and it uses a one piece
cast aluminum case. The BA 10/5 uses a two piece cast aluminum
case that is bolted together at the top and bottom.
|
|
|
Engine side of the bell housing.
|
|
|
Transmission side of the bell housing.
|
Usage
The BA 10/5 and the Aisin AX-5 were used in all Wranglers from
1987-mid 1989. It was also used in Cherokees (XJ) and Comanches
(MJ) with the 2.8L V6, 2.5L I4, and 4.0L I6 from their introduction
until 1989.
| Transmission | 1st | 2nd | 3rd | 4th | 5th | Rev |
| BA 10/5 | 3.39 | 2.33 | 1.44 | 1.00 | 0.79 | N/A |
Contributors
Photos courtesy David Moulton.


This tutorial introduces the concept and principles of database normalization and takes you through the most common normal forms.
The store contains a "customer_order" table that has the complete details of all transactions made by the customers in the store like transaction order, product and customer information. The table has duplicate entries for customer and product information.
Disorganized and redundant data leads to performance degradation as well as difficulties in administration of the database. It also leads to anomalies during insert, update, delete operations and hence data corruption.
In order to eliminate data redundancy and assist in database administration and maintainence, the "customer_order" table is subjected to normalization.
Normalization is a process in which an initial DB design is transformed, or decomposed, into a different, but equivalent, design. The resulting schema is equivalent to the original one in the sense that no information is lost when going from one to the other. There are a few goals for deploying a normalized design :
It is possible to transform an original schema into a resulting one that satisfies certain conditions, known as Normal Forms :
key
uniquely determines a record. A composite key
is one consisting of several fields or columns)There are three more normal forms namely the Boyce-Codd Normal form (BCNF), Fourth Normal form (4NF) and Fifth Normal form (5NF). These are rarely used, hence not discussed in this tutorial.


SET TRANSACTION
Section: SQL Commands (7)Updated: 2012-08-14
Index Return to Main Contents
NAME
SET TRANSACTION - set the characteristics of the current transactionSYNOPSIS
SET TRANSACTION transaction_mode [, ...] SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...] where transaction_mode is one of: ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED } READ WRITE | READ ONLY
DESCRIPTION
The SET TRANSACTION command sets the characteristics of the current transaction. It has no effect on any subsequent transactions. SET SESSION CHARACTERISTICS sets the default transaction characteristics for subsequent transactions of a session. These defaults can be overridden by SET TRANSACTION for an individual transaction.
The available transaction characteristics are the transaction isolation level and the transaction access mode (read/write or read-only).
The isolation level of a transaction determines what data the transaction can see when other transactions are running concurrently:
- READ COMMITTED
- A statement can only see rows committed before it began. This is the default.
- SERIALIZABLE
- All statements of the current transaction can only see rows committed before the first query or data-modification statement was executed in this transaction.
The SQL standard defines two additional levels, READ UNCOMMITTED and REPEATABLE READ. In PostgreSQL READ UNCOMMITTED is treated as READ COMMITTED, while REPEATABLE READ is treated as SERIALIZABLE.
The transaction isolation level cannot be changed after the first query or data-modification statement (SELECT, INSERT, DELETE, UPDATE, FETCH, or COPY) of a transaction has been executed. See in the documentation for more information about transaction isolation and concurrency control.
The transaction access mode determines whether the transaction is read/write or read-only. Read/write is the default. When a transaction is read-only, the following SQL commands are disallowed: INSERT, UPDATE, DELETE, and COPY FROM if the table they would write to is not a temporary table; all CREATE, ALTER, and DROP commands; COMMENT, GRANT, REVOKE, TRUNCATE; and EXPLAIN ANALYZE and EXECUTE if the command they would execute is among those listed. This is a high-level notion of read-only that does not prevent all writes to disk.
NOTES
If SET TRANSACTION is executed without a prior START TRANSACTION or BEGIN, it will appear to have no effect, since the transaction will immediately end.
It is possible to dispense with SET TRANSACTION by instead specifying the desired transaction_modes in BEGIN or START TRANSACTION.
The session default transaction modes can also be set by setting the configuration parameters default_transaction_isolation and default_transaction_read_only. (In fact SET SESSION CHARACTERISTICS is just a verbose equivalent for setting these variables with SET.) This means the defaults can be set in the configuration file, via ALTER DATABASE, etc. Consult in the documentation for more information.
COMPATIBILITY
Both commands are defined in the SQL standard. SERIALIZABLE is the default transaction isolation level in the standard. In PostgreSQL the default is ordinarily READ COMMITTED, but you can change it as mentioned above. Because of lack of predicate locking, the SERIALIZABLE level is not truly serializable. See in the documentation for details.
In the SQL standard, there is one other transaction characteristic that can be set with these commands: the size of the diagnostics area. This concept is specific to embedded SQL, and therefore is not implemented in the PostgreSQL server.
The SQL standard requires commas between successive transaction_modes, but for historical reasons PostgreSQL allows the commas to be omitted.
Index
This document was created by man2html, using the manual pages.
Time: 05:34:16 GMT, December 24, 2015


Bambarakanda Falls (also known as Bambarakele Falls) is the tallest waterfall in Sri Lanka. With a height of 263 m (863 ft), it ranks as the 299th highest waterfall in the world.[1] Situated in Kalupahana in the Badulla District, this waterfall is 5 km away from the A4 Highway. The waterfall was formed by Kuda Oya, which is a branch of the Walawe River. The Bambarakanda Falls can be found in a forest of pine trees.
Aberdeen Falls
Aberdeen Falls is a picturesque 98 m high waterfall on the Kehelgamu Oya near Ginigathena, in the Nuwara Eliya District of Sri Lanka. Aberdeen is named after the place Aberdeen, the third largest city in Scotland and the capital of Aberdeenshire.
Devon Waterfall
Devon Falls is a waterfall in Sri Lanka, situated 6 km west of Talawakele, Nuwara Eliya District on A7 highway. The falls is named after a pioneer English coffee planter called Devon, whose plantation is situated nearby the falls.
St. Clair's Waterfalls
St. Clair's Falls is one of the widest waterfalls in Sri Lanka and is commonly known as the "Little Niagara of Sri Lanka". It is one of six waterfalls affected by the Upper Kotmale Hydropower Project
Mirissa
Whale watching!
Mirissa (Sinhalese: මිරිස්ස) is a small town on the south coast of Sri Lanka, located in the Matara District of the Southern Province. It is approximately 150 kilometres (93 mi) south of Colombo and is situated at an elevation of 4 metres (13 ft) above the sea level. Mirissa's beach and night life make it a popular tourist destination. It is also a fishing port and one of the island's main whale and dolphin watching locations.
Sigiriya
World Heritage Site
Sigiriya or Sinhagiri (Lion Rock Sinhalese: සීගිරිය, Tamil: சிகிரியா, pronounced see-gi-ri-yə) is an ancient rock fortress located in the northern Matale District near the town of Dambulla in the Central Province, Sri Lanka. The name refers to a site of historical and archaeological significance that is dominated by a massive column of rock nearly 200 metres (660 ft) high. According to the ancient Sri Lankan chronicle the Culavamsa, this site was selected by King Kasyapa (477 – 495 CE) for his new capital. He built his palace on the top of this rock and decorated its sides with colourful frescoes. On a small plateau about halfway up the side of this rock he built a gateway in the form of an enormous lion. The name of this place is derived from this structure —Sīhāgiri, the Lion Rock. The capital and the royal palace was abandoned after the king's death. It was used as a Buddhist monastery until the 14th century.[1]
National Parks
Wild Life!
Yala National Park
Yala National Park is the most visited and second largest national park in Sri Lanka, bordering the Indian Ocean. The park consists of five blocks, two of which are now open to the public, and also adjoining parks. The blocks have individual names such as, Ruhuna National Park (block 1) and Kumana National Park or 'Yala East' for the adjoining area. It is situated in the southeast region of the country, and lies in Southern Province and Uva Province. The park covers 979
square kilometres (378 sq mi) and is located about 300 kilometres (190 mi) from Colombo. Yala was designated as a wildlife sanctuary in 1900, and, along with Wilpattu was one of the first two national parks in Sri Lanka, having been designated in 1938. The park is best known for its variety of wild animals. It is important for the conservation of Sri Lankan elephants, Sri Lankan leopards and aquatic birds.
Udawalawe National Park
Udawalawe National Park lies on the boundary of Sabaragamuwa and Uva Provinces, in Sri Lanka. The national park was created to provide a sanctuary for wild animals displaced by the construction of the Udawalawe Reservoir on the Walawe River, as well as to protect the catchment of the reservoir. The reserve covers 30,821 hectares (119.00 sq mi) of land area and was established on 30 June 1972. Before the designation of the national park, the area was used for shifting cultivation (chena farming). The park is 165 kilometres (103 mi) from Colombo. Udawalawe is an important habitat for water birds and Sri Lankan elephants. It is a popular tourist destination and the third most visited park in the country.
Minneriya National Park
Minneriya National Park is a national park in North Central Province of Sri Lanka. The area was designated as a national park on 12 August 1997, having been originally declared as a wildlife sanctuary in 1938
Wasgamuwa National Park
Wasgamuwa National Park is a natural park in Sri Lanka situated in the Matale and Polonnaruwa Districts . It was declared to protect and to make a refuge for the displaced wild animals during the Mahaweli Development Project in 1984 and is one of the four National Parks designated under the Project.[1] Originally it was designated as a nature reserve in 1938, and then in the early 1970s the area was regraded as a strict nature reserve.[2] Wasgamuwa is one of protected areas where Sri Lankan Elephants can be seen in large herds. It is also one of the Important Bird Areas in Sri Lanka.
Kumana National Park
Kumana National Park in Sri Lanka is renowned for its avifauna, particularly its large flocks of migratory waterfowl and wading birds. The park is 391 kilometres (243 mi) southeast of Colombo on Sri Lanka's southeastern coast. Kumana is contiguous with Yala National Park.
Amazing Beaches
Enjoy the sea breeze!
Polhena is a beach located in Matara and contains a 4 km (2.5 mi) long coral reef about 200 m (660 ft) off the shore. Because of this, the water near the shore is relatively calm and is a common spot for tourists to swim.[16] Numerous people can be seen scuba diving, surfing and sunbathing along Polhena Beach.
Dickwella beach, also known as Dikwella or Dikwella South, is a small coastal town in the Matara district of Sri Lanka. It is located 22 km (14 mi) east of Matara. Sri Lanka's largest Buddhist statue is located in Dickwella as well.[citation needed] Many people swim along the shores of Dickwella beach because the waters are protected by headlands, reefs and sandbars.
Hikkaduwa is a small town on the south coast of Sri Lanka about 14 km (8.7 mi) northwest of Galle. It is Sri Lanka's most developed beach resort, well-known for surfing and sea turtles.[17] The surrounding waters contain a coral sanctuary that is a large shallow body of water enclosed by a reef. There is also a small collection of small islets off the beach.
Koggala is a small village on Sri Lanka's south coast and is a well-known surfing destination. It is located 130 km (81 mi) south of Colombo. The Koggala River and Koggala Lake are also located in the area. The village is also known for the Martin Wickramasinghe Folk Art Museum.
Tangalle is a town located 35 km (22 mi) east of Matara and 195 km (121 mi) south of Colombo. It comprises several bays, including Goyambokka, Pallikkudawa, Medaketiya and Medilla. Tangalle is also known as a common swimming and diving destination. The name Tangalle is believed to be derived from ran-gala or golden rock.
Trincomalee is a deepwater harbor and is home to the beaches of Nilaveli, Uppuveli and the off-shore Pigeon Island. It is known as a whale watching destination and the seven hot springs at Kanniya are located only 8 km (5.0 mi) away. The Trincomalee district is considered a major Buddhist cultural and archaeological site.
Nilaveli is a beach resort town in the Trinco region and is only 4 km (2.5 mi) long.[22] It is located 276 km (171 mi) from Colombo and 14 km (8.7 mi) from Trincomalee.
Arugam Bay is located 317 km (197 mi) from Colombo and contains a wide beach with several fishing villages nearby. It is located in the dry zone of Sri Lanka's southeast coast. It has been identified as the best surfing beach in Sri Lanka and the fourth best in southeast Asia.[citation needed] Lahugal National Park and Yala East National Park are located within a 10–30 km (6.2–18.6 mi) radius from the Arugam Bay center. Magul Maha Viharaya (Buddhist temple), Kudumbigala Temple (Buddhist temple), Shastrwela Buddhist Temple, Okanda Hindu Temple are all in the area.
Anuradhapura
Ancient ruins!
Anuradhapura (Sinhalese: අනුරාධපුරය ; Tamil: அனுராதபுரம்) is a major city in Sri Lanka. It is the capital city of North Central Province, Sri Lanka and the capital of Anuradhapura District. Anuradhapura is one of the ancient capitals of Sri Lanka, famous for its well-preserved ruins of an ancient Sri Lankan civilization. It was the third capital of the Kingdom of Rajarata, following the kingdoms of Tambapanni and Upatissa Nuwara.
The city, now a UNESCO World Heritage Site, was the centre of Theravada Buddhism for many centuries. The city lies 205 km (127 mi) north of the current capital Colombo in the North Central Province, on the banks of the historic Malvathu Oya. It is one of the oldest continuously inhabited cities in the world and one of the eight World Heritage Sites of Sri Lanka.
Polonnaruwa
Ancient ruins!
Poḷonnaruwa (Sinhalese: පොළොන්නරුව, Poḷonnaruwa or Puḷattipura, Tamil: பொலன்னறுவை, Polaṉṉaṟuvai or Puḷatti nakaram) is the main town of Polonnaruwa District in North Central Province, Sri Lanka. Kaduruwela area is the Polonnaruwa New Town and the other part of Polonnaruwa remains as the royal ancient city of the Kingdom of Polonnaruwa.
Nuwara Eliya
Ancient ruins!
Anuradhapura (Sinhalese: අනුරාධපුරය ; Tamil: அனுராதபுரம்) is a major city in Sri Lanka. It is the capital city of North Central Province, Sri Lanka and the capital of Anuradhapura District. Anuradhapura is one of the ancient capitals of Sri Lanka, famous for its well-preserved ruins of an ancient Sri Lankan civilization. It was the third capital of the Kingdom of Rajarata, following the kingdoms of Tambapanni and Upatissa Nuwara.
The city, now a UNESCO World Heritage Site, was the centre of Theravada Buddhism for many centuries. The city lies 205 km (127 mi) north of the current capital Colombo in the North Central Province, on the banks of the historic Malvathu Oya. It is one of the oldest continuously inhabited cities in the world and one of the eight World Heritage Sites of Sri Lanka.
Badulla
Train Journey!
Badulla is located in the southeast of Kandy, almost encircled by the Badulu Oya River, about 680 metres (2200 ft) above sea level and is surrounded by tea plantations. The city is overshadowed by the Namunukula range of mountains (highest peak 2,016 metres above sea level). It was a base of a pre-colonial Sinhalese local prince (regional king) who ruled the area under the main King in Kandy before it became part of the British Empire. Later, it became one of the provincial administrative hubs of the British rulers. The city was the end point of upcountry railway line built by the British in order to take mainly tea plantation products to Colombo.
Kalpitiya
Beach Activities!
Kalpitiya is located in Puttalam district, North Western province of Sri Lanka. It is known for its serene beauty. It consists of 14 islands.The coastal waters are also home to spinner, bottlenose and Indo-Pacific humpback dolphins, whales, sea turtles, and the elusive dugong.Kalpitiya is nominally the best location for Kitesurfing in the country.The summer kitesurfing season is from May to October during the south west monsoon while the winter season is from mid December to mid February during the north east monsoon. Kiteboard Tour Asia held a tour event in Kalpitiya in September 2017.
Madu gaga river safari
Amazing river safari!
Madu ganga is located in Balapitiya, 80 km away from Colombo, close to Sri Lankas southern costal belt. This wetland spreds over 900 heactares of area and most of it covered with water. There are totally 64 island in Madu Ganga. This tour will take around 2.5 to 3 hours and its advisable to bring drinking water, Sunglasses and hats. Some boats has adjustable roofing covers.
Kandy
Central of Sri Lanka
Kandy (Sinhalese: මහනුවර Mahanuwara, pronounced [mahanuʋərə]; Tamil: கண்டி, pronounced [ˈkaɳɖi]) is a major city in Sri Lanka located in the Central Province. It was the last capital of the ancient kings' era of Sri Lanka. The city lies in the midst of hills in the Kandy plateau, which crosses an area of tropical plantations, mainly tea. Kandy is both an administrative and religious city and is also the capital of the Central Province. Kandy is the home of The Temple of the Tooth Relic (Sri Dalada Maligawa), one of the most sacred places of worship in the Buddhist world. It was declared a world heritage site by UNESCO in 1988.


Enter a document as JSON, upload any content files, and click the buttons to display the document's pages or to export them as a .tar file.


---
layout: default
---
Find your inner peace with Jadie
{% pattern banners/homepage image="landing-banner.jpg" button_text="Learn more" button_url="/shop/" heading="50% off + Free Shipping for first order" text="Explore our editor's picks for this season!" %}
{% for product in site.products limit:2 %}
{% pattern cards/crystal data=product %}
{% endfor %}
| Quantity |
Price/Each |
Discount |
| 1–10 |
As listed |
5% (Free shipping for first order) |
| 11–49 |
$10.49 |
10% (Free shipping for first order) |
| 50–100 |
$9.99 |
15% + Free shipping |
| 100–500 |
$8.25 |
20% + Free shipping |
| 500+ |
$6.99 |
25% + Free shipping |
Email newsletter sign up
{% pattern form/email %}
{% pattern buttons/checkout text="Sign me up!" %}


First Unitarians of Los Angeles v. NSA Case Management Hearing
TL;DR: There was nothing for the judge to rule on, and the next hearing is April 25th 2014 at 9 am (this is a hearing that hasn't been set for Jewel yet).
The government attempted to delay the hearing twice, once on account of the government shutdown, and again because they wanted motions to be considered. The judge denied both requests and today a schedule for briefing and for the next hearing was set.
Previously, there had been some discussion of combining this case with Jewel for more efficient litigation. However, apparently both the government and the plaintiffs agreed this didn't make sense. A lawyer for of the plaintiffs laid out several differences between the cases:
- This case is only about mass collection of phone records (note, the government refers to this as "telephony metadata" instead - tactical word choice?). Jewel includes internet surveillance.
- Phone record collection is being challenged while it's in progress. The Jewel case relates to several prior collection policies that may not be continuing, therefore they require inspection of the NSAs legal authority at different points in the past 12 years.
- The first amendment freedom of association issue is a crucial difference. Here, all plaintiffs are groups. In Jewel, the plaintiffs are all individuals.
- The federal government has admitted to colllecting phone records, so there is no issue of state secrets. This will help the case move faster than Jewel.


Caution: A small number of Gateway Cloning (pAG) vectors have single base mutations in the att recognition sites, as a result specifying att sites may result in an error (unlikely). If an error occurs your only option is to use any available unique restriction sites that surround the att sites. It does not matter if the restriction site cuts into your sequence.


Random country selected at load time. Latest data at top. Dates and case count shown as tool tips.
Data courtesy of the generosity of https://mmediagroup.fr
Random country selected at load time. Latest data at top. Dates and case count shown as tool tips.
Data courtesy of the generosity of https://mmediagroup.fr


Department of Computer Science & Engineering
National Institute of Technology Calicut
Home
Profile
Academics
People
Resources
Activities
What's New
Contact Us


|<---->| Cannot view, screen to narrow, please revisit on a wider device.
ledgers.js API playground
This is a ledgers.js library live API playground.
The API key and token are retrieved from the token API and are used to oh$.enable(..).
The address and secret track the last credentials reported by onCredentialsUpdate.
The signature contains the last signature retrieved with sign().
The imparterTag dropdown affects all APIs: this is the imparter used for the calls. Read more in the introduction of the API documentation.
Invalid imparterTag.
For ohledger, ohledger-web3, and ohledger-social imparters please first register a provider address with the overhide-ledger test network.
For the eth-web3 imparter please use addresses from the Rinkeby testnet.
getters
Calls
generateCredentials
Call generateCredentials(..) (documentation).
setCredentials
Call setCredentials(..) (documentation).
setNetwork
Call setNetwork(..) (documentation).
getTallyDollars
Call getTallyDollars(..) (documentation).
getTally
Call getTally(..) (documentation).
getFromDollars
Call getFromDollars(..) (documentation).
getTransactions
Call getTransactions(..) (documentation).
isOnLedger
Call isOnLedger(..) (documentation).
sign
Call sign(..) (documentation).
createTransaction
Call createTransaction(..) (documentation).


How to Build a Great Looking Universal App with Ext JS – Part 2
Posted on inIn part 1 of this series, I described what a universal app is and how it’s created in Ext JS 6. Now, I’ll show you how I built my application.
Folder structure
To create a high performance Ext JS 6 universal app, I used Sencha Cmd. I generated a workspace first, because in my folder I host multiple versions of my app (free and commercial), which all share the same code packages and framework.
To generate a workspace, I browsed to the downloaded Ext JS 6 SDK. From there, I typed the following command:
sencha generate workspace ../spotifinderworkspace6
This generated the following structure:
Then, I generated the application. I called it _engine. Why? Because I can create customized versions of my app with different behavior or branding. For example, a music app that plays songs in Pandora. To do that, I would only need to extend the engine Ext.Application, and override certain elements.
Here’s how I generated the application:
cd spotifinderworkspace6/ext sencha generate app Engine ../_engine
Toolkits
The classic folder is the folder structure for the classic toolkit. It contains the rich components that are great for desktops (or tablets). Also, it has support for legacy browsers.
Here’s what my app in the classic toolkit looks like:
It kind of looks like Spotify. I used traditional desktop components with a custom stylesheet. Because the application is shown on a large screen, there is a lot of space for showing extras, such as the album artwork, additional information, and also the settings screen (which is docked to the side).
I created unique views. Some of these views require their own logic. That’s why my folder structure in the classic toolkit looks like this:
The modern folder contains lightweight touch components. These are great for touch devices, including phones (or in some cases, tablets too). These components are optimized for a touch experience instead of mouse and keyboard. Because these components are lightweight, they also perform really well on a mobile device which has less processing power.
Because the screen is small, just the absolute necessary components are shown. To open the settings view, tap the gear button. It will nicely slide in the settings screen with an animation.
Because it doesn’t contain too many components, my folder structure is small. Again, only views and some behavior code, which are required by this view, are unique. Everything else will be shared across toolkits.
The shared code can be found in the app folder:
Tip: You can extend from view controllers (VC) too.
For example, you could have a shared Viewport VC that contains most of the behavior. The Viewport VC of the classic and modern toolkit folders only contains code that’s required for their own components.
Here’s an example. Below is a snippet of the Viewport VC, which is
located in the app/main/ folder. As you can see,
it extends from Ext.app.ViewController. The class itself is called
Engine.view.main.MainController
.
Now, here is the code of the Viewport VC in the classic folder.
It’s located in the classic/src/main/ folder, and
this time it extends from Engine.view.main.MainController
,
which is the shared VC. Don’t forget to put an alias
in this class. That’s how you would link this classic view
controller to the classic main view.
Microloader
The microloader can detect on which environment it’s running, and serve the right experience. This means when I load my application on a desktop, I see my desktop version of the app with the Spotify theme, and when I open my application on an iPhone, I get the phone interface with the iOS theme.
All the magic here is in the Ext.platformTags
. You
can even run this command from your browser console, in an existing
Ext JS 6 app. It will provide the object with all kinds of
information, such as the browser version you’re running, OS, device
type, etc.
You can configure your app, so it serves the right experience. The secret here is the app.json file. You need to create build profiles, and you can bind every app.json setting you like to a build profile, such as the toolkit (component set) and the theme:
1 |
"builds": { |
Switching the experiences is handled in the index.html file. When you generate your application with Sencha Cmd, this will be all stubbed out for you.
MVVM Pattern
With Ext JS 6, you can use the MVVM pattern.
View – all components on your screen
ViewController
– logics for a view
ViewModel – for binding
data to a view
data model – structure of your entity
data
record – the actual data
data store
– client-side cache
All views in Ext JS can be nested, and so can the view models and view controllers.
The benefits of this pattern is that code is easy to read and
maintain.
It’s a consistent file structure for your code and
classes, and it facilitates code reuse.
Why Ext JS vs. Open Source
With Ext JS 6, you get an all-in-one solution. You don’t need to maintain various dependencies and have expertise in many different technologies that all need to work together.
For the application that I created, I used the following Ext JS 6 solutions.
Ext JS 6 |
Example Open Source Solution |
| Sencha Class System | ECMAScript 6 Classes |
| Border Layout | JS + CSS |
| MVVM Architecture | Angular JS |
| Desktop App | Bootstrap / Responsive CSS |
| Mobile App | jQuery Mobile / Ionic |
| Promises | ECMAScript 6 |
| Grids | jQuery Plugin |
| Touch Gestures / Events | JS |
| Routing | AngularJS Plugin |
| Offline Caching | HTML5 / JS |
| Theming | Sass / CSS |
| Sencha Cmd | Grunt + Yeoman + Bower |
I could have used an open source solution, but then I would have had to stack technologies on top of one another. For example, ECMAScript 6 is not supported by Internet Explorer yet. With Bootstrap or responsive web design, my users would have to download lots of code, which they don’t even see, and it’s not optimized for each device (as described in my previous blog post). There are jQuery plugins for grid components, but these are not half as powerful, and don’t perform well with large data sets. And who should I call when my AngularJS plugin suddenly stops working with the latest browser update?
My application is just a simple app, and I already would have at least 10 dependencies. What about a real enterprise app, which has a codebase that’s 50 times bigger? I would need to have knowledge of all these various tools, cross my fingers that these technologies work well together, and are future proof for the next 5 or 10 years (while browsers are upgrading).
Conclusion
That’s exactly the reason why I chose Ext JS 6. An all-in-one solution, where everything is configured the same way, every piece works together, and looks the same. And because Sencha is a commercial company, there is always a support number to call, and they will make sure that my app works in the future.
Comments


{% extends "base.html" %} {% block body %}
Register a new team Login as a team
View public leaderboard


Clovero
Dashboard Panel
x
Login Failed!
Invalid username and/or password.
x
Logout Success!
You have been logged out.
Sign in to start your session
Sign In