Programming

Today’s tip, as most of these prime numbered tips, comes from something that was a default years ago that I stuck with.

Put your build output in an edit window.

Most programmer’s editors or IDE’s relegate the output from a build to some sort of tool window that is typically in a tab group docked a the bottom.  This is how SlickEdit works by default, because it is what is expected today.  Sometimes you have to jump off the bridge because all of your competitors did.  But that doesn’t mean that is the most powerful way to work.

Try right clicking in the Build tab and selecting “Send Compile Output to Editor Window”.  This means the build window (what we call the the “concurrent process buffer” or simply ”process buffer”) is in the ring of open files when you cycle through them using the next-buffer/prev-buffer commands, or pick one from the Files tool window.  This is actually very powerful.  At first it may seem that you can’t move freely, but you can.  The cursor-up key will cycle through the command history by default, but clicking the mouse or using a non-cursor key to move (page-up for example) will allow you to move freely through the output, or delete it by hand.  I find this much more useful than trying to view my output through a porthole.  Try it out and let me know what you think.  You can always turn this off by right clicking in the Build tab (or the process buffer) and turning off “Send Compile Output to Editor Window”.

Guys usually get the shorter end of the stick when it comes to Valentine’s Day gift-giving. The best we can usually hope for is to be allowed to sneak a couple chocolates from the heart shaped box we overpaid for. But if the Techo-Universe at large wanted to be my Valentine, here are some thoughtful, if not realistic gift suggestions.

  1. I would like Time Machine to not start up right away as soon as I log on. Please, please allow me to fire up Outlook, start a Terminal session, and fetch the latest from subversion before you start monopolizing the disk I/O.
  2. Non-silent ‘everything’s OK’ compile output. Some compilers and linkers do a decent job of this. Some report useful things like “All files up to date”. It’d be great if all command line tools did this.
  3. Some helpful hints when it’s time to create a new password. Every couple months I am forced to dream up a new password, something sufficiently secure but easy and fast to type. Perhaps an interface similar to Captcha prompts? Give me a couple suggestions that already meet the password complexity criteria.
  4. Rechargeable batteries for my Magic Mouse that actually hold a charge for more than 1 week.
  5. A release of Java that is free of Zero Day security flaws.
  6. Ditto for Flash…
  7. …and Internet Explorer
  8. An e-mail client feature that automatically truncates replies. All we really need are the most recent 3 or 4 responses of a long-running back-and-forth e-mail thread when composing yet another reply. I can’t remember if it was web-based gmail or the Mail app on my iPad that did this for me recently. I sure wish this was everywhere.
  9. Selective Bookmark Syncing. There are some links I’d like to have everywhere, and there are some links I have at the office that I’d like to show up on my home devices (and vice-versa). But it seems that most current implementations are an “all or nothing” affair.
  10. A Seat Belt detector for my phone. I can’t count the number of times I’ve gotten to the first traffic light on my way home and remembered that I’ve left my mobile phone in my front pants pocket. Perhaps a clever trick could be done with the accelerometer to detect the motion of getting into the driver’s seat.
  11. A big red reset button. When you’ve got a runaway process that’s hogging all your system resources, how do you stop it? Right, by invoking the Task Manager or Force Quit dialog, which itself requires resources. It’s a huge chicken/egg problem. In my grade school days there was this awesome red button on the TRS-80 (complete with ergonomic recessed finger tip dimple) that would reset the system. How about something similar that would would kill everything except kernel and OS processes?
  12. Stretchy Cables. Ok, so this one’s a little bit strange. But it sure would be convenient to be able to stretch a cable to exactly the length you need. Right now on my desk I have a headphone cable that is much longer than needed to reach from my speakers to my head and a power cable on my MacMini that is just a teensy bit too short for where I’d prefer to position it relative to my UPS. The only perfectly sized cable is the USB cord that reaches from my keyboard to the back of the computer.

Did I miss anything?

The third installment of my version control manifesto is a short story made long with a simple moral at the end.  If you’d rather skip the story, just read the title and take that to heart.

Recently what started as a lovely afternoon at Guitar Center ended with me changing a car battery in a parking lot after dark.  On New Year’s Eve.  I’m not really complaining.  I’m not that handy, so when I can fix a car and look manly in front of my family, I’m pretty happy to do so.

Fortunate as I am to have a good job, I can drive cars that are just new enough I don’t carry tools in the trunk anymore.  Just emergency reflectors and jumper cables.  This is fine because:

  1. As acknowledged above, I’m not that handy.
  2. You can’t do anything to cars yourself anymore. Changing spark plugs on one of my cars requires removing the intake manifold.

Despite my best efforts with jumper cables, I could not get the car to start.  So, I found myself at Walmart buying a battery and asking if I might borrow a wrench, because even though I went home and picked up tools, I couldn’t fit a ratchet and socket into the space I needed.  The gentleman went to the back and got me a side-post battery terminal wrench:

This is a 1/4″ ratcheting box end wrench.  The handle is short, so if you slip, it should not be long enough short between the two terminals of a car battery (yes, I have done this with a ratchet before).  Also, the handle is insulated so were you to do that, hopefully it still won’t short anything out.  It is flimsy (as wrenches go).  It says right on it not to use it on anything except a battery terminal.  And that flimsiness serves a purpose.  Car battery terminals are made of lead, so you don’t want to over-torque them.  Also, because it’s flimsy they sell for about $5, which means I was happy to just buy one so I could throw it in the trunk when I was done.
This little tool is genius.  Why?  It does not try to do too much.  It is an affordable solution for a niche use.
So, if you’re at home in your basement writing the next big version control system:
  1. Don’t try to do too much.
  2. Stop.  There are enough out there.  We talked about this already.

There are larger systems out there have their own file systems and work well when developers are distributed across multiple sites.  That’s fine.  This doesn’t mean that to win my seal of approval (which I know is all the rage in the version control world) your system needs to scale things back to the features of RCS.  It means that the interface should be straight forward enough that a user can figure out the basic features common to all version control systems without trying too hard.  Diffing a single file, viewing a version of a single file, viewing the history for a file, checking in a file – these should be easy.

Have I overlapped another episode of the manifesto?  Perhaps.  But

  1. In general, manifestos are supposed to be long rambling documents written by the semi-crazy, and it seems like it’s OK to repeat myself.
  2. This particular issue is this important.

Don’t believe me?  You can’t figure out how I could possibly be right, and you be wrong, given that I’m toiling away in a cubicle filled with years of so much junk my desk is nearly unusable, while you are on the precipice of taking over the version control world? OK, let’s take a look at what happens when you try to do too much. A great idea, years ahead of it’s time that just didn’t catch on.  And still hasn’t. Ladies and gentleman, I give you Aerocar:

What are the most important methods of travel in our modern world? The automobile, and the airplane.  The automobile, an amazing invention that let’s us live 30 miles from our office, or go to the store when we need something, even if it’s dark already.  I am told before the automobile was invented people got along somehow.  Personally I don’t even like to think about it.  And don’t even get me started on the airplane.  Without the airplane, my children would never have seen Disney-world – because I could never handle that drive (not with my kids anyway).  It’s just like a big, fast, car in the sky.  And like an automobile, practically anybody can drive one – provided you have hundreds of hours of training and understand that in an airplane when you have a “fender bender”, everybody dies.

But what happens when you get where you’re flying?  If you left home, you probably left your beloved automobile there.  Well not if your airplane is a car.  A car that is an airplane. An airplane that is a car.  It’s like peanut butter and jelly.  No, it’s even better than that.  It’s like peanut butter and chocolate.  So why did I embed a video from when people got their news from movie theaters because 24-hour television news channels did not exist?    More recent films of Aerocar exist.  But the truth is they don’t matter.  Why?  Because it’s a car that is an airplane.  It’s not just a chance crash into another car on the highway at 70 miles per hour.  It’s a chance to hurdle out of the sky at terminal velocity into cars on the highway that are doing 70 miles per hour.  It’s not like peanut butter and chocolate.  It’s like alcohol and power tools.  Let’s put safety aside for a moment.  As a car, it makes the Edsel look attractive.  And to be effective as an airplane, you have to bring a small trailer (just about the size of an airplane wing) wherever you go.  It tried to do too much.  So you can go see one of the six that were built at various museums around the United States.

I’m a guy.  I love tools, whether I need them or not.  I love a lot of things that don’t make sense.  I love sledgehammers.  I love drag racing – because I can think of no pursuit more ridiculous pursuit than going 1/4 mile in a straight line as fast as possible.  Naturally, I love this thing.  If I have to check out of this world, I can’t think of a better way than crashing a flying car.  There would be no terminally ill men in this country if crashing a flying car were offered as a method of euthanasia.  But it was the best thing I could come up with to make my point.  A tiny motorcycle that fits in your plane is a more practical idea.

To sum up:

  1. Don’t try to do too much.
  2. Stop it!  There are enough version control systems in the world.

Next Page »