--- author: '' category: '' date: 2008/08/20 11:34 description: '' link: '' priority: '' slug: BB736 tags: programming, python, urssus title: Lessons learned in a month of hobby programming type: text updated: 2008/08/20 11:34 url_type: '' --- A little over a month ago, on July 15th, I opened a Google Code project called uRSSus. Here's `the commit`_. My goal was to try building a desktop application like if I were building a web application, using a ORM, templating, generic views, and other things. The first thing I learned is that it was more fun to just write the application and see it grow than spending time writing the framework needed to do what I wanted, so I just kept the ORM, and the rest is pretty traditional code. The second thing I learned is that for a hobbyist programmer, this is a golden age. I am not exactly an awesome programmer myself, and with today´s tools, I could almost *wish* my app into existence. When I started programming on a PC, I had to swap floppies to change from the IDE to the compiler [1]_. And if I made a mistake, the computer crashed. No, not the program. The *computer* crashed. Now? I get a pretty dialog, a link to the position, a stack dump, etc, etc, etc. Not missing the old days at all. Another way this is a golden age is that there is a lot of code out there. I literally had to learn my code from books. I first "got" C by reading the help for a pirated copy of Autodesk Animator's POCO extension language. There were no collections of code I could look at and learn. There were not even any large libraries of code I could legally use! And that´s another reason why this is a golden age: Open Source and Free Software. You really can be a programmer just by willing it and effort. You will not lack tools, you will find users (if you are good), you will find helpers (if you are lucky), you will find free infrastructure (svn repos, free wikis, free file hosting, free everything), you will find libraries you can use!. The third thing I learned is that Python_ does come with batteries included. Many things that would be annoying effort in other languages are just there, ready to be used. Add the internet, and it´s a `Mr. Fusion`_ instead of a battery. The application I developed is a `News aggregator`_ and thanks to Mark Pilgrim I had `Feed Parser`_ and thanks to Troll Tech (Now Nokia) I had Qt for the UI, and many many other things. I could focus on application logic, not on parsing and drawing. The fourth thing I learned is that a month is a long time when you have productive tools. Urssus_ (that's my application) was functional (but awful) in a day or two. It was not awful in 2 weeks. It was pretty good in 3.In a month? Download_ it and see for yourself, I like it, the SVN version is much better most of the time, try revision 619 ;-) The fifth thing I learned is that Python performance is good enough. I don´t see much performance difference between uRSSus and, say, Akregator, which is C++, except on places which are obviously broken. Sure, the database is C, the UI toolkit is C++... they are all black boxes to me here. I code Python. My pieces do well. The last thing I learned is that I can still code free software. I had not written a useful/usable *large* free software application in perhaps 8 years. I am 36.9 years old... excuse me if I feel middle-aged, surrounded by youngsters which are faster, more dedicated and actually have free time. Because of the productivity of the tools, I managed to code just a couple of hours a day for the first weeks, and progress was still good, so I didn´t get discouraged, which is the worst enemy of free software. It has been a fun experiment, hopefully it will be a fun *ongoing* hobby. .. _download: http://code.google.com/p/urssus/downloads/list .. _Feed Parser: http://www.feedparser.org .. _News aggregator: http://en.wikipedia.org/wiki/News_aggregator .. _Mr. Fusion: http://bttf.wikia.com/wiki/Mr._Fusion .. _python: http://www.python.org .. [1] Can you guess what I was using? .. _the commit: http://code.google.com/p/urssus/source/detail?r=1 .. _urssus: http://urssus.googlecode.com