• Confusing user interface

    I've always been puzzled by dialogs that have OK, Cancel, and Apply buttons. This has been pretty typical on Windows and relatively uncommon in decent Mac applications. If a preferences window has these 3 buttons, what do they mean? If I click some buttons, hit Apply, and then Cancel, do the changes take effect? If I click some settings, and click OK, but don't click Apply, do the changes get applied?

    I would have thought that by Windows 7, this would have been resolved, but apparently not.

    iChat2.png

    I collect software and have seen lots of programs. I recently saw this in a Mac program.

    Screen shot 2009-11-10 at 10.13.36 AM.png

    Why this is in a Mac program, I have no idea.

    After looking into this a bit, a friend pointed out that Xcode also has an Apply button. Furthermore, the Xcode Preferences is a window and windows don't normally have OK and Cancel buttons. So it looks like Apple needs to look at its developer tools.

    XcodePreferences.png

  • The magic geek box

    My boss loves Velcro and has Velcro straps around every wire and has taken things to the extreme by creating a Velcro board that he sticks all his cables to and sticks it in his briefcase. While this looked a bit geeky, he always has the cable he needs. While I liked this idea, I thought that a closed case would be the better way to go so that the stuff wouldn't fall out when the board is pulled out.

    I picked up a small "ArtBin" box at Dick Blick art supply then used Gorilla Glue to glue the non-fuzzy side (I can never remember if that is the hook or loop side) Velcro (OK, maybe it wasn't Velcro brand) to the inside of the sides of the box. So now I can put all my cables and supplies in the box and have it neatly organized. I may look like a complete geek pulling out this box, but on my last 6 trips, I think I've used almost everything in the box. Here's what I have:

    This box is getting a little heavy, but it has been so handy to have all the pieces right at my fingertips. Some of my colleagues have looked at me funny when I've pulled out the box, but I know that they're jealous!

  • The end of unsized integers

    In recent versions of the Mac OS SDK, Apple has largely moved away from datatypes such as int and long as they have different meanings in 64 bit OSes. In a project I'm working on, this bit me twice recently. The first is that a UINT (the code was ported from Windows) was incorrectly typed to be a byte or a dword (2 bytes) when it should have been 4 bytes. If the type was a UINT32 (UInt32 in Mac speak), setting the correct type would have been easy and not confusing. Likewise, there was another case where a variable was typed as unsigned long long which was 8 bytes on a 32 bit OS, but 16 bytes on a 64 bit OS (if I'm off on the values, please forgive me). If it was specified as UInt64, that is completely unambiguous and a bug would not have occurred.

    So, this day forward, I'm going to do my absolute best to only use sized integers, like SInt32, UInt32, etc. where the exact size is specified. This will be much more important using both 32 bit and 64 bit versions of Mac OS X. Granted, for many developers, it still doesn't matter, but I've dealt a lot of USB communications and structures, so the size of the integers makes a huge difference.

  • The right tool for the right job

    It should be pretty obvious that you should use the right tool for the right job. Unfortunately it seems that when I do some home projects, I don't always have that luxury. Yesterday, however, was an exception. last week I bought a "fiberglass running kit" from Harbor Freight (I love some of the stuff you can get from the store, but I'm pretty careful about what I get as the quality of some of their products isn't great). I needed to run a new phone line to my entertainment center so that I could try out Oooma.

    I've run a lot of wire down this particular wall and struggled with many of the runs. A flexible fish tape is a bit cumbersome and not the ideal tool; that's all I had before, so I used it. Yesterday, I put together 3 pieces of the rod together, pushed it down the wall, went downstairs and was able to easily grab the end of the rod. I attached a Cat 5E cable to it and then was able to pull it up the wall. It was, by far, the easiest pull I've done. Why I didn't get something like this before is probably because I was too cheap, so I spent lots of time doing the work.

    Lesson of the day, don't be too cheap with tools.

    On the topic of the right tool for the right job, I was spoiled doing contract work where everyone I dealt with was pretty tech savvy. When we needed a tool to track issues for our projects, we found something and installed it. I've used TestTrack, Mantis, and Redmine as bug tracking/project management tools. While none is perfect, they are a huge help. Now that I'm no longer doing contract work, I'm finding that the tool of choice is Microsoft Excel. While Excel is a fine tool for some things, I'm not a fan of it (I haven't liked it since college when I spent far too much time using it to try to get results). I see Excel used for tasks that databases, bug databases, and project management applications were designed to handle. These systems are multi-user and allow people with access the ability to get up to the minute status on a project; Excel, of course, is static, and you can't get status of a project when you need it. You rely on one person updating it and sending it out via email or posting it on a Web site (the latter is actually much better than the former).

    This is not to say that there isn't a place for Excel in business applications, but it is not the be all, end all tool (so far I haven't found one).