Category Archives: Free/Open Source Software

Topics that touch on Free/Open Source Software subject matter

Leopard for me so far

I recently read Dave Thomas’ recent post titled “The Canary Benefit“, and it reminded me that I had never made note of my switch back to OS X as my main operating system. My attempts to run my accounting and contact management on GNU/Linux over the past few years have been pretty dismal. The several options I tried to use for accounting led me to end up having to enter a year and a half of business transactions into QuickBooks from scratch, the tipping point being when I couldn’t even pull a meaningful profit and loss report for my accountant. Over time some Multisync failures had decimated my contact database as well, and that started to cost me.

Deciding to switch back to Mac was a no-brainer, but with the advent of Leopard I can say for the first time that I seem to be experiencing a bit of cruft like I have from other operating systems. Weird lockups, less-than-smooth transitions from sleep, goofy resume behavior when switching to an external monitor, etc. Don’t get me wrong, I love several features in Leopard enough to put up with the annoyances. They do, however, give me pause.

Mark Ramm, friend and exemplar

My post about a Python web frameworks OpenSpace convened at CodeMash drew a bit of attention, and looking over it again, I can see how it can send messages I did not intend. In order to break my trend of sitting on posts for weeks and months, I pushed myself to get this one out even though I wanted to finesse it more. The main person who could have taken this the wrong way would be Mark Ramm, who convened the talk and is also currently heading up my favorite Python web framework.

Instead of launching some missive or flaming the comments of my post, Mark took the time to further explain the situation for TurboGears both past and future. He even apologized if he may have unintentionally spoken ill of the JVM (which he did not). Mind you, I am no defender of the JVM, but I can see how I might seem like it from that post. Mark also sent an email which explained some of the discussion items and after hearing that, I was far less concerned about where things are heading with that project.

I have known Mark for about a year now. We have had dinner together and shared many funny stories (he has many, should you ever have occasion to hear them). I consider him a friend, and his reaction to that post is an example of what I have come to enjoy about the Python community. After reading Zed Shaw‘s “Rails is a Ghetto” tonight, I am even more thankful for it. Man, even if you filter through the bile and profanity, it still sounds like this dude received some rough treatment for trying to do the right thing at times. And if some of it is true, then I need to rethink some of the folks whose work I endorse.

CodeMash 2.0.0.8; why I choose to attend

So tomorrow I fly out to Cleveland for the 1-hour ride to Sandusky, Ohio for CodeMash. The first CodeMash ever took place last year, and I was very glad to have been a part of it. I had intended to submit proposed talks for this year, but alas my schedule was already a bit full and I honestly lacked the energy to put together the topics I would have wanted to present. I cannot wait to be there, several of my colleagues from Bruce Eckel’s OpenSpace conferences will be attending.

One benefit of being an independent consultant is that I am able to choose the conferences I attend without having to justify it to some management or department head. Most of the things I choose to attend would probably not be approved by an organization that insists on being able to directly relate the entirety of a conference’s content of focus to the attendee’s daily tasks. Still, there are numerous conferences throughout the year that appeal to me, and I can only afford to be unbillable for a certain number of weeks out of the year. CodeMash makes my shortlist, and here are a few reasons:

  • CodeMash is a multi-language conference. There’s a breadth of exposure and a cross-pollenation of ideas that are simply not available at single-language events.
  • The attendees drawn to such events are typically more open-minded about software development approaches and the fact that there is no “one way” or “one language” for anything.
  • The speakers drawn to this type of conference tend to have a perspective that is broader and more in touch with software development realities than insisting on foisting some delusional monocultural vision for their language/platform/tool of choice.
  • There’s a strong OpenSpace element to CodeMash, and I have experienced first-hand how amazing and energizing it can be.

So, that is why I am going to CodeMash. Looking forward to sharing my experience with my readers, all three of them.

Time & Money migrated to Subversion

Over the weekend I managed to get the Time & Money project repository migrated over to Subversion. It was a fun one because the modules needed to be rearranged into the directory structure that the team had worked out. I kept a log of my steps with the goal of turning that into a how-to that may be of help to other Sourceforge projects that have yet to migrate from CVS. I just need the time to make it more of a cogent how to and less of a stream-of-consciousness ramble.

Spring as an enabling technology for applied Domain-Driven Design

I wrote earlier about the apparent embrace of Domain-Driven Design (DDD) within the Interface21 team, the group behind the excellent Spring framework for Java applications. I have been thinking about why it is that Spring in particular would lend itself to the application of DDD.

I first expressed this during the review of the DDD track last Wednesday for the start of the conference. The escape from the productivity hit we all took with Java EE when Spring first began to be known was a big deal. The ability to have an layered, n-tier application that was testable out of the application container, with the ability to wire up a bean container’s contents via a straightforward XML syntax breathed new life into many a tired J2EE web application. Lines and lines of tiresome boilerplate code for DAOs were replaced with clean, small implementations that extended the appropriate Spring template. The effectiveness of our domain models were about the furthest thing from our minds. Why didn’t we immediately address domain modeling as soon as we had our sea legs with Spring?

I would say it’s analogous to not being that concerned about what clothes you are wearing when you are starving to death. Remember Maslow’s hierarchy of need from basic psychology in college? Few people whose physiological and safety need are not being met care that much about self-actualization. There are enough shops using Spring for there to have been two consecutive conferences dedicated to the technology. Spring is ubiquitious; that was the thrust of Rod Johnson’s keynote today. It has proven itself as a productive, viable foundation of enterprise Java applications the world over. Given that foundation, there exists the capacity to ask, “how can we now move to the next level of applying Spring in the best manner possible?” Domain-driven design answers that question.

Domain-Driven Design is not easy, and many, if not most, technologies actually impede the application of DDD. This is where Spring stands out among the raft of framework options. It has always had the intent of staying out of one’s way rather than attempt to infuse all of your code with its own prescriptive dogma (insert JSR of choice here). Spring stays out of your way, enabling the necessary insulation of your domain model. Since it is also Open Source software, there’s no need to bolster a revenue model by implementing any such ugliness in an attempt to ensure vendor lock-in. The Interface21 group is freed of that burden throughy their choice of Open Source, they are freed to pursue excellence in the code unfettered by a need to drive sales of the software. Since they depend on revenues through services, they are driven to make the best framework possible that will be of sufficient utility for more people to need training and consultation they provide. The model seems quite sustainable, and I wish them the best.

The missing ingredient in commercial desktop OS options; a package management system

Having spent the better part of two days provisioning my new MacBook Pro’s OS X, Debian, and Windows XP instances, I am keenly aware of how much the Debian distribution’s package management system and its volume of packages have spoiled me. In that two days, the amount of time required to provision Debian was negligible, even though it is configured to completely match my Lifebook’s Debian Sid instance. In fact, the sum total of time to set up Debian, including every application I use, was about 45 minutes of my involvement. Those who know Debian (and Ubuntu, Linspire, Xandros, Mepis, or any other Debian derivative) are coolly nodding their heads, while others are probably thinking I am a lying, biased Linux zealot.

It’s no lie; here are the steps I had to take:

  • Run the Debian Installer business card image and perform a stock Sid installation, choosing Desktop and Standard System options in the task selection step. If you weren’t wanting to run Sid, the netinstall image would be fine as well.
  • Generate a package list on the current Debian installation via # dpkg --get-selections > dpkg-selections.txt
  • Copy the package list file to the new installation; I have copied it to my home directory in this example.
  • Set the package selections for the new installation via # dpkg --set-selections < ~/dpkg-selections.txt
  • Run aptitude or synaptic and choose the install action, then go do something else. Thousands, literally thousands of software packages are being installed for you. Everything from your email client to your office suite to your software development tools are being pulled down from package mirrors. In my case, this was over 850MB of compressed package files.
  • After the package download, answer any configuration questions aptitude (or synaptic) poses.
  • Copy your /home directory contents to the new installation.

Compare that to what it takes with either Mac OS X or Windows XP to get all of your applications installed and configured. Even if you don’t know a thing about Linux or even the more technical side of those operating systems, you can tell from the brevity of that set of steps that the Debian setup is remarkably simple.

Now, some will already be keying in their comment posts with exclamations of “Hey! There’s DarwinPorts/Fink/Cygwin!” Yeah, each of those is a nice start; however, they pale in comparison. Fink at least has the robust apt/dpkg foundation, but even it has a relatively meager package selection. I am sure I’ll be writing more on life with Fink and DarwinPorts in the near future.

I still don’t have half the stuff installed on XP that I plan to use. I get tired just thinking about the installs. 8^)

OK, so I lied…or did I? MacBook Pro in the house

I can hear the comments now; the next AJUG meeting I show up at with my MacBook Pro (MBP, the short acronym for “those in the know”…sigh, I must admit it is easier to type, even if it comes off as pretentious) will probably include a few comments along the lines of “Heeeyyyy…what happened to the Linux thing?” I have been pretty public about my distaste for Apple’s switching to Intel, mostly because of the amount of PowerPC-based Mac hardware I owned at the time. Shortly after that I pretty much shelved my PowerBooks and ordered my first ThinkPad. The Lenovo ThinkPad T42 has been a great machine, and since about mid-July I have been running Debian on a Fujitsu Lifebook P7120, an amazing 2.5-lb. ultra-portable. So, why plunk down the cabbage for a new Apple top-of-the-line MBP?

It all started with World of Warcraft, which my wife and I have been playing together for several weeks. I only have two PC laptops in the house, the ThinkPad and the Lifebook. The ThinkPad runs WoW great; the Lifebook running WoW is an exercise in tolerance. I consider my early WoW learning to be like unto those martial arts movies where the pupil must do typical tasks with large stones tied to them, so that toward the end of the training montage (it’s always a montage) they are suddenly capable to carry water and do laundry with amazing proficiency, as well as fight 25 ninjas simultaneously. My wife’s iBook and my old TiBook do a pathetic job of running WoW, making the Lifebook seem tolerable. So it’s basically a hardware problem. 8^)

When I started surveying the PC laptop market for units that are portable and have high-end graphics hardware, I was floored at the cost. Units that are 8-12 lb. behemoth start at US$ 4K. They’re also ugly. The build quality is also shite. Now consider that a decked-out 15″ MBP goes for under US$ 3.3K, and that’s with the 3-year Applecare warranty and support, and extra battery, and an extra power adapter.

When you also consider the leaps forward in virtualization and multiboot options for MBPs, it quickly becomes a no-brainer. Parallels Desktop for Mac is amazing, and their embrace of more than just Windows is welcome respite from the tragedy that was Microsoft’s acquisition of Connectix and their flagship product VirtualPC. The performance of Parallels has thus far surpassed VirtualPC, and its networking support works as expected for host-to-guest communication, which is more than I could ever say for VirtualPC.

I now have Mac OS X, Debian, and Windows XP all running well on a single machine. Oh, and WoW runs quite well, too. I have a Mac, but it’s still x86 architecture, so it’s not so much that I lied, but my wounds over Apple’s switch have had time to heal, and I too now see it as having been a great move.

The long-overdue release of java-package 0.28

An updated java-package will hit unstable in the next mirror pulse. Apologies to all for the delay; my discretionary time and that of my sponsors has been rather sparse for some time now. There are at least 9 bug reports addressed in the release. All users who have a JRE or JDK packaged by a previous version of java-package are encouraged to first remove their existing packages and then install an updated one generated by 0.28. Again, sorry for my low level of productivity for Debian, but paying my bills and being a new dad has been quite taxing (albeit rewarding) the past nine months.

Web Frameworks Jam Wrap-Up

The last day consisted of a steady morning of TurboGears activity followed by lunch, a great hike, and wrapping up with a podcast that summarized our experiences in the different areas. I’ll add a link as that becomes available. I didn’t get into the testing capabilities bundled with TurboGears to the degree I had wanted, so I’ll have to do that later and blog about it.

We also rented bikes for hitting the Lower Loop at 8:00 a.m. tomorrow; I eneded up with a Gary Fisher Piranha from The Alpineer. It’s not quite my Hoo Koo E Koo, but at least it has the same Genesis geometry; that Specialized bike I rode on Monday was a dog, though that was mostly due to it being horribly unmaintained. The geometry on it was really awkward for me as well.