Jonathan's Pancheria

dotcom Thousandaire


I did not think I would actually make today one of the 100 days, but I pushed through. I guess the incentive of challenging myself is working ;-)


  • Finished debugging the last part of adding the second controlled list admin table. Add and remove working
  • Added the third and final admin table
  • Committed


Ready to move on past admin page. Data for the main part of the application can now be entered and things are ready to move to building the main part of the app now.

LOC counts are harder if you don’t commit your code every day. I will have to figure out how I can reconcile committing the done LOCs versus not breaking the build, as it were. I believe using git’s staging capability will be important for doing that, or I might have to go to trunk and a stable branch, or I can use git clone and keep unstable local and my remote repos stable. Any way will teach me more about git, but it will be easier to manage the tasks of this challenge and the requirements of good codebase hygiene to figure one of them out.

Published on 31/01/2009 at 06:32AM under . Tags , ,


After having to make the day I thought up the idea be my Prologue, January 29 turned out to be fairly easy to make 100 lines of code. Not every day will be this easy, I bet. I also know that I opted for get things done over polish things to perfection. There is definitely some code that should be factored out and made common, but the pattern hasn’t emerged to my brain yet. But the functionality has definitely moved forward


So here are the accomplishments today:

  • Moved a little forward on getting Google App Engine SDK debuggable in NetBeans. I’m pretty sure what I’ve done is leading me down a blind alley and will end up being scrapped, but I can now start up my app in the Google App Engine SDK from inside NetBeans. But breakpoints clearly don’t work, and I am pretty sure it has to do with the execution model of Google App Engine and so the only way to get it working right would be to delve into the internals of the SDK to fix
  • Got the major admin page for my app moving significantly forward. There are 3 “control table” models that provide the inventory in this application, and there’s what I hope is a nice AJAX-y admin page from which I want users to be able to manage those lists. First of 3 lists is done, so you can add and remove items. Made good progress on the second list supporting add and remove


Code is not in a completely stable state: second list’s table for add/remove is not adding quite correctly yet. That will be tomorrow’s work. I should probably put a bit of effort into understanding more about how to debug Google App Engine SDK by either getting it in an interpreter/debugger where I can see breakpoints, or learning how to do printf/stderr/console type logging in it. I am sure it can be done, and answer is probably a google search away. But I’m making progress without it, so it is not the biggest issue.

Published on 30/01/2009 at 05:11AM under . Tags , ,

So I decided to start blogging my experience the day after I started actually doing the 100×100 challenge. Therefore, I get the benefit of hindsight, especially since I ended up well short of the mark. However, I would have to say the prologue was still fruitful.


Here’s the accomplishments for the day:

  • Automated mounting of the truecrypt drive I keep most of my data on on my laptop (I’ve had a laptop stolen, the idea somebody had my data even though I knew the thieves would wipe the drive bothered me more than I thought). 5 lines of code
  • Installed Google App Engine SDK on my new laptop. Since I last touched my Google App Engine app, I got a new laptop and still hadn’t put the SDK on it
  • Got gitosis running on my re-imaged Joyent Accelerator. I beta-tested their latest image so I’ve installed it about 6 times now: I’m fast at it, but it still needed to be done. 5 lines of code
  • git clone-ed the repository from my home server to the Joyent Accelerator and to the new laptop
  • Installed KomodoEdit and NetBeans 6.5 with jvi and python environment. Decided to try NetBeans as my programming environment
  • Got past the roadblock that arose over 6 months ago when I put this app aside! 15 lines of code


Not too many really. I should probably figure out how to run Google App Engine in the NetBeans debugger.


NetBeans is pretty good. The python environment works fairly well. Like I said, it would be interesting to see if I can debug Google App Engine from inside it.

Published on 28/01/2009 at 11:56PM under . Tags , ,

So I am going to set myself out a hopefully fun little challenge: 100 lines of code in 100 coding days. It’s my challenge (and if this catches on, my meme ;-)), so I get to define my groundrules. Of course, someone else who wants to quibble with these is free to come up with their own groundrules for their own challenge, publish them, and see how they do on their own ground rules. Point of this, however, isn’t to have a flame war on the ground rules. It’s to write code, have fun, and see where doing something this regimented leads.

Ground Rules

  • There will be 100 coding days. I am going to exclude certain days from the 100 day count like:
    • Any day I’m away skiing
    • Vacation by default, although if I feel like coding on a vacation day I reserve the right to make it a coding day
    • Operational crises at work, although hopefully those are going to be at a comparative minimum these days
    • Sick days, with the same caveat as vacation days
    • One weekend day a week, choice of which one each week
  • For each of the 100 coding days, either:
    • Write 100 lines of code
    • Remove 100 lines of code by refactoring
  • Lines of code are counted as any non-comment, non-blank code that has any alphanumeric symbol, constant, value, etc. Here are some things I will or wll not count as a line of code:
    • Do not count: comments
    • Do not count: blank lines (zero or more whitespace characters)
    • Do not count: closing lexical scope symbols like } in C/C++/Ruby etc
    • Count: closing HTML/XML tags. They have identifiers on them, so I’m counting them. And remember, these are my rules
  • Blog about each day’s experience: how many lines, what was accomplished, what issues were resolved or came up; any other thoughts about the day’s effort
  • Publish the code: put the code out there for people to see at some point when it gets done. I will probably use my github account

Why I Am Doing It

I have a whole pile of interesting hobby projects that have been sitting around, not getting very far. There is some tangential work application to some of them, but some of them are just brain stretchers: play with something new, learn it, figure out some paradigms and programming models.

I am tired of not forcing myself past roadblocks in these hobby projects and letting them just languish. So this is a way to force myself to work on finishing at least one of them up. It is also an experiment in writing things that are just good enough. By pushing to finish them, I am hoping I won’t get into bouts of perfectionism of making sure every single artifact in my code utilizes the cleanest, most elegant paradigm in the toolkit I’m working on, since a major part of the goal of this is intellectual mastery of the subject matter. Going back to refactor, I may clean things up and make them more elegant. But this may force me to get things done instead of polish them to perfection. If I want to clean something up, I’ll go back and do it after I’m done with a first cut.

What Am I Coding?

I have been playing with a Google App Engine application since right after their initial limited beta got expanded the first time and I got my invite. The app has been sitting stuck on a particular error for over 6 months now. So I am going to finish the application.

One goal with the app, besides learning Google App Engine, is to build myself a modern, ajax-y web application using new shiny toolkits on the server and browser. As of right now I am using Google App Engine on the back end, and YUI for the DHTML/Ajax stuff.

I may post more about the actual experiences with the toolkits as additional posts when there is a longer topic. DHTML toolkits is a very possible start. YUI is definitely an “accomodation” choice: there are reasons I’m using it here that are very specific to this project’s situation that I’d like to explore.

After Google App Engine?

Another goal is to play with “cloud”-type apps. That was the interest in Google App Engine when it came out. Given that, if I actually finish the Google App Engine app, some other things I’d like to attack would be to see what challenges I face trying to port the app to different platforms, for example:

  • Heroku, where I also have a beta account languishing
  • A different python framework like TurboGears2 or Django, running on my Joyent Accelerator and maybe even Amazon EC2
  • The Nitrogen Erlang framework, again hosted on my Joyent Accelerator or Amazon EC2 (or both!)

There has been lots of discussion about portability, vendor lock-in, OSGi stack-level mismatches between various cloud offerings. By taking a sample app that is small enough to be written reasonably easily, but has enough breadth of functionality to tickle enough parts of a modern AJAX web app, maybe I’ll provide some interesting data points about writing for the cloud.

Published on 28/01/2009 at 11:41PM under , . Tags , ,

Powered by Typo – Thème Frédéric de Villamil | Photo L. Lemos