Today I noticed three helicopters flying circles above my neighborhood in a tight formation. They were so close as they were doing this that I was certain they would run into each other. As I walked, I continued to observe them and they merely continued to fly in alternating narrow and wide circles above the houses.
I began to think about the code I write for myself. The code which I am not paid for, nor do I need to write. This blog, for instance, using Google App Engine or my next little project using Heroku.
I could have used my account over at Blogger, but the nature of blog software intrigued me and the best way I have found to study this nature is to draw the nature for myself.
This reminded me of that which I have heard about Leonardo, that his most detailed work was in his sketches.
I imagine that Da Vinci might have been drawing hundreds of similar hands before he felt that he understood the nature of the hands, and from that point on any hands he drew would no longer be visual replicas of hands, but mental copies of the nature of hands which he had internalized.
Several weeks ago, I heard about
Code Kata. Kata is taken from Karate and means an exercise which is frequently repeated, and for each repetition some improvement is made. Although I first heard about this idea in context of a disparaging comment along the lines of "implementing bubblesort for the nth time where n is some large number," it still seems like the right idea along the same general notions as Software Craftsmanship.
Recently, on Hacker News, prakash posted a link to a study about the mundanity of excellence. Which, contrary to CodeKata, finds that excellence does not imply a quantitative difference, but a qualitative difference.
The study takes data from athletes at different levels of competitive swimming, but the study is about excellence and seeks the common factors which should apply universally. The results show that excellent athletes consistently train with a high standard of quality. Olympic athletes train rigorously within legal parameters and develop an entirely different form compared to local competitive swimmers. Consistently excellent athletes need not swim more than the others (fitness is a prerequisite, of course), they train themselves to be better within that form.
All of this eventually points upwards, to the helicopter pilots flying inches from each other in alternating tight and wide circles overhead, and back down at the code I write for myself.
Written by hyralt on 2008-05-15 01:39:38.985733
My plan for this site is to remove the boring static templates and replace them with datastore entries. This will allow me to write convert the simple editor I use for blog entries into a site editor which will be able to change the layout, style and static content as well as the dynamic content like blog entries.
I will also be working on a brassy steampunk theme. ;-)
Written by hyralt on 2008-05-13 01:31:41.132019
Google App Engine part 2
Not having access to direct sockets means I can't use the unofficial delicious api, or more specifically its necessary component beautifulsoup. Though this means I can't easily plug and play to retrieve my del.icio.us links, google gives access to url fetchers which successfully retrieve my rss feed on the test server, but not on the live server. On the live server, it retrieves only a yahoo error page.
Edit: I rewrote the links to use urlfetch to retrieve the full html of my del.icio.us page, then parse through it for the <ol> tag, and print the contents. I used BeautifulSoup for the parsing, and it works splendidly.
Edit2: I rewrote it again to pull the html from http://del.icio.us/html/hyralt and print it directly, no parsing necessary.
Written by hyralt on 2008-05-07 20:58:38.672171
Google App Engine part 1
Although the different parts of the app engine seem somewhat disconnected (do I need the docs for Django templates, the python runtime, the application config, the datastore or urlfetch?), each part of the app engine feels like best-in-class framework.
blog.comment_set - this command pulls all comments from the datastore which refer to the blog entry at hand. Of course it's syntactic sugar for a GQL query, but the fact of the matter is that the framework realizes that as soon as data starts pointing at each other, there will be backwards lookups.
Written by hyralt on 2008-05-06 16:49:44.573692