iPhone Democracy

No, this isn’t talking about the way the iPhone App Store works….

Found via Reason, The Prometheus Institute has created DIY Democracy for the iPhone. App Store Link.

It’s actually a really cool idea. The only problem with the app is it’s currently California-centric. First thing the app does is ask for your location, but apart from that I can’t see what it really does that’s location-specific. Still, I’d like to think this is just a 1.0 thus the support is limited. I mean, coming up with the database of all the representatives and laws of all possible US (and global?) geographical areas is a monumental task. So I’d like to hope that as updates are released they’ll be adding support for more areas and that geographic selection will eventually be useful.

As well, in the areas discussing many rights, I noticed a distinct lack of discussion about the right to bear arms. I’m not going to read too much into it just yet, but I have inquired.

Browser Size

Google Labs has a tool called “Browser Size” to help you optimize your web page layouts. (h/t to Linoge)

It’s my plan to move my blog from wordpress.com hosting to being hosted at hsoi.com in the not-to-distant future, and something like the Browser Size tool can help me when I pick a new theme and layout for the blog.

So this is really just a glorified bookmark for myself. 🙂

iPhone Shot Timers

So now I see Taurus has a free shot timer app for the iPhone.

I already have the SureFire shot timer app. It’s not bad, but I didn’t have much success with it the time I tried it. It just didn’t pick everything up. I’m not sure if Tom was shooting faster than it could pick up, or if because of the tin roof over the shooting bay the echo muddled things up and it couldn’t pick it out. Of course Tom’s dedicated proper shot timer had no problems in the same environment. Still, you get what you pay for.

I’ll see about doing a review of the 2 apps one of these days.

Code Practices

I’ve been developing software over 30 years, 15 of those professionally. I’ve learned a thing or two from the real-world trenches, one of which is that all code written must eventually be maintained… probably by you. The more you can do to ensure your code can be understood 6 months (or more) later, the better (your) life will be.

But this is hard.

Not just whining that it’s hard, but it is a difficult thing to do because who can know what exactly you’ll need to know or care about during maintenance. And while you’re in the heat of the moment writing code, you may not consider everything that needs to be documented. This is why the best you can do is strive to write simple code, well-factored, and as understandable as possible from the get-go. Premature optimization is the root of all evil. Simple is good; simple is best.

Via Slashdot I see this article on Coding Practices. He raises good points, but at least in my experience it doesn’t always work out that way.

Continue reading

Dang DNS

For the most part, my hsoi.com hosting transition has gone smoothly. I really like my hosting company’s new system; so much better than the old way.

Thing is, DNS still has not fully propagated. *sigh* To paraphrase Larry the Cucumber “Don’t know; shouldabeenherebynow.”

Some of the wordpress.com and Facebook notification emails come in via the new system, some still come in through the old system. Some other emails as well (spam, who cares about). I look at headers and see it’s a matter of what server on their massive system happened to send the mail, but gosh…. wouldn’t you think they’d keep all of their systems somewhat in sync? Maybe, maybe not… maybe it’s outside of their control (they’re at the mercy of someone else for their DNS).

Looking at other stats for the old system, like web, there’s no more stats there since Thursday.

I just want to get this transition over and done with, closed off the books and moving on. Just got a lot of things on my to-do list and I’d like to clear this one off. Plus the more I think about it, I’m pretty sure I’m going to move my blog from wordpress.com hosting over to be hosted at my own system. The transition will be annoying, but long-term it’ll be a better solution and give me more functionality and options.

We’ll see how things go after the weekend.

Site transition

I’m about to move my hsoi.com domain and hosting.

A few years ago my hosting company added new systems that were more feature rich and lower priced. It’s been my intent for over a year to transition from their old system to the new system, but inertia is a powerful force to have to overcome. 😐

I’m finally getting around to it.

Consequently, emails to hsoi.com or other access to it may be up or down depending on how well the transition goes and DNS propagates over the next few days.

I’m still debating if I want to move this blog from here (hosted at wordpress.com) to the new system. I probably will, once I see how the new setup looks.

How do you people do it?

I am a Mac user. In fact, I don’t just use Macs but I write software for Macs as my chosen profession. I’ve been writing Mac software for over 17 years. The first computer I owned (well, parents owned it… first computer in my household that I had regular access to) was an Apple //e. I’ve been working with computers for over 30 years, and for the most part yes it’s been Apple-based. Sure I’ve used other computers and computing systems, but Apple computers and Macs are my mainstay.

Why do I prefer Macs? Because they are elegant, beautiful, “they just work”, there’s a familiarness in their use and design. Like any good tool, the tool should enable and enhance your ability to get work done and should not get in your way. This is the Mac User Experience. Granted, it’s not always perfect. Apple themselves have changed and refined the OS over the years, with some stumbles but some great strides too. Certainly you encounter 3rd party software that can be wonderful to use, and some that can be amazingly painful to use. Usually I’ve found the painful stuff is written by people who think they’re just writing software and don’t fully grok the notion of “user experience” and what that means and why it matters.

That’s why I write today.

I’ve been temporarily reassigned to another project within the company I work for. This particular piece of software exists on both Mac OS X and Microsoft Windows. For the most part, that it exists on Windows matters not to me. However, I was just given a couple bugs (I didn’t write them, but I get to fix them) to investigate that necessitate the use of Windows.

I haven’t had to run or really touch a Windows box in over 10 years. Oh sure from time to time I have, at a friend or relative’s house, but in general I just have no reason or need for it. Thankfully the company has copies of VMware Fusion and some pre-made “virtual disks” with Windows XP already installed. A few hours of file transfers later (the VPN is slow) and I was up and running with Windows on my MacBook Pro.

That’s where the pain started.

How in the world can you people use Windows? 🙂

Apparently the XP installs were fresh installs, so upon first login I get bombarded with questions. Little balloons popping up everywhere trying to be helpful but only serving to overwhelm me with a desire to put my fist through the screen. You close one and another one immediately pops up, again, and again, and again, and a-fucking-gain. Oh hey it noticed some sort of hardware, tho I don’t know what, and it’s trying to help me cope with it but doesn’t tell me what it wants to cope with. And the stream of dialogs and “helpful” things just keep coming like and endless parade.

MY GOD WILL YOU SHUT UP AND STOP TRYING TO BE SO FUCKING HELPFUL!

The thing is, I’m a computer savvy person so I understand a lot of what’s going on and why. But I step back and try to look at this experience from the angle of someone like my mother, and I just cringe. No wonder she has to take her computer into the shop so often. No wonder she spends so much time on the phone with tech support. What a nightmare! And all I’ve done so far is log into the machine!

Yes, I’ve been away from Windows that long. I wish it could have been longer.

The I run some installers and wow, talk about more unfriendly and bizarre designs. I know some of this is merely because it’s the devil I don’t know… because it’s “not Mac”. Ultimately however it’s not that. It’s about poor user interface and user experience considerations and design. Granted it is not easy to do, to make something so complex, so technical, into something that just anyone can use. But I do like to think Apple’s done a pretty fair job with that.

I just cannot see how people can use Windows and enjoy it. Most people have to use it because work requires it of them, and then they use it at home because it’s the devil they know. As well, I know most people just aren’t into computers as much as I am so it’s not something they think much about. Or the old stigma’s remain about Macs that keep them away. It’s all about inertia.

I have to use Windows for a little while to deal with this bug. Thankfully it’s only for a little while. 🙂

If you want to learn more about interface and user experience design, check out stuff from Bruce Tognazzini and Jef Raskin. In fact, here’s a great little article by Jef on Tog’s website, about “intuitive”.

Death March (software)

If you work in the software industry and don’t know what a “death march” is, you need to learn.

Check out Edward Yourdon’s appropriately titled book, Death March for more on the topic.

You can’t work in this industry and not read that book.

Better than setuid – BetterAuthorizationSample

While scanning my RSS feeds I ran into this post from JongAm. It’s in Korean so I really don’t know what he’s talking about specifically, but generally I can tell he’s writing about Mac OS X’s authorization mechanisms. (BTW, I love that URL’s and such don’t choke on Hangul).

There’s something at work I’ve been fiddling with the past some days. The issue is that something has to be done and that something requires authorization. Unfortunately, due to how things can work under the hood by the drivers and the OS interacting, it’s possible things could change and thus require the user to authenticate again. This is not a desirable user experience because the need to re-authorize is an under-the-hood detail, not something the user would be aware of. Thus to the user the user experience is randomly, or not, being asked to reauthenticate. Not good.

So what’s the solution? The original thought was to create a little helper tool app that would have its setuid bit set and be installed as root, thus the user would have to authenticate at most one time and the little helper tool would then be authorized “forever” to do the necessary voodoo. A reasonable thing. And setuid tools are not a new concept and are well-established, but still they’re considered tricky and risky because you’re still running code as root which opens up all manner of security issues.

As I searched around for information, I came across Apple’s BetterAuthorizationSample. Obviously written by Quinn (thus you know it will rock), it’s provided as a way to achieve the same results as a setuid tool but in a safer way by use of launchd. What’s even better is BAS provides a library and mechanism to make it easy for you to utilize this functionality in your own code. There is step-by-step documentation that walks you through the whole process, and of course a sample app to demonstrate various levels of complexity. For more information, read the ReadMe, the Design and Implementation Rationale, and the lib HOWTO.

Getting it up and running in my app wasn’t too difficult a task. Just follow the HOWTO guide. It does take a little bit to wrap your head around it all just because there’s a lot going on, but the documentation is thorough and complete. Just do as it says and you’ll be up and running. Works great in my app. I’m pleased.

I will note that if you don’t have an uninstaller for your application, this is one situation that might find a simple uninstaller to be a welcome thing. There are not only files in odd places to remove, but also you will need to unload the Launch Agent from launchd. There’s also the question of removing the entry in /etc/authorization but there’s really no good way to do that. Still, something you need to consider.

All in all a fantastic bit of sample code, and while not necessary for all authorization needs, if you are considering writing a setuid tool for Mac OS X, you should look at this mechanism instead.

Good stuff. Share and enjoy.