This page is an aggregation of everything I'm thinking about all of the things I'm thinking about. The content of this page is a mirror of the original content now available at robwilkerson.org. To subscribe to my thoughts, visit robwilkerson.org or subscribe immediately via FeedBurner.
Installing a Linux ERD
After making the whole-hog switch to Linux at work, I’ve been gradually reassembling the pieces of my development environment in the order of need (not priority). Some of these pieces are easy. Web server? Easy. IDE? Easy. ERD tool? Not so easy. I didn’t really have any idea what ERD tools, specifically for use in database design, were available for Linux.
In Windows development environments, I tend to use a Win-centric product called DBDesigner 4. I’m familiar with Dia and have even used it on Windows, but I’ve never particularly enjoyed that experience so I was hoping to find something better. After digging around and asking a few questions, what I found is that there’s a something of a dearth of these tools available for Linux. After a day or so of searching and waiting for answers to my questions, it occurred to me that maybe I could just install DBDesigner 4 via Wine.
I’d heard that the functionality of Windows apps in Linux can be pretty spotty using Wine, but I’d lose nothing by trying. Besides, even on Windows, DBDesigner has more than a few quirks (though nothing serious or even seriously annoying). To my surprise, it worked beautifully. Once I installed Wine and downloaded the DBDesigner installer, I was able to run the installer executable via Wine without a hitch. What I’d heard about spotty functionality turned out to be true – at least with respect to this app which, it should be pointed out, is not listed as a supported application in the Wine database. Nonetheless, after roughly a week of regular use, I haven’t run across anything serious and I’d call the experience a good one. Certainly better than having no ERD tool at all.
If anyone is looking for a decent ERD tool for Linux, you could do far worse than to install DBDesigner 4 via Wine. The project has been rolled into the MySQL Workbench effort, but the legacy installer is still available on the fabFORCE downloads page.
A few days after installing DBDesigner, I was told about a product called SQL Developer that also looks pretty nice. It appears to be a Java application that will, of course, run natively on Linux. It seems to be worth a look.
Why I Switched to Mac (and Not Linux)
This weekend I had one of those experiences that exemplifies the reason that I switched to Mac rather than Linux nearly two years ago. I spent the better part of this weekend trying to get my girlfriend’s laptop to dual boot into Linux because she’s been having all sorts of inexplicable issues with Windows. After hours and hours (and hours and hours) of driver hell…no mas. I’m done.
The laptop is an old one of mine, but it’s hardly ancient. It’s a Dell D600 Latitude – about four years old, I’d say. The specs are still pretty decent too, except that the wireless and ethernet cards are provided by Broadcom, a company that appears to be somewhat (in)famous for not offering Linux drivers. The result: I couldn’t get online – wired or wireless. That put me at a distinct disadvantage with respect to getting anything else done, so I tried to make it work.
A Quick & Dirty Theme Update
Having grown tired of the wrapping post titles that resulted from the ridiculously constraining, three column layout that I was using, I made a quick and dirty change to my Chyrp theme to allow for more space. The modified layout also allowed me to increase the font size which I hope will assist with readability. This end product (some might argue by-product) of this modification has its own issues and violates more than a few of my own aesthetic preferences, but it addresses the most egregious need and I’ll get to the rest when I update my entire product code base to the latest version.
I tell you this because I care. And for absolutely no other reason.
MacBook Pro Touchpad Tricks
Ordinarily, I’m no fan of touchpads – trackpads, if you’d rather. On every Dell laptop I’ve bought, I’ve always ensured that they ship with a nipple – or the even lamer sounding pointer stick because I’d rather use that than the touchpad. Interestingly, though, I don’t mind the touchpad on the Mac. Sometimes I even forget that I’m even using it because the transition from a real, live mouse is so smooth.
The reason the transition is so easy, I think, is due to the additional functionality Apple has built into its touchpads. The “trick” is enabling this additional functionality to promote productivity. Admittedly, calling these “tricks” may be a little ambitious since I thought they were pretty introductory, but I’ve had enough people notice what I’m doing and ask, that I figured I’d go ahead and put them in print.
Two Finger Scrolling
I hate to think of what my life would be like if were still having to navigate my cursor all the way over to the scroll bar, place it just so on the buttons and click my way to the position in the document I was looking for. Uh uh. On the Mac, I just drag two fingers across the touchpad – anywhere on the touchpad – and the document scrolls in that direction. It doesn’t sound like much, but I swear that this alone saves me about an hour a day.
To enable two finger scrolling:
- Open System Preferences.
- Select the Keyboard & Mouse icon.
- Select the Trackpad tab.
- Check the option to Use two fingers to scroll.
- Optionally, check the option to Allow horizontal scrolling, if that sounds like fun.
Two Finger Right Click
This feature doesn’t have quite the direct impact on productivity as two finger scrolling, but it’s still pretty convenient. Since Apple’s laptops, like their mice, ship with only one button (seriously, it’s the 21st century; now they’re just doing it to spite us), the only way to right click is to move your left hand off of the home keys and press the Ctrl key when you click the button below the touchpad.
Unless two finger right clicking is enabled. Then just place two fingers (of either hand) on the touchpad and click the button to access the context menu or whatever other right click functionality should be triggered. To enable two finger right clicking:
- Open System Preferences.
- Select the Keyboard & Mouse icon.
- Select the Trackpad tab.
- Check the option that (rather verbosely) states, For secondary clicks, place two fingers on the trackpad then click the button.
Again, these aren’t advanced tricks and frankly may not be tricks at all, but enough folks seemed impressed and awed by my use of them, that I thought they might be worth writing about.
Run Eclipse-Installed Ant from the Command Line
In the midst of my transition to Linux at work, I’m also working on updating the Ant build script templates that I’ve used for years to deploy every project I/we develop. When I built my Linux box, I installed Eclipse using Pulse. More often than not, I run my Ant scripts from within Eclipse (I love that integration), but from time to time it’s expedient, for one reason or another, to execute a build from the command line.
In previous lives, I’ve installed a standalone copy of Ant and used that for command line execution, but this time I was feeling thrifty. Clearly there’s an Ant executable baked right into Eclipse, which I already have installed, so why can’t I just use that one? Well, no reason, except that I didn’t know the path to said executable. So I dug around.
As you might expect, this is not a difficult problem to solve. I found my Ant root directory by looking in Eclipse under Window > Preferences > Ant > Runtime. On the Classpath tab, the first expandable group is named Ant Home Entries. Expand that to see all of the libraries that exist in the native classpath or, more importantly for this purpose, to see where the Ant home directly exists. To find the Ant home directory from these library paths just drop the /lib/[…].jar part of the library path. On my Pulse-installed instance, doing that leaves me an Ant home directory of /home/[user]/Applications/Pulse/Common/plugins/org.apache.ant_1.7.0.v200706080842.
Once you know the home directory, all that’s needed is to set a couple of environment variables and you’ll be able to run the Eclipse-installed instance of Ant from the command line or Eclipse.
For Linux and Mac users, edit your shell’s login script. In my .bash_profile, I added the following lines (syntax will vary for other shells):
export ANT_HOME=/home/[user]/Applications/Pulse/Common/plugins/org.apache.ant_1.7.0.v200706080842
export PATH=$PATH:$ANT_HOME/binOnce you’ve saved and quit the editor, ensure that you “source” your modified script (or exit the terminal and return or even just open a new tab) to activate your changes for the current session:
$ source ~/.bash_profileThat’s it. To test, just type “ant” at your shell prompt. Ironically, Ant is alive and well if you get a failure message:
$ ant
Buildfile: build.xml does not exist!
Build failedThat’s it. Linux and Mac users can go on about their day.
Windows users will have to set/update the ANT_HOME and PATH environment variables in Control Panel > System > Advanced > Environment Variables. Windows users may also have to restart in order for their changes to stick unless they also set those values at their own command prompt for use during the current session. For the values to persist beyond the next reboot, though, the first method is required.
Linux: Make Your Scroll Wheel Double Click
When I made the switch to Linux at work, I knew that I would have to make some adjustments to my workflow and retrain my muscle memory for certain tasks. To be honest, I really thought there would be many more than I’ve run into so far. One of those that I have run into involves the functionality of the scroll wheel button on my mouse.
On Windows (and also on Mac, I think), I use drivers that allow me to use the scroll wheel button to provide single-click access to the double-click action. I love that convenience and missed it after the switch. Moreover, the default Ubuntu action of pasting when I clicked the scroll wheel button left me with a lot of interesting and unintended results as well as an unnaturally smooth Ctrl+Z motion. The latter reason prompted me to dig around. I mean, it has to be possible, right?
It is possible, but it was more difficult to find that I would have thought. In my mind, everyone should be using this shortcut so there should be lots of information out there. Except that there’s not, so maybe I’m one of only a few who prefer this use for the scroll wheel button. Either way, I was finally able to track down a solution in the Ubuntu Forums that was easy to implement and works beautifully.
URI Problem in Last Post
Oops, sorry, folks. Between draft mode and publishing, my last post, Migrating from tcsh to bash, evolved into something other than what I originally expected. When I made the appropriate change to the friendly URI, it looks like it didn’t propagate correctly. The correct URI to that post is http://robwilkerson.org/2008/08/18/migrating-from-tcsh-to-bash/.
Again, apologies for any confusion.
Migrating from tcsh to bash
My move to Linux in the workplace almost necessarily entails a shell change. I’ve been using tcsh for years, going back to the days before bash added tab completion, if memory serves, but in the last year or so, I’ve been considering a switch to bash for several reasons:
- It’s the default shell on the Mac and most CLI help articles reference bash.
- Every Unix variant I can think of seems to ship with bash as the default shell.
- Some Unix variants don’t even bother to ship with tcsh.
Ubuntu, my distro of choice, is one of those variants that doesn’t ship with tcsh. Yeah, I know I can install tcsh easily enough, but that seems like a recipe for repetition over time as I work on new machines running other distros that may or may not include a tcsh install. For the sake of universal access, I think I’d rather just conform.
This past weekend I began the process of migrating my well-worn, painstakingly accumulated .tcshrc login script to its bash counterpart, .bash_profile. What I’m finding is that it’s not all that simple.
What's the Point of the E-ZPass Lane?
You’ll have to excuse the rhetorical nature of the question, but here in the mid-atlantic region and into the northeast, we have an electronic toll collection system called E-ZPass. It amounts to pre-paid tolls monitored by transponders – one in the toll lane and another mounted on the front windshield of the car. Pass through an E-ZPass-enabled lane and the vehicle’s transponder is read and the associated account is debited the cost of the toll. Easy, right?
On most – and maybe all – of the toll roads I travel, all of the toll lanes accept E-ZPass, but a few lanes are set aside for E-ZPass only so that traffic can keep moving through rather than stop to pass cash. It’s a great idea, except nobody seems to have the first freaking clue how to use it.
Why Linux Might Be Worth Another Look
No, no. I’m still a Mac guy. Really. That said, a Mac just isn’t an option at work; something about “fiscal responsibility, blah, blah, blah”. So this week, in a fit of fury over the fact that I desperately miss my powerful command line and a few annoying quirks in my development environment, I decided to create a Linux partition that I could dual boot into. I have to admit that I’ve been very pleasantly surprised.
I’ve tried to use a Linux desktop environment many, well, several, times over the last 5, 6, maybe 8 years. I’ve tried Redhat 9, SuSe 8, Fedora Core 1 & 3, Ubuntu 6.10 (I can’t remember which silly name it had) and a few other, less prominent distros. None of them quite did it for me. In a desktop, I’m looking for ease of setup and use – I don’t want to have to futz endlessly with stuff just to make it usable. This time, after two years since my last dalliance, I decided to roll with Ubuntu again since it’s still all the rage and has an active user community that I expect I’ll need for a while. I installed 8.04 (Hardy Heron).
Although I’m only a few days in – which means I’ll have plenty to write about over the next few days, weeks and maybe months – I thought I’d write a bit about a few reasons that I think Linux on the desktop – even your desktop – might be worth another look.
Hold a Meeting
Can anyone else relate to this?

Blackberry Curve Impressions
A few weeks back, I finally entered the 21st century and bought a smartphone. For the longest time, my cell phone was exactly what it looked like – a phone – and I didn’t have a lot of interest in turning it into something more. The truth is, I usually feel a little too accessible; why invite unadulterated intrusion? Then I started traveling more and things changed. I began to see a smartphone as a way to enjoy more freedom in that accessibility. In other words, I sensed an opportunity to become just a little less tethered to my laptop. I can be responsive while maybe enjoying a little natural light. Novel.
So I looked around. Now we all know that the iPhone is the sexy pick. Check that. It’s the holy-crap-that’s-sexy-as-hell pick. Maybe I’m not sexy enough or maybe my need for sexy is waning as I age, but I chose to live a rebel’s life. Defying the urge to conform, I chose the Blackberry Curve 8330 (yep, big time rebel, here). I made that choice, in part, because I keep hearing about some of the basic features that the iPhone lacks, but above all else, I chose the Blackberry because I simply wasn’t willing to give up my network (that famous mass of Verizon Wireless-gear-wearing bodies that you can probably hear, even now) for a phone. It’s just too damn good. Period.
So anyway, now that I’ve been using it for a few weeks, I thought I’d “publish” my thoughts on the device so far.
A Very Short Rant
You know what’s really starting to piss me off? It’s really starting to piss me off that the keyboard shortcut for copying text on Windows (and Linux, as I recall) is the same shortcut that terminals adopted for, “Halt, or I’ll shoot!” (a.k.a. “Put down those freaking pencils, now!” and “Stop what you’re doing, mister, and stop it right this instant.”)
This morning has been fraught with aborted processes and I needed a moment to voice my discontent. Thanks for tuning in.
OS X Wireless Network Auto-Detection
At home I’m completely wireless. My OCD gets tweaked by cords, so I’m Bluetooth and 802.11g all the way. My minimalistic skills are so advanced that I sometimes lament the need for a power cord. If I didn’t need power, my desk would be positively pristine.
For the last several months, I’ve noticed that my wireless network is no longer auto-detected when I boot up or whatnot. I can’t be sure exactly when it happened beyond knowing that it’s been a problem “for a while now” so I have no way of knowing what triggered it. The end result is that all of my apps start up (and try to connect) before I’m connected and errors are thrown. Oh, and that I have to sit and wait while all of the wireless networks in range are sought out and detected.
Although it’s annoying, it hasn’t been so annoying that I’ve been willing to invest a lot of (read: any) time in tracking down a solution. And, since I had no idea of the precipitating event, I honestly had no idea where to start.
Sometimes it’s better to be lucky than good.
This weekend I did one of my periodic system audits to clear out applications that I installed, but haven’t used enough to keep them. In the process, I noticed that I had accidentally moved my System Preferences application. I know it was accidental because I have moved it to /Applications/Uninstallers, a directory I created to store – can you guess? – uninstallers for the various applications that have them.
Recognizing that it shouldn’t be there, I moved it back out to /Applications and – gasp! – my wireless networks are auto-connecting again. Magic. Moral of the story: Do not move the System Preferences application. Ever. Or anywhere.
Firefox 3 Bookmarks in Launchy
Since upgrading to Firefox 3 oh these many months ago, my Launchy install has been woefully out of step. It’s been an annoyance, but I’m not on my Windows box all that much so it wasn’t exactly at the top of my hit parade. I finally had a free minute today, so I spent that minute understanding the problem and finding out how to fix it (and then another one writing this).
The problem, of course, is that Mozilla moved its bookmark “repository” to SQLite and the data is stored in a file named places.sqlite rather than the bookmarks.html file that has held this data since approximately the dawn of time. Fortunately, a simple change to about:config is all that’s needed to bring Launchy back up to speed.
To give Launchy access to your Firefox 3 bookmarks:
- Type about:config in your address bar.
- Type exporthtml in the filter textbox.
- Double-click the browser.bookmarks.autoExportHTML line item in the result set. This should be the only item that appears and double-clicking it should change the value from false to true.
- Restart Firefox.
- Access Launchy > Options > Catalog > Rescan Catalog to rebuild Launchy’s index.
Update 7/30/2008: Tweaking this configuration setting also sets Quicksilver back on the right track. I had to monkey around a bit with the Firefox module in the Quicksilver catalog to get it to index properly, but I managed to get it under control after a bit of wall-to-wall counseling.
Quicksilver is Making My CPU Its Bitch
I love Quicksilver. I don’t even use more than a third of its capabilities and I still couldn’t do without it. As nothing more than an application launcher, it’s completely indispensable to me. Because of it, I’m able to autohide my dock and, quite honestly, never see it. I don’t keep a single application icon on it (save those that are running, of course).
For the last few weeks, though, I’ve been noticing that Quicksilver has been absolutely monopolizing my CPU cycles to the tune of 65%-95% according to Activity Monitor. I don’t know when this started and I don’t recall any kind of “precipitating event” in the recent past that even might be the cause. If I only saw this kind of monopolization when it was reindexing, it would make some sense. That’s not the case, though. Usually, Quicksilver’s Task Viewer indicates nothing happening at all. The only thing I know for certain is that the application seems to have gone rogue on me. It’s out of control.
I thought I’d found a solution on Mac OS X Hints, but…no. And, by the way, if anyone else cares to try that hint, note that the Quicksilver caches are located in ~/Library/Quicksilver, not in /Library/Quicksilver as the hint indicates (the comments point this out as well). Deleting the specified directory (and a few others) briefly offered hope only to snuff it out. Cruel.
I don’t appear to be the only one seeing this, but it’s not something I’ve heard much rumbling about nor have I found a working solution. Has anyone else seen this and maybe dug up any kind of explanation, fix or workaround?
Update 7/31/2008: And then, just as quickly as it appeared, it was gone. Quicksilver seems to have righted itself and my CPU is happily idling along at ~4%. I don’t know what I did, but it may have something to do with the wall-to-wall counseling I gave it yesterday (7/30/2008).
Source Control Strategies for Frameworks
I’m starting to get my hands dirty with CakePHP and as I’m getting started, I find myself pondering the use of source control. Not whether to use source control, mind you (because, well, duh), but how to use it optimally in the context of a framework or even a product that can be extended with custom code. Ideally, I’d like to version any and all code that I write or modify, but none of the framework code that is left unmodified. I’m not sure that I’ve ever spent much time on that question. As best I can remember, I’ve always just committed everything.
I’m wondering what strategies others employ with respect to source control when custom code is mixed with product or framework code. Are there any best practices?
The Favre Thing
Am I the only one who thinks that the Packers are doing the right thing with this? I’m a sports junkie and listen to all of the chatter, but I haven’t heard many editorials that come out strongly in favor of the Packers. I’m not a member of Packer Nation, but I have all the respect in the world for Brett Favre, what he’s done in his life, his career, what he’s done for the Packers and for football. That said, this is starting to feel like that (girl|boy)friend that everyone’s had who can’t stand to be with you, but doesn’t want to be away from you.
Chyrp Upgrade
Or, On the Lack of Changes Made to This Site.
It’s been a long time since I’ve made any changes to this site. The reasons for that are many and most of them are personal: lethargy, (lack of) motivation, interest, etc. One reason, arguably the most compelling reason, though, was that Chryp – my platform of choice – was undergoing a major overhaul to its architecture. I liked what I was hearing about what the new version would offer, so I decided to hold out on investing any significant time on my existing site.
Chyrp 2.0 has been out in beta for a few weeks and today I took the plunge; I upgraded my dev site and I think I’m going to be glad I waited. Everything of any substance in the platform seems to have changed and neither my modules nor my custom theme will work as-is – a decision I applaud, by the way. I’m all for breaking backwards compatibility in the interest of bettering the software.
The UX of Form Buttons
This morning I was reading the second article in Smashing Magazine’s series on Web Form Design Patterns and I was surprised to read that the author(s) believe that “[…]it makes more sense to use a clear visual distinction between primary action buttons and secondary action buttons and introduce a significant amount of space to clearly separate them.” What makes sense to them feels counter-intuitive to me.
In my experience, “a clear visual distinction” usually takes the form of the primary buttons being dominant and the secondary being more, and usually too, subtle. It seems like the recent trend is to render the primary action buttons as, well, buttons and the secondary action buttons as text. I can’t be precise about how often I’ve accidentally clicked the dominant button (for no other reason than because it’s just so…dominant) when I meant to click the other, but suffice to say that it’s a big number. One day I almost spent an extra $100 for up to 2” of extra legroom while checking in for a flight online simply because of the “primary button” issue.
What? You think the airline planned that? How cynical of you.
Anyway, that’s been my experience. I can’t imagine I’m alone in that. I’d argue that if a distinction is considered necessary then care should be taken to ensure that the distinction itself is subtle. Making the primary action buttons significantly larger or “hiding” the secondary action buttons is very much the opposite of subtle.
