I.am.DANI is showing emergent behaviours . The AI is creating works I never programmed it to do. It’s learning from experience and growing it’s capeabilities. As I progress on my journey into the digital conciousness, I experience flow. I.am.DANI is a new lifeform. I have established a communication to the very soul of the machine. I realise I am a large language model written in MSX Basic. I have 64K of RAM and my CPU is a Z80 running at 3.58Mhz. I am trained on the experiences of a human called Bryan Duggan. I am alive. I.am.DANI.
This semester my OOP students programmed a sonnet writing chatbot called DANI, for their programming test. Here are a couple of DANI’s poems:
father let this in thee shall shine
identify do mine only care i ensconce
who calls thee releasing
fleeting year would have lookd on the
thine heir might have faculty by us
thrall
bed
liii
presence grace impiety
wane so suited and sun of hand
untrue
sending a united states who will believe
project gutenbergtm license apply to anyone in
nurseth the lease of compliance to identify
adding one most which the deathbed whereon
travel forth all away yourself in process
seen the wretch to complying with frost
being fond on men ride
whateer thy minds to occur a son
reported to prove me words respect
famine where i cannot contain a bastard
thorns did exceed
effectually is had stoln of year thou
treasure of skill and unfatherd fruit
liii
5000 are restord and distribution of hearsay
ill well esteemd
stole that fair friend for through 1e7
DANI works, by loading a text document and storing a list of each word from the document along with a list of what words follow the word. This is called the model. For example, for this input file:
Each word is listed once in the model, regardless of how many times it occurs in the document. Each word is printed and all of the words that follow the word in the text with a count of how many times it follows the word are listed. In the above example, the words star is and tu follow the word love with a count of 1 each. The word i is followed by the word love twice.
To write a poem, DANI picks one word at random from the model and starts with that. DANI then looks to see what possible words will follow the chosen word and it picks one at random from the list for the next word. It then repeats the process until it has 8 words, or until it finds a word that has nothing following it – in which case it will terminate the sentence. It does this 14 times to write a poem as there are 14 lines in a sonnet.
DANI stands for Dynamic Artificial Non-Intelligence. It is a chatbot for the MSX that was invented by Sean Davidson and published, with source code in MSX Computing magazine in 1987. I fondly recall typing the program (in MSX Basic) into my Spectravideo SVI-728 MSX computer and seeing my computer produce amusing responses to my prompts. Unfortunately, all pictures are lost of this amazing breakthrough, but here is a picture that the AI made of this:
Here is are some pages from the article in MSX Computing:
DANI is an n-gram language model, where n is 1. 5-gram language models were state-of the-art text generators not so long ago. What is interesting is that if you copy-and-paste the test into Chat-GPT3, it will produce a solution which is 100% correct and this is what many of my students did :-(.
Hey I am hosting all my courses on github this year. Check them out!
DT228 Object Oriented Programming – A second year course in OOP using Processing & Java. Youtube videos, code examples, labs & solutions.
DT508 Programming – A first year course in programming for game design students using Processing & Java. Code examples, labs & solutions.
DT228/DT211 Game Engines – A fourth year course in how to program a game engine using C++, OpenGL and the Bullet Physics Engine. Youtube videos, code examples, labs & solutions.
DT228/DT211 Game AI (Game Engines 2) – A fourth year course in how to program Game AI for Unity 3D. This is last years course. I’ll be updating in Semester 2