burn the rope
The first game I’ve ever beaten. Ever.
http://www.mazapan.se/games/BurnTheRope.php
(you have to burn the rope)
The first game I’ve ever beaten. Ever.
http://www.mazapan.se/games/BurnTheRope.php
(you have to burn the rope)
Yesterday I received my xtracycle, and today I finished the assembly. Sort of. I’m still lacking proper shift cable and housing so I’m rocking a single speed xtracycle right now, but I took it on its maiden voyage in the middle of our giant snow. First off, the xtracycle handles beautifully in the snow. The bike is so long you can actually get the thing sideways and control it quite nicely. More importantly, though, this beast can haul anything. In the photo above, I’m hauling punch ingredients for our work Christmas party. I can’t wait to haul crap. If you need a large object transported by bicycle, just let me know.
And now gratuitous roller shots:
I’d just like to point out that when I went to bed it was 51 degrees, and when I woke up, it was 5 degrees. So, whoever is in charge of these things, please stop with the order of magnitude temperature changes in 8 hours.
That is all.
After Chris Grubbs and I finished up our work on phlombay.com for a class project about a year ago, we released what little code there was under the Affero Public License. My reasons were strictly idealogical, and I assume Chris wasn’t going to be selling proprietary versions of the site, so he went along just fine. However, since that time I’ve really wondered about the utility of license (as an aside, I’ve started work on phlombay again, but that’s another post entirely).
Unlike the GPL, the Affero stipulates that licensed software running on a network and providing a network or web service, must also provide the source. So while Google is not required to release any modifications to (the GPL licensed) MySQL backing up their search, they would be required to do so were the software licensed under Affero (I think…but what if the DB server is merely accessible via a webapp…hmmm).
Regardless, I had wondered about the utility of this license. However, that changed today after discovering some of the technorati services such as events and contacts. These services parse a page looking for microformats and then generate the appropriate file for that microformat (i.e. a vCard or iCal file). This is a perfect example of when code should be released under the Affero. By providing the code backing up these services, Technorati would enable users to setup their own servers (to relieve load, enforce uptime requirements, etc) while also ensuring that any modifications would be available to the public.
Though many object to the viral nature of licenses like the GPL, this objection is somewhat neutered in terms of webservices. Generally the service is available for (as in beer) already. Modifications to the code of this service probably serve no real monetary purposes; instead they improve the quality of the service. Therefore, there is less of a reason to shy away from a viral license when releasing code that backs webservices. Sure, in a perfect world we wouldn’t need viral licenses (or any licenses at all!), but that world is far off. Until then, the GPL and the Affero GPL are handy intellecutal property hacks.
Today at work in a unit-testing-brown-bag-lunch-session, I spouted off about private methods, claiming that they are stupid. I stand by my statement; private methods are definitely stupid. However, my true feelings are a bit more nuanced.
If we assume we are associating a specific chunk of functionality with every method we write, then there is an overarching hubris associated with declaring a method to be private. When we declare such a method to be private, we predict the future, saying “only I, the privileged creator of this spectacular class will ever need this functionality.”
But, wait, aren’t there legitimate reasons to declare a private method? What if a particular method leaves an object in an inconsistent state, debilitating all subsequent calls to “public” methods? Should this dangerous method be marked private? Perhaps. Leaving aside arguments about the necessity to create such a method, there are other ways around the problem. Convention, not language level constructs solve the issue nicely. Python, for example, uses a leading underscore for “private” methods, and Smalltalk programmers sometimes place these methods in the “private” protocol. And while I am not interested in metaphysical debates about what makes a system “object oriented” (I mean really, I think CLOS is perhaps the best OO system out there), with the examples of Smalltalk and Python, it is clear that private methods are not necessary for OO systems.
The argument that private methods are necessary to “protect” code is even sillier. If we’re afraid of how other programmers might use our classes, then we shouldn’t bother programming. Not only do these fears foster a sense of mistrust among programmers, but also, they are not easily eliminated. In the most straightforward cases, users of our classes with access to the code may go through and mark useful methods public (note that loosening protection introduces no bugs in non-reflective code), or worse, copy and paste this functionality into another method entirely. In more severe cases, the “nefarious” programmer will resort to introspection or disassemblers.
We programmers are tinkerers, and we should be willing to let ourselves tinker. Sleep easy, and declare your methods to be public!
Boingboing reports today on the staggering cost of the bailout(s) thus far. However, it’s easy to get lost in such huge numbers. What’s a million? billion? trillion?
Fortunately the google comes to the rescue and we can quickly figure that the cost is around $13,000 per person (4 trillion divided by 300 million).
What would happen if we just gave that amount of scratch away? What would everyone do with $13,000?
About a year ago I went to see the fine folks at the Loyola Health Center complaining of night time wheezing and shortness of breath when riding bicycles in sub 20 degree temperatures. After the standard pregnancy test, I summited Mt. Nerdom and was prescribed an albuterol inhaler. The ‘health care professional’ warned: “this does not necessarily mean you have asthma.”
In the interim I’ve used the inhaler an average of once a month. However, all usage stopped during my time in Bloomington and quickly picked up after returning to Chicago. Accompanying my most recent difficulty breathing is the standard allergy-based runny nose. I now suspect Alice the Cat (see above) is the source of these problems. In an attempt to alleviate my nasal symptoms I’ve tried the usual claritin but have also resorted to a netipot:
Do not be fooled by the pleasant music. This is the nasal equivalent of water boarding. And though the device does seem to work, the “see also: douche” in the wikipedia article on nasal irrigation is quite revealing.
I fear I must soon return to the doctor to find a more comprehensive solution. Sebastian will not allow me to turn Alice the Cat into Alice the Stirfry, and I am not excited about the prospect of washing her once a week to reduce dander output. With any luck, some pharmaceutical miracle can restore the cat-man balance while producing interesting side effects (I’m rooting for mood-swings and irritability).
Several months ago I explained how I was leaving Chicago to start my phd at Indiana University. That’s what I did. I packed up, headed south, and started with more school. For a variety of reasons, though, I decided to leave my program. I’m back in Chicago permanently and will be starting as a developer at Duo Consulting on November 3rd.
Some, upon hearing this news, treat me as though someone has died, and while this was a sudden decision, it was well thought out and the best for myself and those I love. The last few weeks have been hectic, but I’m really looking forward to my new job and life in Chicago.
I’m enjoying morning courtesy of my friend Keith Folsom (also notice the witty mug my mother gave me). Keith roasted some beans in his popcorn-maker sized roaster and ground them up for me yesterday. The results are fantastic! Watch out Metropolis, the Folsom Coffee Company is coming!