07 December 2009

iPhone Developer Booted Over Fishy Reviews

Looks like someone got caught cheating with App Store reviews, and Apple pulled their 1000 apps! Everyone tries to game the system, but most of us work within the rules (and not just the official rules, but also the rules of decency). I’m pleased to see Apple take this step (even if they didn’t do so proactively), which makes things more fair for the rest of us.

06 December 2009

Game as Art

There’s a lot of art that’s powerful and moving and you really want to experience, but would never hang in our living room. Brenda Brathwaite’s Train is such a work, but it’s a board game. I haven’t played it, but it seems like it would be cathartic in the sense that Aristotle used in his Poetics.

29 November 2009

Jigami Is Available!

I had set release for 30 November, and figured that was local time (since this evening I could tell that the app was available in Australia but not here in Seattle). But as of about 20:00 PST, Jigami is available in the App Store! If you have an iPhone or iPod touch, check it out! Players of the original Newton version were asking for this, so you know it’s addictive.

App Store Approval

The Jigami approval process went pretty smoothly. I submitted my final binary on Monday night, 16 November. The following Monday morning, 23 November, it was “In Review.” And on Wednesday afternoon, 25 November, it was “Ready for Sale.”

I didn’t want to release it right before Thanksgiving (and before I had my marketing ready), so I’d set the availability for 30 November. In parts of the world, it’s already on sale!

Obviously I’d prefer it if it didn’t take 8 business days to approve a board game, but Apple did live up to the “within 14 days,” and didn’t come up with a reason to reject it.

So for me, the approval process is not ideal, but is working.

16 November 2009

Jigami History

At long last, I wrapped up my first iPhone application, Jigami!

Looking at my notebook, the earliest record of it I can find is from 10 December 1991. I had apparently done a Mac prototype by February 1992, and continued to refine it (the next version I saved is from February 1993).

I took about 3 days to port it to NewtonScript in August 1993, and then Scott Shwarts and I polished it. As near as I can tell, we finished it in December 1993. Apple briefly published it as Jigsaw Strategy Game, but then decided they didn’t want to be in the game business, and we got the rights back and distributed it ourselves for a while.

The game was always intended for a handheld device, and in October 2008 I started an iPhone version. I got it working, but the UI wasn’t quite right. The original Newton version used a stylus, so you simply touched a piece and moved it directly. But doing the same thing with your finger meant you couldn’t see the piece you were moving. This is pretty important, since you need to see the shape and symbols. It took me a while to finally accept that the piece had to be moved out from under your finger. Suddenly the game became fun again.

I thought it would be cool to rotate with a gesture, and managed to get this working. But it nobody liked it, even though you could rotate by any amount (±270°). So I implemented a second tap. Everyone preferred this, even though rotating could now take up to 3 taps.

Autorotation was suggested by someone at the Casual Connect conference (sorry, I don’t remember who to credit).

The game was now better than the Newton version, but it still needed a lot more polish. I put in two more AI levels and a bunch of animation. Finally, I got Dalton Webb to do professional artwork. (You can see some of the art progress at the A Sharp Facebook page.)

The original game was available in English, French, German, and Japanese. Unfortunately, I couldn’t just use the original text, because minor things had changed. I didn’t get all of those in the first release, but Laurent Aillet gave me a French translation, and I hope to get more.

I actually submitted the game to the App Store last night, but one of my testers just sent me a crash log and I was able to figure out that it was not the crash I had fixed. Although it seemed to happen only on 2.2 devices (which are a definite minority), I thought it was worth getting right. So I rejected the binary, fixed the bug, and resubmitted it.

That puts me back at the end of the queue, but the silver lining is that I was able to submit French keywords (I had forgotten to get them localized). This is one piece of metadata that Apple doesn’t let you change at will.

Hopefully I’ll have the end of the story in a few days: release. Well, really it will be a new beginning, since I have a number of updates planned…

27 October 2009

6 Different Beers

For my birthday, I got some beers I don’t usually drink (thank you Dav), so I thought I’d mention them.

I opened the Elysian Night Owl Pumpkin Ale with trepidation, but it had no pumpkin flavor I could detect (though they say it’s brewed with pumpkin and pumpkin seeds), only somewhat subtle pumpkin pie spices. Alcohol content was 5.9%. Overall, I’d say it was mild.

By contrast, drinking Sam’l Smith organic cherry fruit ale really seemed more like drinking cherry juice than beer. I didn’t notice the alcohol going down, though I guess it was there (no percentage was listed). Nice and fruity, rather than the uneasy mix that flavored beers often are.

I expected Lip Stinger (from McTarnahan’s) to be spicy, since it was “fermented with peppercorn.” Apparently they meant the singular — I could detect no pepper. It was just a beer. Alcohol content was 4.8%.

Fat Scotch Ale from Silvery City Brewery was just what I expected: scotch ale. I’m not sure what makes it that way — “a touch of peat character” I suppose. Alcohol content was 9%, which is probably also what makes it taste like what I expected.

Elysian’s The Immortal IPA was a nice India pale ale, definitely hoppy. 6.3% alcohol content.

Bear Republic’s Hop Rod Rye was slightly bitter but not at all unpleasant. 8% alcohol content.

So what was my favorite? Probably Fat Scotch Ale, as the most distinctive. And Lip Stinger seemed oddly lacking in character.

17 October 2009

Previewing Jigami

I put a more official announcement here (with info on becoming a beta tester), but I am bringing my first published game (Apple called it Jigsaw Strategy Game when they briefly published it for Newton) to iPhone (and iPod touch). The game was intended to be played on a handheld, and take only a few minutes to play, so I think it should work pretty well on iPhone. Of course, it will need a little updating from the black & white original pictured here. I’ll be posting more about that in the future.

15 October 2009

Open Project in Xcode

One really nice feature (not sure if it’s new in 3.2 or if I hadn’t noticed it before) is how you can look at sample code.

API documentation has a link to sample code that uses the call. Click that link, and from the sample code page, click “Open Project in Xcode.” The project is downloaded and, well, opens in Xcode. Very nice integration.

14 October 2009

Update to Opal

As I mentioned, I am using the new clang compiler and LLVM back end in the latest update (version 1.2.5) to my Opal outliner. I couldn’t really detect any differences in performance, but I’ll take the faster compiles!

The clang code analyzer did find a number of minor memory leaks, mostly in things that are less common, like printing or using the bookmark popup. So this release is cleaner than ever.

11 October 2009

A Retro Future?

I guess each generation is going to use technology differently, but it seems odd that my granddaughters prefer using MySpace to contact people, rather than e-mail *. This means they can only contact people who are on MySpace — for example, excluding me. It reminds me of the old days, when my editor set me up with an MCI Mail account so I could contact him. And most of my contacts were on CompuServe. It was a huge day when the services finally started sending e-mail to each other (and even longer before everyone got standardized into the name@domain addresses).

I hope we don’t go back to the old days!

* My granddaughters do use SMS, but due to its cost structure, text messages aren’t really a universal medium.

09 October 2009

There’s a twist

Even though I’m happy enough with iTunes, I wanted to check out doubleTwist. But they have a huge barrier to entry: when you launch the application on your computer, you need to create an account.

That almost made me quit right there, but I decided to check out the fine print, as per the links in the dialog.

Oops, they made the whole thing the check box! When you click the blue text, it doesn’t show you the Privacy Policy, it activates the check.

And when I want to the web site to post a question about this, they wanted me to register first.

So much for doubleTwist. I’m not giving someone my e-mail without knowing more.

Addendum: Apparently Help > Contact Support uses regular e-mail, so there is at least a standard way to contact them.

21 September 2009

Opt out of Omniture Tracking

Omniture is a major web tracking company, which is being bought by Adobe. They use the domain “2o7.net” which some people consider pretty sneaky (in particular, because in this font it looks a lot like “207.net” — they use two-oh-seven but it looks like two-zero-seven). If you don’t like the idea of being tracked, follow the link at the end of their Privacy page to set a cookie.

14 September 2009

NSUserDefaults Is Picky

If you’re not programming Mac or iPhone, you might want to skip this post…

I’m saving some state in an array, to be saved via NSUserDefaults. I know that NSArray can’t contain a nil value, but you can instead use [NSNull null]. BUT, property lists save only a limited number of classes, and NSNull is not one of them.

The confusing thing was that NSUserDefaults silently rejected an entire NSDictionary containing an NSArray containing an NSNull, while saving all the other changes I was making. So my testing showed that saving and restoring worked. And worked. And worked. Until the one case where there happened to be a nil. And then loading used the previous state.

So I had to come up with another way to save and restore a C array that can contain a nil. (In this case I was able to use a string.)

12 September 2009

Jukebox in the Sky

For as long as I recall, RealNetworks has called its Rhapsody service a “jukebox in the sky.” These days it’s probably trendy to say it’s your music library in the cloud. The idea is that you pay a monthly fee, and have access to any music you want, wherever you go.

Now that there’s Rhapsody for iPhone, this is finally coming true.

Since I have a Rhapsody account from work, I downloaded the app as soon as it was available, and tried using it to replace the iPod feature of my iPhone 3GS. Searching was straightforward, so I queued up a bunch of music and headed towards the bus stop. That meant I was leaving WiFi for a 3G signal and the song stopped and restarted. And stopped and didn’t restart. Then Rhapsody crashed.

But later attempts worked totally fine. There was one momentary pause, but then the music resumed. And I was able to search and queue up more music while on the bus.

There are still some issues with the software. Rhapsody gave me a “My Music” list that is not my music at all (maybe new accounts don’t get saddled with this). Queuing music is awkward (be sure to press rather than tap if want to actually queue — which I always do — rather than play instantly). And Rhapsody can’t access some hardware features (like the extremely important pause button on the remote) or play in the background.

Is the jukebox in the sky worth $13/month (plus tax), given you’re renting music and have nothing if you end the subscription? I certainly think it’s more worthwhile now that you’re not tethered to a computer, or have to pre-load a crappy player like a Sansa. A touch device with no remote is a pretty crappy player too, though it makes a big difference to be able to manage things on the fly. And it was very cool to pick a song I’d never heard and immediately get to listen to it.

So I think it’s finally worth trying — you can get a 14 day free trial, and the iPhone app is free.

08 September 2009

The Real Difference Between Mac and Windows Programmers

It’s obviously the color of their tools. Leon Bambrick points out that Windows tools are orange. But mine are blue. (OK, you could argue Interface Builder has a little orange. At least there’s an X in Xcode, which I constantly have open…)

(Thanks to Raymond Chen for the link.)

07 September 2009

Clang Is Fast

As I’ve written, the developer tools in Snow Leopard are a great reason to upgrade.

Snow Leopard includes a new compiler, clang. Much of my work involves C++, which clang can’t handle. Which is a bummer, as the static analysis is so useful. But Opal is an Objective-C application, so I tried switching from GCC 4.2. I had to tweak a few things (clang doesn’t like the GCC -Wunreachable-code option), but mostly it gave a few different warnings.

And it’s about twice as fast. On my MacBook Air 2.13 GHz, it took GCC about 58 seconds to build Opal (with its plugins). Clang took about 32 seconds. (This isn’t all compile time — it also includes copying files into the bundle.) I built twice each time in case caching made a difference.

Opal isn’t very compute-bound, so I didn’t notice any speed differences from using the LLVM backend. As for code size, the bundle is 4,463,702 bytes, compared to 4,328,838 from GCC 4.2 and 4,349,342 from GCC 4.0. In many cases, bigger code runs slower, but Apple claims that LLVM generates better code. They pay a lot of attention to performance, so I’m going to believe them on this.

So I’m planning on using clang for the next Opal update.

06 September 2009

How Did Economists Get It So Wrong?

Interesting article by Paul Krugman in the New York Times. But the icing on the cake (and why I’m mentioning it) is that it’s illustrated by Jason Lutes, who did a lot of pencil work on King of Dragon Pass!

Seattle Public Library in CardStar

One of my favorite iPhone apps is CardStar, which lets you put the cards for all those loyalty programs (like the local supermarket) in your phone rather than have to carry around bits of plastic. It displays the barcodes, and the store can scan them. (Most of the time with the hand scanner they use for large items, though you can hand them your phone to pass over the surface scanner.)

It also works with library cards. For the Seattle Public Library, use Codabar AA.

05 September 2009

Snow Leopard Notes

I’ve been using Snow Leopard (Mac OS X 10.6) since official release. See John Siracusa for a very thorough and technical review. I just want to post a few random notes.

I forgot to be scientific about measuring the disk space savings, but I think I got 5 GB back (and I had never installed all the printer drivers). That’s a pretty valuable upgrade right there!

While people have noted it’s a plus that you can now show the date in the menu bar, in fact you don’t get to choose the date format, so it’s not very useful.

It’s pretty cool that Cisco VPN is now built in — the client from Cisco was pretty unreliable. Unfortunately, we use a shared secret that’s only distributed via a .pcf file, in encrypted form. Luckily, there’s a security hole and it’s possible to retrieve the plaintext password. Armed with this, I can use the Snow Leopard client.

I haven’t seen mention of a change in Time Machine: if you back up to a Time Capsule, you’re no longer saving to the top level of the volume but rather using your own account. (The screen shot shows the new approach above the old.) This should make things a little more secure, but it also means your old backup is ignored, and things start from scratch. (I couldn’t really verify Apple’s claims that the initial backup is a lot faster — it still seemed awfully slow over USB Ethernet.) On the other hand, I had to restart the initial backup since I didn’t have enough space for an entire new backup. Once I freed up space, the initial scan was pretty much instant.

So far, most of my software has been compatible (including those I wrote: Addressix and Opal). I was using an older version of Parallels Desktop, which for some reason was not moved to an “Incompatible” folder but won’t launch (with a message that it’s incompatible). I think I’ll be switching to VMWare Fusion.

While there are some features that I appreciate (minimizing windows to the application icon instead of cluttering the Dock), for the most part it’s the same Mac, slightly improved.

Except as a development machine. The new version of Xcode offers some significant improvements for developers, ranging from better Subversion support to new compilers. I’m still in the process of using clang and the updated Instruments to track down subtle issues.

At the same time, one of the most annoying bugs is in the new developer tools: we can no longer use distcc to compile on 8 different machines simultaneously. Apple is aware of the problem.

As a user, it’s not a whizzy update, but I think still worth it. As a developer, I’m really happy to be using the new tools. I’m also hoping that this becomes the new baseline — it would be great to develop for 10.6+ rather than 10.4+.

21 August 2009


Interesting blog about bad charts: Junk Charts.

This is obviously inspired by “chartjunk,” from Edward Tufte’s classic The Visual Display of Quantitative Information. If for some reason you’re not familiar with this book, go read it! There’s tons of useful advice on how to present numbers so they can be understood.

17 August 2009


Raymond Chen often writes about Microspeak — jargon that shows up at Microsoft.

I hadn’t realized that “dogfooding” was now a verb (though Wikipedia concurs), but the usage in the Office 2010 Engineering blog just seems wrong. “For those of you who are dogfooding the Technical Preview build, thanks for all of the great feedback you’ve sent us.” But, the phrase is actually “Eating one's own dog food!” It does not mean beta testing! The author of the blog may be dogfooding, but those in the blog’s audience presumably do not work in the Office 2010 group. I imagine they are actually users of the Technical Preview. They are not eating their own dogfood. They are eating the blog author’s dogfood. This may or may not need a colorful term, but it would need to be a different term.

When I use Opal, I am eating my own dogfood (because I’m the developer). But the people who help me test prerelease versions are not.

03 August 2009

Take Back the Beep

David Pogue writes of the nuisance voice mail prompts the cell phone companies have inflicted on us in order to increase airtime usage. I run into it most often calling my wife, who has a Sprint phone. Luckily they have posted how to disable the prompt I hear, thanks to Pogue’s campaign:

“To turn off caller instructions aka "TAKE BACK THE BEEP"

“Dial into your voicemail accout (sic), select 3 for personal options, select 2 for greetings, select 1 for main greeting, select 3 for add or remove caller instructions, then press 2 for do not play instructions.”

(Of note: Apple wouldn’t let AT&T inflict this on iPhone accounts.)

Pogue now has a followup to his first column.

20 July 2009

Less Flash!

I’d been using Click to Flash for some time, but didn’t realize there has been a lot of improvement (I think I had version 1.0, and it’s now up to 1.4.2).

Click To Flash is a simple plug-in for Safari that handles all Flash content — by not playing it until you click. This means you can visit web sites without running a handful of programs masquerading as ads. The problem is that many (if not most) Flash apps are extremely greedy in their use of the processor. This means the computer heats up, which means the fan runs louder. In fact, Elise’s machine appears to heat up to the point that it abruptly shuts down to prevent damage. And if you’re running on batteries, you run down the charge faster. Click To Flash simply shows the word “Flash” instead of running the app.

But what if you want to actually play a Flash game? That’s where the “Click to” comes in. Click on the blocked Flash content and it loads and runs.

Like I said, I had an older version that was functional, but doesn’t offer the ease of use for white listing sites, or a number of tweaks (such as using H.264 video on YouTube). I don’t know how I missed the update. You shouldn’t.

06 July 2009

The Intention-Behavior Gap

I remember telling my friend Al Tommervik I had a great idea for a game, and him replying that he didn’t want to hear it, otherwise I’d be less likely to complete it. (This was a long time ago, but I’m pretty sure the game was one I did end up completing perhaps 10 years later: King of Dragon Pass.)

I’ve always appreciated that advice, and it’s one reason I don’t talk a whole lot about software I have in development. I just learned that there’s research that shows that people who don’t announce their goals are more likely to achieve them. According to an abstract of four recent studies, “intentions that had been noticed by other people were translated into action less intensively than those that had been ignored.”

So unless something is imminent, I won’t be mentioning it here, as fun as it might be.

01 July 2009

iPhone App Store

Digging through some old notes, I found this link:

According to Anita Hamilton in Time, Apple’s upcoming App Store will be “anything but a bargain.”

She wrote that in July 2008, and since then the App Store has obviously turned out to be an amazing bargain. Seems like almost all apps are $0.99 or free, which is kind of a shame (since I’d like to sell apps). I’m still hoping Apple figures out a way that premium games can sell for a premium price. Right now there’s no differentiation in the App Store. I do see a few of the top 100 paid apps at $4.99 or higher, but most of those are associated with an existing brand (Sims 3, Tiger Woods, Tetris). Games that sell for $19.99 on Windows or Mac are just $0.99 on iPhone (Sally’s Salon).

As others have written, it’s because the easiest way to market on the App Store is to price yourself less than others. I’m not a marketer, but it seems like this is exactly the opposite of the way Apple operates. They sell better than average products for a price that reflects their value.

30 June 2009

HeroQuest 2nd Edition Now Shipping!

HeroQuest Core Rules are now available for sale as a physical book or PDF! We were able to clean up a few production problems that were in the Tentacles prerelease, so this is the best edition ever. If you’re at all interested in roleplaying games, check it out! “Anything you can imagine, you can play…”

29 June 2009

iPhone 3GS

As I hinted before, I upgraded my original iPhone to an iPhone 3Gs. Apple made it real convenient, shipping it to arrive on the day of release, so I didn’t have to wait in line like 2 years ago.

Since I’d already upgraded the software to 3.0, some of the changes weren’t quite as dramatic as they might have been (frex I already had Spotlight search). But overall, I’m pleased with the new phone.

Although some people said the 3G was too slippery, I haven’t yet found it that way, and I’m still carrying it with no case. The curved back definitely feels different in my pocket though.

The oleophobic screen really does seem to make a difference — it gets less dirty and is easier to clean.

One unexpected plus is the new earbud remote. It’s now possible to change volume without pulling out the phone. (It had already been easy, since the volume button is easily located by feel.) Also, you can start music just from the remote — with my old iPhone, I had to first wake the device.

Speaking of volume, this phone is a lot louder than the 2007 model.

The GPS and compass are nice, though their accuracy doesn’t seem quite as great as I had expected. While sometimes I’ve seen it accurately track me as I walked down a sidewalk, it put me on the opposite corner of a downtown intersection.

Web browsing is a lot faster. It’s harder to tell the difference with other applications, though one that always crashed (Glyder) no longer does — presumably the extra RAM makes a difference here.

So far, I’ve gotten a 3G signal almost all the time. It took over a week before I saw my first EDGE symbol.

I have had some problems with it attaching to my AirPort — when it wakes it sees the base station, but doesn’t use it. (After a few minutes it does, and I’ve got an open bug with Apple I need to gather more data for.)

Basically, it’s an incremental improvement over the original. And for me, enough of an improvement to be worth it.

I’m not pleased that AT&T is going to charge me more for 3G, and that the basic plan no longer includes text messages.

28 June 2009

Review of Opal

Nicely detailed review of my Opal outliner at The Mac OS X Guru. He concludes, “It is fast, extremely responsive and very intuitive.”

Xcode comments

I knew that if you specified certain strings in comments, Xcode would put an entry in the function popup. But I just discovered there were some I didn't know about. Here’s the ones I now know of:

// TODO:


// ???:

// !!!:

// MARK:

24 June 2009

Mouse Repair

I had an Apple Mighty Mouse whose scroll ball stopped working in one direction — I could scroll down but not up (or the other way around, can’t recall). I happened to have a spare, and used it for a fair while. But then it stopped working in one direction!

Desperate, I decided to push the scroll ball button (which I never use). When I did so, I could scroll both directions. I got out the old mouse and did the same, and it too now works. It happens to have a shorter cable, which I preferred, so I’m now back in operation.

19 June 2009

iPhone Release Swamps Yahoo?

Apparently there were some problems with AT&T activation when the iPhone 3G S went on sale today. (It took about half an hour to complete when I did mine.) But what I haven’t heard anything about is that apparently the Stocks and Weather applications don’t work — I haven’t done a big survey, but two other people (who didn’t upgrade) were unable to access them. And I couldn’t on either the new or old iPhone. What both have in common is that they connect to Yahoo:

I managed to connect once, but now it’s failing again.

13 June 2009

New MacBook Air

I upgraded my original MacBook Air (1.8 GHz, 80 GB hard disk) to the latest model (2.16 GHz, 128 GB solid state disk). I was happy with the old one most of the time, but sometimes it felt too slow.

I’ve only been using the new machine for about 3 days (and on vacation, so not at all heavily), but so far so good. The Xbench rating for the old machine was 54.2, the new one 144.88. I’ll have to do some real world tests once I’m home, but if it’s really almost 3 times as fast, I’m happy.

Facebook ID

I’m now http://www.facebook.com/ddunham on Facebook. If that matters…

09 June 2009

Fixing the Safari 4 toolbar

Safari 4.0 comes configured (on the Mac at least) with a toolbar that incorporates the seldom-used Add Bookmark button with the Address field. And there’s no apparent way to turn it off via View > Customize Toolbar — there’s no Address Field item without Add Bookmark attached.

There is, however, a separate Add Bookmark item. To get rid of Add Bookmark, you need to drag in the separate item (which makes it disappear from its attached position), and then remove it from the toolbar.

(I had filed a bug against the beta build for this limitation; I don’t know if the workaround existed because I didn’t think of it until the final release.)

14 May 2009

Gladwell on Basketball (and defeating Goliath)

I always enjoy Malcolm Gladwell’s topics, and his latest New Yorker article “How David Beats Goliath” is no exception.

I think it also explains why I don’t find basketball as interesting as say hockey. Only half the time is spent doing something interesting — the game is played on about 48 feet of a 94 foot court.

09 May 2009

RPG Technology

Ran into an interesting post "10 Useful Pieces of Gaming Technology" and just had to call out the Abulafia Random Generators. These sorts of tables are always fun (where else would you learn that Bruce Schneier once factored a prime number?), and often quite useful to spark creativity.

04 May 2009

HeroQuest blog

Moon Design has started a blog in support of their HeroQuest line. It’s a good place to read about release schedules (the worldwide release of HeroQuest is July), upcoming products, and designer notes. I’ve been writing some of the latter.

29 April 2009

HeroQuest 2nd Edition

The paper & dice roleplaying game I was project manager for is finally nearing release: the second edition of Robin Laws’s HeroQuest. It’s due to be released in June.

I’ve run lengthy campaigns with this edition and the previous, and find this version to be even more flexible and easy to run than the last. It gives you plenty of tools to run games that follow a dramatic flow. My players all found it easier as well, but lost none of HeroQuest’s flexibility.

HeroQuest is now generic — suitable for running games in any genre. (Previous games were tied to Glorantha, so you needed to do a little adaptation if you wanted a different setting.) But Glorantha fans take heart — I’ve also been helping edit The Sartar Book, which has rules for Orlanthi magic and plenty of information on the inhabitants of Dragon Pass in general and Sartar in particular. It also includes an epic campaign suitable for characters of any level (though I recommend a little player experience). The Sartar Book is still in the editing phase, but while you’re waiting, Glorantha fans can use the appendix in HeroQuest to play (though you’ll have to provide your own cultures and scenarios).

I’m perhaps biased, but I really like the new HeroQuest rules, and The Sartar Book is shaping up to be pretty darn good as well.

18 March 2009

Apple Keyboard

I think I’ve requested a rationally sized keyboard several times over the years, so when Apple finally came out with one, I figured I needed to put my money where my mouth is, and buy one.

I plugged it into a KVM, and it works fine (typing on either a 20 inch aluminum iMac running Mac OS X 10.5.6, or a G5 tower running 10.4.11).

As with my MacBook Air, I missed the Enter key. So I installed KeyRemap4MacBook. Despite the name, it works fine with the Apple Keyboard as well as the MacBook Air.

The only problem was that for some reason, I wanted to put my right hand too far to the left —apparently I’m too used to positioning it away from the right side of the keyboard.

It’s really nice having all that desk space back!

03 March 2009

Small At Last!

Hallelujah! Apple is once again offering a keyboard that doesn’t take up excess space on your desktop, and will work without draining batteries! 

02 February 2009

Welcome to the Anti-Social

So I was on the bus today, and noticed someone was flipping through something on his iPhone. Turned out it was his playlists. And once he picked a song, I could easily see which album it was from, because of the album cover (easy to recognize because I too have some Vampire Weekend on my iPhone).

To me that’s just as valid a music sharing experience as whatever the Zune is supposed to do. And we didn’t even have to cooperate.

30 January 2009

Mac Box Set & Leopard

Just got my Mac Box Set (Mac OS X, iLife and iWork). At $149 (Amazon price as of 30 Jan), it’s the same price as iLife and iWork bought separately. I wanted both of those.

As it happened, I used the Mac OS X DVD to update a machine to 10.5.6, and tried to use that computer as part of my compile farm (using Xcode’s Distributed Build feature). It showed up as incompatible with the others. Apparently Mac Box Set includes 9G66, while the combo update installs 9G55. I didn’t realize Apple was distributing multiple builds of 10.5.6. Normally no one would really care, but distributed builds need perfect configuration matches.

So I probably won’t be able to use this machine in my compile farm until the next Mac OS X update.

25 January 2009

Control Room

Just watched the documentary Control Room, about Al Jazeera during the invasion of Iraq. Poor Al Jazeera! They were hated by both sides, as near as I could tell because they were devoted to broadcasting the truth.

The movie was for me full of ambiguities. For example, the soldiers going door to door (pretty scary stuff from my own training) vs the poor civilians caught in this. The soldiers trying to control the civilians without being able to speak their language vs the poor civilians who had no idea what they were being told. The reporters wanting information, the military not wanting to give out something useful to their enemy.

I found 1Lt Josh Rushing very sympathetic (perhaps because I was once a 1Lt). He seemed to be honestly trying to understand the Arab point of view. And was keenly aware that he reacted to dead Americans on TV differently than to dead Iraqis.

The DVD includes deleted scenes. I didn’t watch all, but many were political discussions that may be enlightening but didn’t really relate to the main theme of the film.

An interesting and thought-provoking documentary, still relevant.

05 January 2009

Class Names under gcc

We recently changed our C++ framework to use the language’s RTTI (historically we didn’t because some compilers didn’t do a good job with it, but that’s pretty ancient history by now). Previously we used a bunch of macros to roll our own, including the ability to print an object’s class (for debugging purposes), something like “ResourceImage.” The first cut at “native” support showed this as “N3GF213ResourceImageE,” which is too ugly for my liking. (It’s essentially a mangled name.)

So Chris Blackwell pointed me in the right direction, and we now have
#include <cxxabi.h>

template <typename ObjType> std::string class_name(ObjType* anObject)
int status;
char *realName;
realName = abi::__cxa_demangle(typeid(*anObject).name(), 0, 0, &status);
std::string retVal(realName);
return retVal;
which returns a human-readable name.