Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Sunday, February 13, 2011

A Cheap Standing Desk for Programming

This would be an artist's interpretation
if an artist did it.
I keep hearing more and more about how we're all killing ourselves slowly by sitting eight hours a day. You can read one anti-sitting article here.

I'd prefer my tombstone not to say "Died from an overdose of sitting," so some time ago I purchased a BJÖRKUDDEN table from Ikea. At 40 and 1/8 inches, it is probably their tallest table. It isn't the perfect height for me, but it works.

I put my MacBook Air on a shoebox to get the display a tad higher, but I'd ideally like to get an adjustable arm to raise my laptop even closer to eye height.

Does anyone else have a suggestion for an economical standing desk hack? What other improvements can I add to the system?

Thursday, November 18, 2010

Developing Software on the new MacBook Air 13"

A few days ago, I shared the sad story of how my MacBook died, and what I was able to recover with my backup scheme. If you recall, I was scheduled to fly to Denver about 12 hours after my computer died.

Aside from the occasional bolts of panic zapping my brain, the flight to Denver was great. I'm a software developer; I'm sure pizza deliverators get the same anxious hollow feeling from a flat tire. Assassins probably feel the same pang when they toss a warm revolver into the river.

Lucky for me, the Boulder Marriott was only a few blocks from an Apple store. To make some lemonade, at least I would get to pick out a new toy.

The Thrill of the Hunt

My first night in Boulder, I spent about an hour comparing the 15" MacBook Pro and the new (note: at the time, the second generation Air was just out. The third generation has an even faster processor. The following link is to the third generation Air.)  13" MacBook Air. I knew that the Pro had a better processor, a better GPU, could hold more RAM, and had a few more features that made it more suitable for software development.

But the MacBook Air had SSD hard drive on its side. Where the Pro would take a few seconds to open any program, the Air opened even Aperture almost instantly. Academically speaking, I know there are operations which the MacBook Pro can execute faster than the Air. If you need pure CPU or GPU power, the Pro will do the trick. If the job requires a fast FireWire external hard drive, only the Pro will do. If the job needs more than 4GB of RAM, you need the pro.

But for the every day tasks I could test at the Apple store, the MacBook Air was the fastest computer I've ever used -- and the demo model only had 2GB of RAM. The (non custom) top-of-the-line MacBook Air cost about the same as the base-model MacBook Pro.

If I were Richy Rich, I might have considered buying a custom MacBook Pro with a SSD hard drive. But that would have been a $750 upgrade. Ouch!

The decision was tough, but I decided that I wanted the MacBook Air with 256 GB SSD hard drive, and 4GB of RAM. The speed was eye catching, and so was the size.

Missing the Shot

In a painful turn of events, it turned out the Apple Store did not have the MacBook Air I wanted in stock. I was initially told they were in stock. I thought I had the Air in my clutches. The employee was wrong.

All that time deciding, and I couldn't complete the purchase. I asked when they would get more in, but apparently Apple stores get daily mystery shipments of computers. The employees have no idea which models they will get on a day to day basis.

I needed a beer. Luckily Boulder is a beer town (in fact, I happened to be in town for the Beer Bloggers Conference). A bottle of Brew Dog 5am Saint and a bottle of Alaskan Winter Ale did the trick.

The Chase

I returned to the Apple Store the next two days. Boulder Apple Store finally received the model Air I wanted Saturday morning. The Air is probably the most relieving $1,700 purchase I've ever made. Now I just had to install some software.

The Verdict

Yes, the size of the Air is amazing. The thing is tiny, minuscule, a little microtomed slice of Aluminum. I actually worry that I should get a sleeve for the Air since it actually can slide into a tiny gap between the pads of my Kata camera bag.

One unexpected benefit of the size is that the wrist rests flow into a desktop much nicer than a standard laptop. When it rests on my desk at work, it almost looks like the Air is sinking into the fake wood.

The size is tricky too. My previous MacBook also had a 13" display, but the Air's display is higher resolution and brighter. It feels larger. Well, it feels larger until you close the lid. Then you wonder how a computer fits into a tea tray.

How about speed? I've had a few weeks to develop on the MacBook Air, and the thing is amazing. Jeff Atwood is correct, a SSD hard drive will change your life. Even the slow-poke Eclipse IDE gets to the workspace selection dialog in 4 seconds. Likewise, Xcode explodes onto the screen faster than necessary, about 2 seconds to open, 2 to open a project. Aperture 3 launches in a second or two. Builds are fast too, though I'm sure your mileage may vary.

Right now I have 13 applications open, including two IDEs. Everything feels zippy and fast. More importantly, I'm much less likely to get distracted while waiting for a build to finish or tool to launch. I love it!

I don't for a second regret getting a MacBook Air instead of a MacBook Pro. Tiny and fast? This is the future.

Amazon offers a newer generation of MacBook Air than the one I own. Using one of the links from this page will help support the site.


*Moving Average Inc. is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.com.
*Changed 22 March 2012 to add links to Amazon and explain that a newer MacBook Air is available.

Thursday, November 11, 2010

Testing my Backup Solution the Hard Way

P1020536.JPGThere are probably no sounds more terrifying to the heart of a computer nerd than the sound of a hard drive failing. Clunk clunk click click clunk.

That was the sad sound I heard the previous Wednesday night as I was copying an Aperture Photo Library off of my little white MacBook. That was the night before I was to fly out to Boulder Colorado for the Beer Bloggers Conference. Oh crap.

My stomach clenched and my heart dropped as I tried to remember the last time I backed up my computer. Maybe a week or two ago, but I wasn't sure. I had almost certainly lost something significant, but without pouring through my backup system I wasn't sure what.

My Old Backup Scheme

Jumping Sword
My old backup scheme involved using SuperDuper! to backup my startup drive every few weeks. The wonderful thing about SuperDuper! is that it creates bootable backup drives.

When my MacBook internal drive failed, I booted the same MacBook right off of the backup drive. At that point, the computer looked just like it did at the last backup -- an old copy of everything, but the computer otherwise worked normally.

I should say that the computer worked mostly normally. It now required a big, fat external hard drive dangling off of a firewire cable. My MacBook was anchored to my desk.

Most of my software development work is stored in a Mercurial repository. And most of those Mercurial repositories are regularly pushed up to Kiln. Even better, I had pushed my most recent changes in one project just five minutes before the disk bit the big one! Lucky, lucky, lucky me.

My photography and video work all end up on a Drobo after editing, and I was lucky that all my photo and video work were either on the Drobo or on the SuperDuper! backup drive.

There is a big hole in this old backup solution where I could have photos or videos on my laptop that aren't backed up anywhere. Alex Lindsay regularly says something like "your file doesn't exist if it doesn't exist in at least three places." By his standards, most of my files don't exist.

My documents and notes are almost all created using Google Documents or Evernote. Both of those services are "cloud" based, meaning that I worry less about losing them. I suppose that I really don't know how safe those solutions are -- I bet Alex Lindsay would worry more than I do.

What I Lost

Remember how I said that most of my non-photo and non-video work is in mercurial? The one thing I seem to have lost was about a week's worth of changes to my #BBC10 / unofficial Beer Blogger Conference Android app. I added a lot of functionality in that time frame, so it's frustrating that I didn't regularly push the code into a mercurial repository like my other work.

I'm not sure what I was thinking, but it probably was something along the lines of "Oh, I can put off opening a FogBugz account for Moving Average. Why, that would take a whole five minutes! What are the chances that the hard drive will fail in the next week or two?" Oh, cruel fates, I feel the hot gaze of your eyes now.

All things considered, I didn't lose too much. Losing the source to the #BBC10 app irks me, but I still count myself lucky. Very lucky.

The New Backup Scheme

Liquid Plasmoid Rocket
Obviously I've learned a few things during this incident, mostly that I need a automatic incremental backup solution -- one that is preferably stored offsite. I also need to ensure that all my software projects are regularly pushed into Kiln.

In terms of automatic update solutions, I'm currently looking into CrashPlan and BackBlaze. The both have inexpensive yearly cloud-based solutions. So far it seems that CrashPlan has better reviews, but I have a few concerns about the wording that CrashPlan is for "personal use only". Does that mean my photos or software on my computer won't be backed up because they might have commercial value? That's concerning.

In the mean time, all my software projects now have a home in Kiln. I run hg push a lot more often than I used to, and my Drobo will be getting my photos and videos at a faster pace. Thank goodness for my Drobo and it's terabyte of redundant storage. I'd still like to get the Drobo backed up to the cloud in case it gets stolen or my house burns down.

Final Notes

Ultimately I got what was left of my important data off of my Backup drive and into the cloud where I could get to it remotely. The outdated source for my #BBC10 app went into Kiln, as did a few other projects missing from the cloud.

I left for Colorado and the Beer Blogger Conference feeling completely naked without a laptop. I had an iPad, iPod Touch, and my HTC Evo 4G as data devices, but for software development and photo editing, those gizmos aren't very useful to me. Losing a hard drive hurts, and I spent a few days mentally kicking myself for not implementing a better backup solution.

Wednesday, October 14, 2009

StackOverflow DevDays Austin 2009

I volunteered at the StackOverflow DevDays Austin conference all day today. It was a blast, nerd overload. believe it or not, this was my first conference in my field. Previously I've only ended up at the conferences for other industries: the beer industry, the science museum industry, the restaurant industry.

The highlight of my day was talking to Joel and Michael, the founders of Fog Creek Software, and rock stars in the programming industry. Michael was very gracious, especially considering that it took me a second to realize he was THE Fog Creek Michael. Off with my head! We talked about Windsurfing and scuba and swimming with Whale Sharks. Scuba lessons are definitely moved up on my to-do list.

We also discussed programmers who resist taking their vacation. For some reason I'm fascinated by the concept of hoarding vacation. I've know a few engineers that do it, and some of them actually seem to feel guilty about using their vacation time. Michael seemed to be in my camp: everyone should get away from work occasionally and enjoy the other aspects of life.

I also asked Michael a bit about the Business of Software Conference. Michael 90% convinced me to buy a ticket, especially with the Startup BootCamp. The remaining 10% of resistance comes from the steep price. Nearly $2000 for the conference, plus $750 for a hotel, plus air fare. If it was $1000? I'd be all over that. I'm not sure how I might better spend $3000 towards the goal of becoming some sort of software entrepreneur, but then again, $3000 represents a lot of camera or windsurfing equipment. It also represents months of runway.

So, I'll have to think about that BoSC thing. Maybe I can find someone (or several someones) to split a hotel room with. That's what I did at the Great American Beer Festival, and it worked fine. Any other cheapskate boot-strappers out there? Let's combine our forces.

Chatting with Joel was a different story. I was worried that I would say something ridiculous to someone who was basically (through Fog Creek, the Joel on Software Blog, and the StackOverflow Podcast) a hero of mine. But we had a nice little chat, and I don't think I said anything too strange or incoherent. At least I improved over when Neal Stephenson signed my copy of Anathem: "I really enjoy your writing, blah blah blah." I need to find a book on how to talk to celebrities; I'm such a dork.

By the way, has anyone else noticed that Joel has become some sort of software magnate? He is associated with all sorts of interesting ventures: StackOverflow and its sister sites, StackExchange, the Make Better Software Training Series, StackOverflow DevDays, and the Business of Software Conference. Most of these look like gargantuan projects. Joel either must have mastered delegation, or he is utterly insane. Maybe Joel is the Wizard and Michael is the man behind the curtain. Maybe he is a more relaxed clone of Steve Jobs. I don't know, but Joel and Michael make me feel lazy by comparison.

I also got to chat a bit with Ryan Carson of Carsonified, the organizer of the event. Really nice guy, and a real get-your-hands-dirty sort of leader. He was out there helping to hand out sandwiches when the developer lunch mob took the caterers by surprise. Who doesn't admire that? I love working with people who contribute at every level, who remain gracious under pressure.

Grass Island BleachersOh, I think there were a few technical presentations at DevDays too. Actually, now that I look at the schedule, there were a lot of presentations. Eight presentations, three breaks. I didn't catch all of them since I was volunteering, and also because I was chatting with the various cool folks hanging around the lobby.

The presentations I did see were pretty darn good. Maybe in one or two I would have enjoyed seeing more code, and more demonstrations of the code. But overall the presentations gave a nice taste of each of the technologies. I wouldn't say that I'm ready to go make an app in a new technology, but at least I have a better idea of the big picture, and how some of the underlying code works. I only wish there was some central page to download the example code from so I could review it after the fact.

Perhaps my favorite presentation was from Jason Cohen of Smartbear Software. He fired off a nice speech concerning an intersection of humanity and technology: code reviews. I'm a big fan of code reviews as part of the development and team-building process. He had some cool data on the subject to justify the practice and provide some guidance on best practices. Imagine that: data influencing the development process!

Anyhow, Jason's presentation was a lot of fun. He also had a booth at the Austin show. They handed out lots of free books containing his wisdom on code reviews. I think you can order them free from Smartbear's website, a nice price. I got to talk to Jason a bit too, a really nice guy. He's quite passionate about software development, which makes me happy.

After the conference, the attendees broke into groups by interest: those going home, and those going out to eat together. I joined an intrepid group of developers for Mexican food, margaritas, and developer nerd talk.

Overall, I really enjoyed the DevDays Austin conference. It was inspiring to see so many folks doing great things with software, getting their hands dirty. In some ways, I was reminded of Maker Faire, which is always a good thing. I really hope to be back at DevDays Austin next year. In the mean time, I'll be at DevDays Seattle next week. See you there.

*Edited for clarity and punctuation 29 October 2009.