Category: general

Pair Programming Without The Bad Breath

Let’s say you are working from home, but you need to do a code review or want to do pair programming or something. I was in this situation last week with a good friend. He lives about 45 minutes from me and neither of us were really in the mood to do any driving. We are both working on macbooks. I was planning on driving the programming session, so he put together the following instructions for setting up SSH access to my computer

Steps for setup:

  1. Open TCP port of your choice on the router and forward that to port 22 of the IP for your Mac (ifconfig @ command prompt, or use the network control panel to get your IP).
  2. Create a user/pwd that I can use to connect with in the Accounts Preferences Panel*
  3. Turn on Remote Login in the Sharing Preferences Panel (System Preferences).
  4. Turn on Screen Sharing.
  5. Add that user to the list of who can connect in the Allow access list box.
  6. Go to the Firewall preference panel and click on Advanced… Ensure that ssh is allowed through.

Finally, I gave him my IP address and his account information and he logged in through SSH, started screen sharing and was then viewing EVERYTHING I was viewing on the screen.  We also started up iChat and started a voice chat through our AIM connection.  The sound was actually very good and the screen sharing performance was also very good.  My friend said he could see the change on the screen as soon as he heard the key press through the microphone.

In order to connect, he issued the following command line.

ssh -p <yourport> -f -L 1200:localhost:5900 <iphere> sleep 10 ; open vnc://localhost:1200

where <iphere> is replaced by the ip address I sent to him, and <yourport> is the port specified in step one.  Note that the username I setup on my machine was the same as the username he uses on his machine so he didn’t have to specify a username at login time.

We worked for about 3 hours this way, talking and programming without any issues.  Will it 100% replace in-person pair programming or code reviews, certainly not, but I plan to use it a lot with my buddy.

*You probably shouldn’t be sending the username/password combination to your friend through email or something like that.  I called mine to give him that sensitive information.

Why I left Ubuntu for Windows 7

After about 18 months of having Ubuntu (8.04, 8.10, 9.04) as our main home computer operating system, I recently formatted the drive to use as an application drive for my Windows 7 Home Premium installation.

When I first started with Ubuntu I was quite excited.  I’m not a linux guru, but I am able to get around a bit.  I had a couple of issues right off the bat with the installer, but a little google and 20 minutes and I had it going and installed.  I was also able to configure grub to dual boot to a windows XP installation on a separate physical drive.  Everything was awesome.

My wife and kids had no problems adjusting to linux instead of windows.  I was able to just show them the link for firefox and open office and they were able to do everything they did before.

Well… mostly.

Anything requiring Flash (which the kids did a lot of) was a bit of a pain, sometimes it worked, most of the time it almost worked, and sometimes it failed completely.  I was finally able to follow some directions online and remove all the crap fake Flash that shipped with the machine and install the real Adobe Flash 10 player beta for x64 based linux.  Things were much better then, but performance still was not acceptable.

Next, I wanted to update Open Office.  Again, plenty of reading online first and I was able to update it.  Then, when I updated to a new version of Ubuntu, it messed up my Open Office installation.  A bunch of apt-this and apt-that and it was resolved and I was able to install and use the new version again.

What about eclipse?  Much the same.  The latest version never seems to be officially supported, so I had to do some manual crap to get it working correctly, but it was one of the easiest.

How about gaming?  Well, why do you think the kids were using flash so much?  They found some games they liked online and would play those because there really weren’t other good options for playing games on linux.  Yeah, I know about wine and all that emulation stuff, and it worked about as well as the fake Flash crap.

Hardware and Accessories?  How about a TV tuner card from THE tv tuner company Hauppauge.  I couldn’t get it easily working in order to capture our old VHS tapes to the hard drive, and obviously none of the software shipped with the card would work on linux.  I had to boot to windows to do any of that stuff.  I bought a drawing tablet with a pen.  Did that go flawlessly?  Not even close.  I spent multiple hours trying to get it working.  I had to use a driver that wasn’t written for my particular tablet (Genius Mousepen) and do a bunch of manual configuration by following the notes in some nice person’s web page.  After all that work, it only worked for my user.  I wasn’t sure which of the steps I followed could be modified to get it working for multiple users.  I finally gave up and once again booted to windows whenever I (or my daughter) wanted to use it.

So, why did I go to Windows 7?  I just don’t think Linux is ready for the consumer desktop.  Canonical has made a huge effort and major progress in that area with Ubuntu, but there still isn’t enough support from major hardware makers, much less minor hardware makers and even major software makers.  All the things I wanted to allow my family to do were MUCH more difficult in linux than they were in windows.

I was very pleased with the stability of the OS, and the resistance to trojans and viruses, and if I could install it on my work laptop, I would in a minute.  Also, if the ONLY thing you are going to be doing with a machine is email and office type applications, then I can also see linux being a good fit, as in a netbook.

I don’t believe I will try linux on the desktop again for a few more years in a consumer role.  I’m sure there are some linux gurus out there that can give me pointers on how to fix all of the problems I’ve listed above, but that kind of proves my point.  I don’t need to talk to a windows guru in order to install my drawing tablet.  I plug the tablet in and it works, even though it is a small brand.

I will be interested to see how Windows Security Essentials does in handling the viruses that I’m sure my kids will bring into the home no matter how many times we talk about being a safe internet user.  That’s pretty much the only downside I can think of right now, and it’s unproven so far.


I found recently that my eyes were getting extremely tired at work.  After a few hours on the computer, while I wasn’t sleepy tired, my eyes would just ache, itch, droop, or water.  Some time ago my eye doctor told me to do the 20/20/20 rule for my eyes.

Every 20 minutes, look at something at least 20 feet away, for at least 20 seconds.  This is supposed to keep your eyes from focusing too hard on one thing for too long and getting fatigued.  Unfortunately, when I get deep into a programming task, it’s hard to remember to look away every 20 minutes.

Another tool I installed last week that seems to have made a significant difference is f.lux.  Someone on or slashdot or something mentioned it so I checked it out.  In the week that I have used it, I have found that my eyes are not nearly as tired as they used to be.

At first, I was a little put off by the pee-pee yellow color of the white’s on my LCD monitor, but after only a few hours I could tell a difference.  You can configure it to your liking, and disable it if you need to.  I set the daytime levels a little lower than the default.  I don’t really use the ‘daytime/nighttime’ settings, and I’m sure I could manually tweak my monitor to match the output I get from F.lux, but by simply installing the software I didn’t have to mess with that.  It also works on any monitor I hook my laptop up to, so I don’t have to manually configure each monitor.

If you find that you get dry, tired, itchy, or watery eyes after a few hours in front of the computer, give F.lux a try and see what you think.


Hello, I’m Joel. No, I’m not THE JoelOnSoftware Joel. Just Joel.

Anyway, as I work I find various problems that don’t seem to be well documented on the internet. For years I’ve been googling subjects on the internet to solve problems I’m currently facing in my development efforts, whether commercial or private. Occasionally I’m able to solve some of these problems by taking information from a collection of sites. I figure it’s about time I start giving back. Many of my blog posts will have very specific information for very specific cases, but I just can’t imagine I’m the only person facing these problems.

Currently, I’m working with

  • Java
  • Spring
  • Hibernate
  • Glassfish
  • Eclipse
  • Maven
  • JSF
  • Facelets
  • Liferay
  • JSR-168
  • JSR-286

So most posts will probably deal with those subjects unless I finally start writing my XNA game for Xbox or start playing with the Google app engine.

None of the information I present will ever reflect the views of my employer, nor will I release proprietary code. I hope to get a REAL first post up before too long.