Archive for the ‘Programming’ Category
I just learned something about Subversion that I probably should have known a long time ago, as it would’ve saved me a ton of time in managing open source projects. The svn:externals property allows you to link other repositories into your own repository, thereby making it so you don’t have to manually merge third-party code when it’s updated. Unfortunately, this wouldn’t have worked when I was doing Drupal development as they are still stuck on CVS, but I think the majority of open source projects have moved to SVN by now.
The one thing lacking with SVN Externals is the documentation. The official Subversion page about it doesn’t really tell you how to use it; it just glosses over it with a quick demo. I personally found Matthew Weier O’Phinney’s blog post to be the best explanation of how to use it to its fullest extent. I’m just glad I can use it to reference TinyMCE’s repository and not have to remerge all those directories with each new release! It’s also great if you have common libraries shared among various projects in your own repository, as you can just keep the code in one place and reference it in each project.
So I’m kind of sad to say that I’m moving on from the Drupal development world. I had a great time working on Drupal for the past 2 years and learned a lot about open source development. I built quite a few sites with it and many modules as well. While I think that Drupal is a great solution for contractors looking to build generic content sites for clients, I don’t think it’s a great platform for building a hyper-scalable dynamic web application. Since I’m not doing consulting anymore and focusing my efforts on sites that are more personal to me, I’m moving away from the Drupal camp and over to the Django camp.
I’ve only been using Django for a couple of months now, but I’m incredibly impressed with it thus far. While I definitely have to write more code with Django than I did with Drupal, the performance and flexibility that it affords me is well worth the effort. The code is also much more straightforward and easy to understand, which makes the development times much shorter as well. In fact, with one site that I had built in Drupal, I rebuilt the entire thing again from scratch using Django in less time, with HUGE performance benefits and with features that weren’t easily accomplished with Drupal. I’m definitely a fan.
Anyway, next week I’ll be launching a new site that is built with Django, so I’m sure I’ll be posting about that soon enough. I hope to get more involved in the Django community as well! If anyone is going to SuperHappyDevHouse on Saturday, you might see me working on my newest Django site there.
I just happened to stumble upon Alex Faaborg‘s latest blog entry, The Graphical Keyboard User Interface. I think he makes a lot of great points about the tradeoffs between using a command-line vs. using a GUI. However, I don’t think that command-line vs. GUI is necessarily the real debate as much as it is keyboard vs. mouse.
I think that GUIs are great, as they have made it possible for the masses to enjoy and utilize these great tools called computers that were once only used by those adventurous enough to learn all the various text commands. I grew up using DOS for many years so I guess I was one of those nerds, but nowadays my eyes appreciate a well-designed GUI since I spend a good majority of my day staring at it and manipulating it as I work. So in my mind it isn’t the GUI that slows me down as much as it is the mouse. I use the keyboard almost exclusively for navigating between windows, launching applications and using shortcuts. I really only use the mouse when I’m feeling lazy or it’s a faster means to accomplish something.
Needless to say, I’m really excited to see Alex’s idea take place for navigating with the keyboard through Firefox. However, what I’d really like to see is a more unified framework built directly into the OS for accomplishing this very idea. For example, someone could use the new Core Animation framework in OS X to build a framework that provides an interface similar to Quicksilver that application developers could directly tie into for application navigation. It would significantly reduce the burden on application developers while giving a consistent UI feel across the various applications that utilize it.
*Note: Side effects may include making you crazy when trying to use your friend’s computer and they don’t have it installed.
For quite some time I’ve been recommending my Windows programming brethren to use TortoiseSVN as the GUI for version control with Subversion, and despite my hatred for Windows I’ve always been very jealous of their ability to have right-click access to their SVN repositories via Windows Explorer. Ever since I’ve been using OS X, I’ve been doing things the hard way and only using the command-line Subversion tools.
But now that’s all changed! Just yesterday I discovered SCPlugin, which gives Mac users the same right-click shell access to SVN that Windows users have. Apparently I’m behind the times as this has been out for awhile, but it was still new and exciting for me.