Cool video of Steve Wozniak telling how he brought color to computing:
Technology
iPad
I’ve used Apple products most of my life.
It’s my preferred computing environment.
Tablet computers? I didn’t think it’d work out. Everyone tries to jam existing paradigms into a different piece of hardware and it doesn’t work. Apple doesn’t do that. They approach the paradigm from its proper place and try to develop solutions that work for it.
From what I’ve seen, the iPad should do that, very well.
It won’t replace general computers, like laptops and desktop machines, because it’s still rather a restricted environment, like the iPhone/iPodTouch. And I’m sure it still has to be synced and backed up to a desktop/laptop machine. But to have more screen space, to have more “on the go”. Books. Games. Videos. Books. Whatever.
Yeah… I suspect this is going to be a hit. There’s a lot that Apple seems to have gotten right about the paradigm.
All my kids and Wife already want one, each. 🙂
Oh it burns…
Satellite Internet. You are better than no Internet, but the latency… it burns… it burns.
Makes me so appreciate the wires I have at home.
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.
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.
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”.
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.
More about the iPhone dying
I mentioned how on Sunday my iPhone died, apparently of sudden and complete battery drain.
I’m still mystified as to why, but a friend read my blog posting and said he knew of two similar experiences. He said he believed the culprit at the time was a game called “Stick Wars Lite“. Funny he should mention that!
I was going to pick up foo.c to take him to the IPSC match but I arrived very early and didn’t know if he’d be up and about yet, so I pulled into a nearby strip mall parking lot and started to fiddle on my iPhone. To my surprise, foo.c pulled in next to me because he wa coming to grab some breakfast. I got out of the car and went into the shop with him. All this time the iPhone was in my hands. I heard some faint music and looked at my hand and noticed that the iPhone was still on and the screen must have been touched because it had brough up a game.
Stick Wars Lite.
I distinctly remember that game being active.
I then just hit the power button to put the phone to sleep.
Three people experiencing this? Might be more than a coincidence. However, I’m not sure that is the problem because I’ve attempted to reproduce it and it won’t happen (of course).
Nevertheless, I believe the phone did die because the battery was drained by something not playing nice and thus consumed all the power. One recommendation given was to never put your iPhone to sleep with an application active, to always go back to the Home screen before sleeping it. IMHO that should not be a requirement, or if it is then the iPhone ought to handle it automatically when you hit the power button.
I’ll keep an eye on things and if I can reproduce it, certainly I’ll report it to the developer. Being a developer myself, I appreciate it when people file (useful) bug reports, so I make sure to do the same for my fellow developer. Need a reproducible case first. 🙂
Random stuff
From today… just some random bits of things.
iPhone
I’m peeved that my iPhone went dead. I have no idea what caused the sudden drain of battery. Google turns up this isn’t an unheard of thing and hypotheses are some apps just are poor at battery management. That perhaps somehow I put the phone to bed with particular apps still running and someone sucked the battery dry. Don’t know, but oh well.
Managing Unknown Contacts
To understand the term “Managing Unknown Contacts” (MUC) see here or here. I failed at this this morning. *sigh* When I left the house this morning I stopped into the drug store to get some food and drink to eat during the match. When I went in I saw a girl (probably 18-25 years old) gathering her stuff on a bench outside the store. I go inside, do my thing, I come back out to my car and the girl approaches me. Initially I was stand-off-ish and unwilling to help her, but she ultimately said she just wanted directions. I answered her question and she went on her way. So, it was probably nothing.
However, I got in the car and realized I failed MUC. I didn’t move well, I didn’t use my hands right (e.g. fence), wrong dialogue. I know why: I was preoccupied with the match. Bad bad bad me. *sigh*
CHL
I am surprised at the number of people who have CHL’s but don’t carry. So… why do you have a CHL?
People at the match seemed surprised that I came to the match carrying and that I wanted to leave the match carrying. They were surprised at my carry. I was surprised at their surprise, and at their lack of carry.
I want to start asking people who have a CHL why they have a CHL if they don’t carry… and carry always (apart from legal or other such reasons).
Reloading
I got to try a Hornady Lock-n-Lock AP. I’m sold. No the Dillon isn’t bad, but there’s no question the LnL AP is evolution.
Walked away with a LOT of 9mm brass today (lots of people didn’t want their brass). Happy me.
Match People
I forgot to mention about the match. I was surprised at the level of shooters. I figured it was a local club and that it might not be that hot… maybe one or two guys, but that’d be it. I was floored at the number of people with “sponsor” shirts on, race guns, and other very serious gear and really into it. Lots of quality shooters. It was good to watch them and how they went about things, from how people choose to handle the course of fire (I like that about IPSC, vs. IDPA) to how they shot (e.g. the steady cadence in particular strings of the stage). Or just being impressed with how fast some of these guys are.
Family
I love my wife. She supports me. She is a rock for me.