Thoughts and opinions of a technology enthusiast.

Enable Intelligent Tabbing in OS X

466364263_4cdd5f95aa_mI can’t believe that after 14 years Apple still defaults Mac OS X to the most ridiculous tabbing option I’ve ever seen.

By default, OS X only allows you to tab between text box and list fields in forms. This includes applications and web sites. If you tab through a page you will only land on the text boxes. Check boxes, radio buttons, links and any other control in the system will not be hit. This means that you’ll need to pull out your mouse to click on these controls. Insane.

To fix this insanity and make your Mac behave like a normal computer:

  • Open System Preferences
  • Click on Keyboard
  • Click on the Shortcuts tab
  • At the bottom of the dialog, select (with your mouse) All Controls

Keyboard Screen

(It’s worth noting that Apple built a special keyboard shortcut in to fix this setting because they broke it in the first place. Ctrl-F7 will toggle this setting.)

Image Credit: mrwynd on Flickr

Let It Go – Putting XP Out to Pasture

keep_calm_and_let_it_go_by_lordani0512-d6yfjy3On April 8th, 2014, Microsoft is ending support for Windows XP. After that date if you are still running Windows XP you will no longer receive security patches or other updates for Windows on your computer.

What does this mean?

If you still have a computer running XP it means that it will start to become less safe to browse the web and open email attachments on Windows XP than it is on Windows 7 or just about any other operating system. Your computer will continue to work, but in essence you’re now driving your computer without wearing your seatbelt. You might be fine, but you have an ever-increasing chance of catastrophe.

Why is Microsoft doing this to us?

One of the implicit contracts we make as users of technology is that it will need to be upgraded at some point. Windows XP is old. In software terms, it’s ancient. Microsoft has supported Windows XP for 12 years (that’s 56.4 in Internet years. As a point of comparison Apple launched it’s first version of OS X about 5 months before Windows XP was released. Apple is typically quite cryptic about their security policies but as a rule of thumb only supports an OS up to two versions back from the current one. That means that since the release of OS X 10.9 in October 2013 the following releases of the Mac Operating system are no longer supported:

With the exception of “Cheetah” all of these releases are newer than Windows XP and all of them are no longer supported by Apple.

What can I do?

Buy a new computer.

It may sound trite, but the simple fact is that for about twice the cost of a Windows upgrade you can get a brand new computer which in all likelihood will outperform whatever you’re using today. (If this isn’t the case for you, chances are you don’t have XP.)

Buying a new machine is hands down the best way to get yourself off of the Swiss cheese that is the XP security scene and into something else. Buy a Windows 8 tablet/laptop. Buy a Mac. Buy a Linux computer. Something. ANYTHING!

No. I’m stubborn.

If you can’t or simply don’t want to upgrade there are a few things you can do to protect yourself. They won’t be as good as running a modern operating system, but they’ll help.

Stop Running as an Administrator

You can stop about 90% of hacks in their tracks by running as what Windows calls a “Limited User.” While this is a bit less convenient for most people since it will prevent you from installing software or changing core system settings, it will protect you from the majority of attacks because it prevents you from installing software or changing core system settings. See what I did there? Yes. You are your own greatest threat. Follow these instructions from the Microsoft Knowledge Base to create a limited user account for your system.

Don’t Use Internet Explorer

Don’t. Simple. Download something else:

Use Firewalls

Windows XP has a built-in software firewall as of Service Pack 2 (released in August 2004). Make sure you have enabled the firewall. No exceptions. Also make sure you have a router on your network between you and the Internet. The vast majority of home routers (and home gateways) offer a hardware firewall which stops uninvited guests (hackers) from getting in to your computer.

Do I have a router?

On Windows XP use the following steps to find out if you’re running a hardware firewall. (It’s not 100% conclusive, but this check will give you the right answer in the overwhelming majority of cases.)

  1. Point your web browser to http://icanhazip.com/
  2. Make a note of the IP address.
  3. Click on Start -> Run
  4. Type cmd and press Enter
  5. In the resulting command prompt window type ipconfig and press Enter
  6. Look at the text on the screen, if the line “IP Address” matches what you have in step 2, get a new router.

Connection-specific DNS Suffix . : workgroup
IP Address. . . . . . . . . . . . :
Subnet Mask . . . . . . . . . . . :
Default Gateway . . . . . . . . . :

Bottom Line

Your computer is not going to explode and melt through your desk like so much digital napalm on April 9th. You are however taking your digital life in your hands every time you use the Internet by continuing to run Windows XP.

It’s time. Let it go.

Image credit: lordani0512 on DeviantArt.

Backup Your Crap

Backup your crap. Seriously.

If you have any data on your computer (or your phone for that matter) which exists in no other place, you need to back it up. Don’t tell me you don’t have time. You do. You could have done it instead of watching Seinfeld reruns on Netflix last night, but we all know how that ended.

I won’t even get in to the details of how to do a good backup right now. For now, let’s just worry about giving you the ability to have a second copy of your data in case your computer dies.

What is your data worth to you? How many hours would it take you to re-rip your CD collection? How hard would it be to track down all your old income tax data? How priceless are the pictures of your kids?! My guess is that you’d value each of those at well over the $85 it would cost you to buy an external drive and back up your stuff.

Don’t tell me it’s too hard. It’s not.

How to Backup Data

  1. Buy an external hard drive
  2. Plug it in to your computer
  3. Copy everything in your home folder to the drive
  4. On Windows
    1. Start -> Click on your name in the top-right of the start menu
    2. Press Ctrl-A
    3. Drag all of the selected items to the new drive in the left sidebar
  5. On Mac
    1. Once the drive is plugged in you’ll be prompted to set it up for Time Machine, click “Use as Backup Disk”
  6. Once it’s done eject the disk (on your Mac) and unplug the drive
  7. Move the drive to somewhere else in your house.

This is far from a good backup strategy. I’ll get into that in a couple of days. In the meantime, if you don’t have a backup get one. Now. Do not pass Go, do not collect $200. Backup your crap.

Ctrl-Alt-Delete – Rebooting Me

I sit here staring at a blank screen, a blinking cursor, and I wonder what I’m going to write about. There are a great many topics to choose from over the last year. Technical topics, personal topics, gadget topics, relationship topics, job topics the list seems almost endless. In a way that’s been part of the challenge for me getting content to post. Every time I come up with what seems like a good topic idea, I come up with 10 more that seem more important, or better in some way. Ultimately, if I’m going to write, I need to write; I need to put the fingers to the keyboard and make the clackety noise.


I’ve been lazy. There’s no other way to look at it. I’ve been afforded the ability to have a significant amount of control over a large portion of my free time and when I look back over the past few months I’m not satisfied with how that time was spent. What scared me into this realization is that I had let this sense of laziness become second nature. It had become my default mode of operation in many facets of my life, not just the blog. I had begun making excuses for not doing, instead of finding reasons for doing. Projecting my course out over the next 12-18 months scared me, and as much as I don’t like to be motivated by fear, I didn’t relish the prospect of where things were headed.

The Plan

I’ll be honest. I don’t really have one yet. I’ve started to make some progress over the last week or so, but it is something that will take continual effort in the coming weeks and months to not allow myself to slip back into those old bad habits. I’ve restarted (for the fourth or fifth time) David Allen’s Getting Things Done to help get myself get a handle on the multitude of work, home and technical tasks that I have going on around me. I’ve found elements of the system to be helpful in the past, and I’m hoping to (re-)implement a few more things this time around.

I’m going to commit to myself that I’ll get at least one blog post done each week for the next month. Making it part of my regular routine will help keep me organized, and develop habits of doing rather than of excusing… at least that’s the idea.

My Journey to Linux & OSS for Hacker Public Radio

I recently recorded and submitted my first podcast for Hacker Public Radio, which is something I’ve been planning to do for several months. I figured I might as well dump the transcript to the blog as well for those who don’t subscribe to HPR and/or are allergic to audio. Telling the tale of how you came to be an active user of Linux or open source software has become the de facto first show topic, so here’s my story.

Early Years

The first computer I ever owned was purchased second-hand from a local company who had recently upgraded their systems. It was a second-generation Intel Pentium system with precious few system resources. But it was mine… all mine. I played with it for a few months trying out different configurations, different software packages and of course different operating systems. I pretty well tried every OS I was familiar with – Windows 2000, Windows ME, Windows 98SE, Windows 2000 Server, Windows NT…

Anyways, after a few months of running it in its default configuration I became curious about Linux. I had seen the distro CDs attached to magazines and the back covers of “Linux for Dummies” books. I picked up a copy of Red Had Linux for Dummies and began my triumphant march into the world of open-source software.

Well, maybe it wasn’t so triumphant after all.

I was able to get the system to install but I had trouble getting it to recognize anything more than the most basic hardware. After a couple of hours I had a working system, with no network card, no sound card and no webcam. I poked around for a while but before the night was over, I was back into Windows and my Red Hat partition just sat there taking up space for a few months.

I tried off and on over the next year or so to get Linux working the way I wanted it. Red Hat 7 had drivers for my NIC and once I got online I was able to get my sound card working (no thanks to a half dozen people telling me to RTFM but not telling me where to find the m). Ultimately though, I didn’t find that Linux was going to suit my needs. As much as I enjoy a project I didn’t feel like I wanted to spend all my time just trying to get things working.

It would be years before I made another serious dive into the Linux world.

The Interim

While Linux wasn’t for me, at first, my interest in open-source software had been piqued. I soon discovered that there was a great deal of free software available for Windows as well. Sometimes you hear the long rants of people who try to insinuate that if you buy a computer with a proprietary OS, you’re also then stuck paying for your expensive proprietary software as well. as most of us know, that really isn’t the case. Whether it was the days of shareware and freeware available from all sorts of places during the 90s, or the days of open-source software in the 2000s, there has pretty well always been a way to get free or very low cost applications for nearly every platform.

A quick aside: when I say “free” throughout this podcast, I’m only speaking monetarily. I’m not going to make the distinction today between “free as in beer” and “free as in freedom”. It’s a complex issue that I just don’t have the time (or the patience) to get into today.

I began to really enjoy playing with various kinds of open-source software. Some of these are things that most of us are familiar with, the Firefox browser for one. Other applications that I picked up during this period are things that I continue to use to this day on the various platforms I interact with on a daily basis like Audacity. There are even a couple of open source apps that are only for Windows like Notepad++. There are even large corporations making light versions of their software available for those who can’t afford or can’t justify spending hundreds of dollars on a large commercial software package. Microsoft has been offering an express edition of its Visual Studio software development tool since 2005. While it doesn’t have all the bells and whistles of the commercial product it’s a very serviceable IDE for students and hobbyists.

As my usage of the Internet grew and grew through the 2000s I began to vary the technologies I use even more. I signed up for a web hosting account in 2005 with a company that provided me shell access to my shared hosting server. The server, running on CentOS, allowed me direct command-line control over some aspects of my hosting service. This became the first time I was able to use a linux machine effectively.

The Slider

Not long after this initial exposure to a practical Linux implementation that I could make use of and really enjoy, it was time for a new computer. I decided that it was time to move myself to an OS that had a nice terminal interface that I could use just like the one on my shared web server. One based on a foundation of a free UNIX based OS. I speak, of course, of the Mac. Despite my recent positive experiences with a server-side Linux implementation I wasn’t prepared to hand over my desktop to a Linux system.

I was, however, prepared to start offering Linux a role on the server-side of my computing life. I was in need of a file server, and a LAMP server to use for testing/playing so I decided to re-stage my old Windows desktop as a server running Ubuntu “Feisty.” In truth, this was probably more of a “test” server than a “production” server. By that I mean that I never really did entrust any of my data to it, and other than holding backups of data from the Mac and Windows machines in my home, this machine did little else. It did however set very important ground work that would be added to down the road.

As I mentioned in the introduction, I’m a software developer in my day job. My primary experience with software development is on Microsoft’s .NET platform. I’ve written code in several other languages over the years, PHP, Python, C and Java, but I work primarily with .NET in my day job so it was easy for me to turn that direction when I wanted to begin working on more software projects in my spare time. Since it’s easiest to work with that platform on Windows, I decided it was time for me to get a second computer, a desktop machine running Windows 7 that I could use for building applications.

Due to the age of my Mac, this became a second “primary” machine. I would use the two of them interchangeably and would need to move data between them fairly regularly. I had tried using the older Linux PC to handle this task, but at this point the machine was nearly a decade old and was starting to experience hardware issues, and the old 80GB IDE hard drives were getting a bit long in the tooth for me to have much faith in them. For the first year I ran the Windows desktop with some file shares open that I used when I needed to share data between the Mac and PC. As the year wore on, I found that I was doing less and less development work on the Windows box, and more and more web-based work from my Mac on the CentOS web-host. It was time for another shift.

This began my great Linux experiment. I had become very familiar with Ubuntu in virtual machines over the past few years. Listening to shows like the Going Linux podcast I kept hearing all sorts of good things about peoples’ experiences with Linux as a desktop OS. Having done my stint with a Mac I figured it was time to take another shot at using Linux on the desktop since things had undoubtedly improved during the intervening decade and my initial problems with RedHat would no longer be an issue. For the most part, that was exactly right.

I had initially planned the project to be three months long, but as I detailed in the extensive blog post I wrote at the time there were just too many issues for me to cope with. Not all of these were technical. To be fair some were the result of a major shift between platforms. But ultimately I decided that a Linux machine just was not a good fit for me as a primary desktop machine and the experiment was cut short after only three weeks. While it was very clear that you could do anything on a Linux system that you could do on a pre-installed commercial OS like Windows or OS X, many of these tasks required more investigation, adjustment, tweaking, learning, failing, re-doing, frustration and most importantly time than I was willing to commit. That may not be consistent with the hacker ethos but it was simply the way I felt at the time.

What I didn’t do was switch that machine back to Windows. I learned something very important about how I use computers. I needed a server. A good one. Something reliable, with a wide variety of software packages that could do the specific things I wanted. And I wanted something that could run with a minimum of overhead leaving all of the system’s resources for the services and applications that it hosted. For me, Linux is almost purely a server OS.

I’ve now been running a Linux server in my home full time since the conclusion of the experiment in 2010. The original server hardware has been donated to a family member and I recently did a server build (my first in nearly a decade) to assemble it’s replacement. It performs a number of services and tasks which keep things running smoothly and provide me with peace of mind as I carry out my day-to-day activities in the digital world. I may take the time to detail these in a future HPR episode. I have also changed hosting providers and now have a dedicated VM running Debian to host the various websites that I’m involved with… but that’s another show.

I remain confident that the day will come when a Linux distribution will truly challenge for a spot among mainstream desktop PC operating systems. Until then I couldn’t be happier with the performance of Linux as a server OS.

Python on OSX

I’ve just installed Python 3.3 on my MacBook Pro running OS X 10.8. By default, this version of OS X comes with Python 2.7. I would like my system to use the newly installed Python 3.3 as the default. The challenge is, that every time I type “python” from the command line I get Python 2.7.

I was able to trace the problem to Python 3.3 not having an executable (or an alias) called “python”. The executable is actually called “python3.3″ with an alias of simply “python3″. To get around this problem, I edited my ~/.bash_profile file to add an alias for python:

alias python=python3

Now when I type “python” (or a script invokes python) from the command line, it’s running the version I want.

I found the answer to my conundrum in this post on Stack Overflow.

Short Order Code #006 :: Proof of Concept vs. Prototyping

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Short Order Code album artContent originally published December 22, 2009 for the Short Order Code podcast.

In today’s show I wanted to touch on the concepts of “proof-of-concept” and “prototyping”. These two methodologies for attacking a software project are closely related in many ways, but differ completely in how they can be practically applied to a software development effort.

I’ll highlight a new project I’m working on and how that project inspired me to bring this topic today. I realized something that most people already know… or at least they think they do.

This was the final podcast for Short Order Code. It only lived on a few months, but I enjoyed making it. Ultimately audio was not the format best-suited for my software topics. Shortly after this I became a dad and priorities changed.

I hope you’ve enjoyed the series. Perhaps one day I’ll take to the mic again.

Short Order Code #005 :: Dealing with Code Inheritance

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Short Order Code album artContent originally published November 13, 2009 for the Short Order Code podcast.

This week I’m getting away from tools and plugins to get a bit more into the operational side of software. The topic this week is all about dealing with those inherited hand-me-down projects. I’ll offer some strategies on how to cope with these projects once they land in your lap, and a tiny bit of advice for those of you starting up new projects.

As always your feedback is very much appreciated, you can post it in the comments or follow the show on Twitter.

Short Order Code #004 :: Tooling for success – part 2

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Short Order Code album artContent originally published October 30, 2009 for the Short Order Code podcast.

After several long weeks, and a well deserved vacation Short Order Code is back with the second part of our look at tools to help improve your programming productivity.

This week I’m talking about tools that are a bit more ancillary to the development process, things that help you with the tasks associated with the other parts of software development that take place (for the most part) outside your IDE.

I’m going to try to keep the shows coming as regularly as possible for the next little while so keep your eyes open for the next episode.

Thanks for Listening!

Short Order Code #003 :: Tooling for success – part 1

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Short Order Code album artContent originally published September 11, 2009 for the Short Order Code podcast.

This is part 1 of a two part series on free plugins and addins for Visual Studio. Despite the fact that the Visual Studio IDE is one of the most feature rich out-of-the-box IDEs available there’s never any shortage of what developers wish they could do with their tools. Being developers, we can take care of that problem via the Visual Studio addins framework.

In this episode I’ll provide a brief overview of a few tools. This week’s addins include:

In part two I’ll talk about a few more plugins that you can use to enhance your Visual Studio experience.

Just a heads up, the next couple of shows are likely to be delayed since I’m on vacation. If I get a chance to produce episode 4 before I leave I’ll try to make sure someone puts it up around the right day. Otherwise the next show will be up as soon as possible after we return home.

Thanks for listening!