Thursday, September 27, 2007
Bring the pain
The main accomplishment of the last few days has been automated tests of all the high level functionality of genetify -- varying all types of genes, recording all the results, reading all the results and getting the correct variant probabilities. As it is before writing any test code, it seemed that my baby couldn't get any better and I was reluctant to start. However, experience has taught me that the moment you prove to yourself that something is working is absolutely the best time to start writing tests. And of course in writing my tests I found some hidden deficiencies. I fixed those and now I'm twice as sure that my baby is perfect!
Monday, September 24, 2007
Multi-domain, multi-page
I added the necessary key fields to the database. Nothing holding back a deployment now. Stay tuned.
Sunday, September 23, 2007
Proximate and ultimate goals
Today I wrote some code to store the last viewed genome in a cookie and read it out when recording a goal. This means goals can be on whole different pages from genetified code!
The problem with recording goals only on the same page as the thing being tested is that the thing being tested may have its most interesting effect several pages away. An ad may be on a page selling something, but the actual commitment to buy -- the click-of-no-return -- may be past a catalog page, past a sign-up page, in a confirmation page.
Building this feature has raised some interesting questions: Should genetified pages be evaluated on their own exclusive goals, or should pages be evaluated on site-wide goals? Or both? How complicated should the summation of goals be?
Why only store the last genome? I did it this way out of concern for the 4k limit. But imagine a record of all viewed genomes following the user around, getting some kind of proportional attribution every time a goal is reached. That would be some crazy learning machine!
The problem with recording goals only on the same page as the thing being tested is that the thing being tested may have its most interesting effect several pages away. An ad may be on a page selling something, but the actual commitment to buy -- the click-of-no-return -- may be past a catalog page, past a sign-up page, in a confirmation page.
Building this feature has raised some interesting questions: Should genetified pages be evaluated on their own exclusive goals, or should pages be evaluated on site-wide goals? Or both? How complicated should the summation of goals be?
Why only store the last genome? I did it this way out of concern for the 4k limit. But imagine a record of all viewed genomes following the user around, getting some kind of proportional attribution every time a goal is reached. That would be some crazy learning machine!
Saturday, September 22, 2007
The living page
Every foot step you take on the ground leaves a footprint. Enough feet travel the same way and soon there's a path.
A web page should be the same way. Every click represents someone wanting to do something. A page should make it easier to follow the well-traveled path -- without some developer needing to lay down some metaphorical pavement.
A web page should be the same way. Every click represents someone wanting to do something. A page should make it easier to follow the well-traveled path -- without some developer needing to lay down some metaphorical pavement.
The loop has been closed
I rushed ahead tonight to test genetify's first adaptive response. It works! And all too well--it got stuck on the very first logged genome because that genome instantly achieved a success rate of 100%.
Friday, September 21, 2007
Closing the loop
Between fine-tuning genetify.js, I have been working on closing the whole feedback loop. Combinations of gene-variants receive a score; individual gene-variants are evaluated across combinations; losing gene-variants are killed off; winning gene-variants are left to survive. Yesterday I got combinations of gene-variants -- what I've decided to call "genomes" -- recording their scores into Google Analytics and into my own database. Next, I'll be working on the evaluation step.
This is where the project is starting to get very rewarding. You can see the little genomes being born into the page, and you can rate their little lives with the arbitrary click of a mouse. Someone out there should find some fun with this!
This is where the project is starting to get very rewarding. You can see the little genomes being born into the page, and you can rate their little lives with the arbitrary click of a mouse. Someone out there should find some fun with this!
Tuesday, September 18, 2007
Here it is
http://gregdingle.com/genetify.html
http://gregdingle.com/genetify.txt
http://gregdingle.com/genetify.js
Genetic variation in your browser.
http://gregdingle.com/genetify.txt
http://gregdingle.com/genetify.js
Genetic variation in your browser.
Upgrades
Handles circular references.
Faster getElementsByClassName that uses XPath when available.
Unified gene naming scheme across CSS, javascript and HTML.
Last 10% always takes 90% of the time :)
Faster getElementsByClassName that uses XPath when available.
Unified gene naming scheme across CSS, javascript and HTML.
Last 10% always takes 90% of the time :)
Monday, September 17, 2007
IE blues
Hit a snag named Internet Explorer. Seems that although IE does register global variables in the window object as it should, it does not include them in the window object when iterating over it.
Who knew? (Seriously, I searched something like ten pages deep in Google.)
I worked around the limitation by grepping the contents of all script tags on the page for variable names. IE luckily does have a document.scripts property that makes that easy.
However, we're still left with a heartbreaking compromise on the original idea: Switching variable names in all loaded javascript except in IE where only variables or their parents that are referenced in the document are switched. I'm hoping that in practice this aberration won't inconvenience developers. Of all people, they should know that IE is usually the exception to the rule!
Who knew? (Seriously, I searched something like ten pages deep in Google.)
I worked around the limitation by grepping the contents of all script tags on the page for variable names. IE luckily does have a document.scripts property that makes that easy.
However, we're still left with a heartbreaking compromise on the original idea: Switching variable names in all loaded javascript except in IE where only variables or their parents that are referenced in the document are switched. I'm hoping that in practice this aberration won't inconvenience developers. Of all people, they should know that IE is usually the exception to the rule!
Sunday, September 16, 2007
Too excited
The first working prototype of the switcher is done. It lets you declare variants anywhere in HTML, CSS or Javascript that will then be switched randomly onload. Explanation to come.
Subscribe to:
Posts (Atom)