Perspective::2009
Today was a humbling experience, but it highlighted the reasons for my goals for the year. I have a project in it’s early phases that I can’t decide on a path forward for. The problem is Ruby on Rails, it must be. Shifting gears between Ruby on Rails and ASP.NET WebForms is like night and day. I have a number of these WebForms projects on a common codebase. The codebase is my own, I hesitate to call it a framework, but it is in production and working well. It has tests covering the interesting bits of code and it’s built in a more traditional data-layer, business-object-ish layer and you can set WebForms on top of it all.
Writing it was a good learning experience. I got to know Generics, Dependency Injection / Inversion of Control, and some interesting aspects of designing re-usable code. However, there is one major problem with it. I hate it. Well that’s not 100% true, I’m proud of having written it and that it works, but I don’t enjoy using it. There is 0 Rails MVC goodness in it and I feel like I am constantly violating the DRY principle despite my best efforts not to.
Back to my project. I originally decided to to write it in Castle Monorail. I was excited but a bit puzzled by the “distributed” documentation and the variety of options available to me, but I took it in stride as Ruby on Rails seems to have a new improved way to do things every week or so. I settled on using MicroKernel with Brail as my options with trusty NUnit as my testing framework. Before long I made a complete mess of everything and had to rewind. Take two turned out a little better, but fizzled out as well.
After a while, I really didn’t want to work with it anymore since I had begun to equate working in Monorail with being confused and frustrated and doing sub-standard work. I decided to go back to WebForms since that is a known quantitiy but after doing some fairly interesting work and spending a couple weeks on it, I realized that I had done fairly little on the project itself and a large amount of work trying to bend my codebase to do some Railsish things.
Then came the Holidays, and my family was kind enough to let me feverishly hack at Ruby among other things. I learned to use Cucumber and touched on Shoes. I played with Webrat and Machinist and it was all good. That was when I decided to give Monorail another try. Which leads me to today….
I started out by signing up for an account at Codeplex and looking around there to see if there was anything of interest brewing in the .NET community. I found two interesting projects, Faker and FluentSpec and set in to making an Castle ActiveRecord assembly for my domain. Before long I was floundering, without the flow. I spent hours tinkering and researching until finally I came across the following two posts.
That was when it all started coming together and after hours of feeling like an idiot, I ended the day feeling like I had accomplished something. That is the feeling I want for 2009. The feeling of stepping out of confusion and self-doubt into the satisfaction of accomplishment. The exhilaration of seeing it all come together.
Now that I have completed my rather circuitous route to the goals portion of this post, let me move on without further ado to listing out my goals for 2009.
- Spend more family time - My obsession for all things technical often shrinks family time. I must find a better balance here.
- Continue learning in Ruby and .NET - I made great strides in both of these areas in the past year. That is no reason to let dust settle on my skills.
- Learn Erlang - I chose this functional language to learn in 2009 because of it’s distributed nature and it’s threading ability.
- Exercise frequently - I’m not looking to go out and run a marathon, but if I can walk or drive somewhere, I need to take the walking option.
- Stop trying to organize, and start simplifying - I think that the clutter is what is sapping my time and energy, and diverting me from my goals.
- Become financially stable - I will have an emergency fund and know where all my money goes by the end of the year if not sooner.
- Contribute - I would like to become involved in open source projects of my own or others.
- Teach - My kids think that most of what I do on the computer is magic. I would like to teach them how if they want to learn. Hackety.org and Shoes is looking like a great place to start.
- Enjoy the journey- Funny that I read that post after the day of frustration that I had. Thinking back, the figuring it out is as fun as the accomplishment of having done it, if I allow it to be.
- Quit smoking - There I said it, though my heart is not fully in it yet.
That is a tall list of goals; can I do it all in 2009? I am not sure. If I keep plugging away at it day after day, I might. Regardless the effort put into it will be rewarding, as I will definately make significant strides toward these goals and (hopefully) learn to enjoy the journey.