Saturday, March 31, 2007

My life needs SCM

Well I haven't been able to spend much personal time programming lately. I have accepted a job as a software engineer. My very soon to be wife and myself will be leaving the lovely state of Oregon next weekend. We are relocating near Santa Rosa, California. I'm really excited, but a little bummed by the huge shift in my focus. It'll be weeks before we settle down and I can get back to working on my little pet project. I keep coming up with new stuff I want to start playing around with, which can be rather bothersome. Oh well all I can do is write down these ideas and save them for later. Sometimes other duties come up that keep you from doing what you love to do.

One of my ideas I haven't gotten around to involves using Rhino. Rhino is a javascript engine implemented with Java. I would like to create a SWING version of my time tracking application. Seeing that the time tracking app is a single page web application, all the core logic is implemented in javascript. I would like to reuse as much of the javascript code as possible. Thats where Rhino would come in.

In this javascript app I have worked to separate application code through a number of interfaces. There are objects that represent the views. These create and control the HTML elements in the DOM structure. These objects have events that fire, such as when a button in the GUI is clicked. There are objects that maintain the state of the application, these interface with the views. They relay messages to the view. They also have to be able to receive events from the view objects. Therefore we have circular references between the state objects and the view objects. Note one state object may have many references to view objects, but the view objects (so far) have references to only one state object.

Other objects contained by the state objects will have to be interfaced out. Here I am thinking of the objects that communicate with the server (XMLHTTP!). I have not done this so far. I was thinking about the DAO pattern being used in javascript to do this. This may help to ease working with Java based DAO's in the SWING app implementation. The Java DAO's would drop in to replace the functionality of the XMLHTTP DAO's from the single page web application.

Let's stop it here. Later these notes could come in handy.

Monday, March 12, 2007

Meeting your goals

I have just pushed back a milestone for a project. This project is one I am developing in my own time, by myself. You may find it funny that I even have a milestone for such a project. Like most people, my pet projects are usually more exploratory and therefore do not include any project management. I wanted to try out the 37 signals Basecamp application and figured why not use a this project. So I signed up for my own project site on Basecamp. I called it code party. The project I am tracking here had already been going for a month (maybe a bit longer) before I started using Basecamp.

So the project I am working just missed a milestone. I said this past Saturday would be the milestone for a dogfood version of my application. Of course my life made sure that this milestone did not happen. Beyond the increase in workload at my place of employment, I have also had family obligations including a vacation up to Seattle for the weekend. Basecamp made sure to email me and let me know that the milestone loomed in my current future. I knew a week before that I would not be hitting this target. So what do I do? Relax. No point in freaking out. Beside the fact that this is a pet project, the best thing you can do in approaching the milestone is plan more.

I looked at what I had done, which was quite impressive ;) I figured I would not make it to where I wanted to be, so I examined what the missing piece of work was. By examining this missing work I could focus down on exactly what will be needed to be done in the next phase. This is work that should be accomplished before moving on to other work. I narrowed down my ideas so that I could accomplish this as quickly as possible. Other milestones will be moved forward a bit.

So in summary stay focused and relaxed. Live to fight another day, rather than throwing yourself into the fire. Make sure to not move into another part of the project (unless necessary) until you finish piece you are working on. These are some outlooks that have helped me work through some difficult projects.

Sunday, March 04, 2007

Required reading

If you happen to be a geek like me, then you can appreciate things such as industry humor and history. I don't think any other sector of private business can dare claim to match the level of snake-oil-ness that is found in the modern IT world. Reading is fundamental. Those who do not learn from history are doomed to repeat it. With that little statement out of the way here is some geek-hotness you should be privy to:

FSJ - I love my Mac, but iLove (sic) FSJ even more. That is Fake Steve Jobs to the uninitiated.

Folklore.org - This is another Apple related site. Andy Hertzfield worked for Apple in the long, long ago. He also had a role in the Chandler project.