Working on a smaller machine

As a software developer I appreciate having good hardware. In fact, I appreciate having lots of good hardware as that best facilitates getting work done in a day.

Over my career I have evolved what I prefer to have for optimal work. I like to have a laptop on which I do “communication” work. So the laptop does email, web browsing, instant messaging, and whatever other administrata or time wasting I wish to do. Having it on a laptop is good because often such tasks require portability. I do set up the machine to also do development work, but it is not meant to be a primary dev machine.

I then like to have a very beefy machine for dev work. For instance, these days something like an 8-core Mac Pro with 10 GB of RAM and multiple internal hard drives works very nice. I also like to have multiple monitors attached to the machine because lots of screen real estate is good. Furthermore, it works better to have multiple monitors instead of one big monitor because there is often different logic that can be done based upon “screen 1” or “screen 2”, especially when doing things like debugging and needing to cope with the menubar and screen redraws.

Finally, I like having extra machines for whatever needs. These are often sandbox machines of various configurations that I can nuke and pave and do what I need to to help test, reproduce bugs, and so on.

So as you can see, I’ve found surrounding myself with a lot of machines is a daily necessity for getting my job done.

What happens when I’m forced to use a little machine for everything?

I’ve been temporarily reassigned to another group in the company that needs some help with their projects. Due to the nature of the products and the fact I like to keep very clean machines (sorry Unsanity; no Input Manager hacks here), plus given the nature of the work may require working in other locations, I requested they provide me with a laptop for dedicated use for this work.

I received one. A recent MacBook Pro.

15″.

Man, that’s small. Well, to me at least. 🙂

Compounding that is Apple changed some things in Snow Leopard to make stuff bigger. For instance, the default font in Xcode is Menlo Regular 11, instead of old Monaco 9 or 10.  I played with it some trying to pick other fonts or make things smaller, but I have to say, after I got over the initial shock my eyes do like the Menlo 11 better. But with bigger font means less content on the already smaller scren.

Then when I need to run Xcode for dev work, TextWrangler for notes and other things, Firefox to get into the bug database, and a few other apps… gah. Too many windows on that little screen. Sure I love Exposé and use it all the time, but it’s still a lot for that little screen.

So I started to use Spaces.

I toyed with Spaces before, but I just haven’t had a compelling need for it. I think it’s neat. I’m glad Mac OS X has it. But I haven’t been able to successfully put it into my workflow…. until today.

Turned it on, 4 spaces. Xcode on the main, TextWrangler “below”, Firefox “to the right” and since I prefer to use the keyboard I know the shortcuts to navigate around. Man… everything worked pretty slick. A few things were annoying, such as being on the non-Xcode space and then Xcode’s build window popping open on that space; it makes sense in a way, but it’s not what I want… I want to keep that app’s windows on that space. I wonder if there’s a way to force that.

I don’t know if I’d need to use Spaces on my big dev machine with the 2 monitors and lots of screen space. But on the little machine yeah, what a help it was.

OmniObjectMeter, I love you

Last night and this morning I’ve been dealing with some odd behaviors in the code I’ve been writing. I know it’s my mistake, the trouble is finding just where the mistake is. I spent time in the debugger observing behaviors that lead me to believe some object instances were not being released thus causing the side-effects I was seeing. As well, the lack of deallocation is a pure memory leak. So, find and fix the leak and many things should improve.

The current tool from Apple for finding memory leaks is the “leaks” tool of Instruments. I do think Instruments is cool and very powerful, but it’s also extremely obtuse and complex. It’s a tool that I don’t need to use all the time (in fact, rarely). Consequently what I learned the last time I needed it has left my head so I have to ramp up all over again. That’s just too much precious time spent, and too many brain cycles distancing myself from the problem at hand. Tools should not get in the way of solving your problem. Before Instruments, Apple had tools like MallocDebug and ObjectAlloc, which were useful and simpler tools but still weren’t the best in terms of interface and usability.

Some years ago I discovered OmniObjectMeter from The Omni Group. It was a godsend. It allowed me to pinpoint and track down memory leaks quickly and easily. It was so simple, so logical, so well thought out. It was easy to get going with it, it was easy to use it, and most importantly you could find your problems very quickly. Unfortunately OmniObjectMeter was left to languish and didn’t work for some time (there was a “secret beta” that helped it limp along). But I’m happy to report it’s back up and kicking with version 2.6 that was released February 2009. You see, I tried using Instruments this morning and while I could see the leak I couldn’t exactly pin down the location that caused the leak. I lamented for OmniObjectMeter, checked the Omni website on a whim, discovered v2.6, downloaded it, and within 5 minutes my leak was found, fixed, and verified.

That’s testimony. 🙂

I’m glad she’s still working. Plus, now OmniObjectMeter is free! I’m proud to say I paid for my copy (well, I got the company to pay for it) all those years ago. So FTC, yet again this is just a satisfied customer telling the tale of his happy experience.

The waiting is the hardest part.

With apologies to Tom Petty.

That’s all I’m doing right now. Waiting.

Waiting to see how much it’s going to rain this weekend.

Waiting for Apple Developer Technical Support to get back to me with answers to the problems I’m encountering in the product I’m working on.

Waiting for the updated documentation to be delivered so I can integrate it into the product.

Waiting for the work day to end so we can attend my church’s parish fair. Which also means about the only time with the Wife and Kids this weekend. So, waiting on being able to spend my time with my family.

Waiting for the main event of my weekend to start.

Just waiting….

As long as I’m thinking about the Combined Skills class….

What do I want to get out of it? Education. Tom Givens and SouthNarc are among the best in their field. I just want to learn. I just want to further my skillset. I want to open my mouth as little as possible and open my ears and mind as much as possible.

And if it’s raining a lot, that I don’t flub up my draws too much. 🙂

How to manage geeks

An article from Computerworld on how to manage geeks.

Speaking as a geek, I can say that article is sound. Old school management practices will not work. Once you understand the geek, you’ll see that typically the best thing to do is let them do their job… get out of their way, shield them from crap, do things to enable them to get their work done.

And then we shall… and it shall be productive and glorious. 🙂

Why did Apple do this?

No sorry… nothing about today’s Apple fan-boy event. More as to why I didn’t post much today.

Apple’s new OS version is 10.6, named “Snow Leopard.” Snow Leopard brought about a lot of under the hood changes to the OS. One of them is fairly well covered on this page of the Ars Technica review.

Basically, Apple did some stuff very very low level to help with reclaiming some disk space but also taking advantage of the volume format layout of HFS+ and how they can use that to their advantage to speed things up… RAM and CPU’s are wicked fast these days, and disk drives are still abysmally slow by comparison (physics can only go so far). So Apple did some neat things to improve speed and access times, and for the most part it works out great. Most people will never notice.

But in the line of work I do… I’m not most people.

The software I develop in my day job does a lot of working with the file system. So all of these changes that Apple made are actually wreaking havoc and hell on me right now. Long held maxims like a file’s logical size will never be larger than its physical size…. out the door. That calculating sizes is now base-10 instead of base-2 (i.e. 1 kilobyte is now being calculated as 1000 bytes instead of 1024 bytes)… changes a lot of things.

I’ve been reevaluating our entire codebase (which is huge) and this just doesn’t play well with us. All I can do at this point is formulate a lengthy email to Apple’s Developer Technical Support and ask for some help and guidance.

It’s been a trying couple of days.

I’m glad I have Kali class tonight. That should relieve a little stress. 🙂

Sick day?

It’s the day before a 3-day weekend, and I see the emails going about the office saying “so and so is out sick.”

Uh-huh.

4 day weekend? 🙂

Now I don’t actually doubt they’re sick. It is the start of the school year and thus begins the giant petri dish of illness. In fact, both Wife and Daughter have visited the new “urgent care” clinic down the road from us just this past week and are currently working their way through their antibiotics.

But it got me to thinking, like it does every year.

Sick days are a disadvantage to working from home.

When you’ve got something that’s bad enough you wouldn’t want to go into the office to spread germs about, but it’s not incapacitating sick, well…. you can still work. Is there expectation that you’d work? Maybe. I know I at least put that upon myself, and maybe because I’m home, I’ve nothing else to do, I’d likely sit in front of the computer anyways, so might as well be productive.

But it also means I rarely use my sick days in a day. I may still get sick, but no one’s going to get my germs anyways, so I continue to slog away.

Oh well. A minor disadvantage really. The fact that some days I’ve been able to program in my underwear, that works just fine. 🙂

4.5 out of 5 stars

I write Mac utility software for a living. A software bundle the company creates, CheckIt 2 Performance Suite, was just reviewed and received 4.5 out of 5 stars. The particular product I work on, Spring Cleaning, is the flagship software in that bundle.

What stood out to me in this review versus other reviews of the product is the reviewer seemed to look at the entire product and didn’t overlook key features. Many reviewers seem to only focus on the “pretty icons” and the basic tools, as if they just gave the product a 5 minute look over and then wrote a review. This reviewer appeared to fully examine the product and review based upon that:

Spring Cleaning comes with other features that are used to modify and limit how the other features work, allowing you to choose areas or files that you don’t want it to include. Finally, and very importantly, is the ability to schedule any or all of these functions to be performed automatically. For instance, it is probably a good idea to repair disk permissions once a month, and it is a good idea to allow the Unix maintenance routines to run. Using Spring Cleaning, you can easily set these up to automatically run when it works for your schedule.

Talked about things like Exclusions, and most importantly, the Scheduler. That’s one of the biggest strengths of Spring Cleaning, that you can easily set up automated schedules to keep your Mac running in top shape. As Ron Popeil was fond of saying, “Just set it and forget it!”

We understand a lot of functionality here is something an über-geek could do on their own, but not everyone is an über-geek. We strive to bring a lot of power and functionality “for the rest of us” so that anyone can keep their Mac running well.

I was just happy at the excellent review. Now go buy a copy and keep me in a job. 😉

Working elsewhere

I am fortunate that my job allows me to telecommute. I work from home full-time and enjoy it. I have everything I need, all the comforts such as listening to whatever music I so feel like and as loud as I wish. I have access to my wife’s awesome cooking. I get to be around my kids. Life is good.

That said, sometimes I need to get out. 🙂

I used to be able to go to my buddy W’s house. It was perfect. Interet access, comfortable digs, good food, and someone to talk to about work things which made it like a mini office setting. But W recently moved, so I no longer have access. Consequently, I’ve been wondering what I can do and where I can go when I need a change of work surroundings.

The key thing I need is Internet access, given the nature of my job. What’s cool is Austin has a great many places with free WiFi. I found a couple nice lists here and here. Trouble is, none of the spots are really ideal.

Some places are just right out. For instance, I will not go to the airport just to get WiFi access. Or some hotels may have free WiFi but you have to be a guest and get their passcode. So those places are out.

What does that leave?

The Austin Public Library, or restaurants and bars (including coffee shops).

None of this is ideal.

The library actually seems like the best bet. There should be electrical outlets to plug into. The place will be fairly quiet and conducive to learning, and some ability to be private. The downside is no food or drink. Plus if I had to take a phone call, I can’t easily do that.

Restaurants have pretty much the opposite problem. No problem with food or drink; in fact, I’d argue if I was taking up a table for a long time that I better buy some food and drink. If I need to take a call, no problem. Electrical outlets can vary (one nice restaurant near my house apparently has only one open outlet, up by the front south-facing windows… heat, glare, no workie). But it’s going to be noisy, especially at meal times.

Bottom line is, it’s good to see Austin is quite friendly and accessible. While much of this free WiFi may be limited for circumstances like mine, what it really shows is you can whip out your Internet-enabled phone (iPhone or otherwise) and do things. So while you’re having dinner, you could look up where to go afterwards. Or maybe you just want to see what traffic is like, or what the next showtime is, or when the next train/bus is coming. Having free WiFi “everywhere” is quite a boon.

Now I just need to find a place that can work for me.

Treemaps for space-constrained visualization of hierarchies

If the title made your eyes glaze over, no need to click this link to read Ben Shneiderman’s paper on treemaps.

I’ve been buried in working with them all day today at work. Just conceptual and design at this point, haven’t started to write algorithms just yet. It’s pretty cool stuff, at least for geeks like me.

Even if you’re not, the graphical representation of treemaps can look pretty cool. I really like these circular treemaps.

Who knew examining the composition and state of your computer’s filesystem could be so trippy. 😉

The Mac is dead. Long live the Mac!

So the next version of Mac OS X (10.6 “Snow Leopard”) is going to be Intel-only. That means those with the older PowerPC-based Macs are now left behind.

This is fine and good. The way Apple needs to move forward, they need to do it with the Intel chips. The old PowerPC chips just aren’t going to cut it any further, so it’s good for Apple to cut the losses.

I do wonder tho. In the keynote speech today Apple said after installing Snow Leopard that you’d regain a lot of disk space. My guess? The lack of the PowerPC portions of the executables. Makes sense to not bother shipping them any more.

These days for me to support PowerPC isn’t really a big deal. I work in higher level languages (C, C++, Objective-C, Objective-C++, Python, etc.) and I don’t have a lot of endian issues to deal with any more (e.g. we store things in neutral ways, like XML or plist-binary formats). So to deal with PowerPC is merely flipping the switch on the compiler to do ppc codegen. 

But it does mean that I need to buy a new iMac for the family. The old G5 one is certainly a relic now. I’ve always said with tech stuff that you should wait until the last minute to buy… wait until you absolutely must have it and can’t live without it any more for whatever reason, then buy and buy the best you can. Since there’s always something new and better on the horizon (and you know even better is just behind that, ad nauseam), that’s about the best you can do. I’ve put off the iMac purchase for as long as I could, and while I’m not rushing to The Apple Store to buy a new one, I know it’s coming.