New section: comicroll

The absence of a blogroll on this site is very much intentional. For me the main issue with a blogroll is that it provides no context, it does not tell why the author of the blog reads the linked blogs, and more importantly does not tell why the author of the blog thinks his audience would benefit from reading the linked blogs. For instance, it might surprise a few of you to learn that I enjoy reading the Old New Thing, Raymond Chen’s blog on the the history of Windows and Win32 arcana. A great French humorist once said: “Are you going to remain simplistic (literally, primary) anticommunists your whole life, while it is enough to read Marx to become straight away thoughtful (literally, secondary) anticommunists?” I have not read The Capital, but I read the Old New Thing for a similar purpose. This is very important context that you would not have if I simply were to put a link to the Old New Thing in a blogroll.

When I link to other blogs in one of my posts, on the other hand, it does provide you with the context to help you decide if you want to read that post, and potentially if you want to read more of that blog. However, there exists content that most of the time is not practical to drop a link to in a blog post, such as webcomics. This is why I am pleased to introduce a comicroll to this site. I religiously follow all works listed in this comicroll, never missing an update, and I recommend them all heartily. For the benefit of those of you following at home on an RSS reader, they are, at the time of this writing:

Note that a few of them are in fact over or in hiatus, but they are too good to pass up. In particular, the Daily Victim (which by the way is not exactly a comic, but rather illustrated humor prose) was a GameSpy feature that used to be available here, and this is in fact an archive saved by a fellow fan and made available on the web (by the way, if he happens to be reading this, I would like to contact him about some of the images in this archive Never mind, the issue has been fixed, it’s getting better all the time).

So please enjoy this comicroll; know that it is not going to be set in stone, I will be changing it now and again, so be sure to check it out from time to time.

New favicon (and updates)

Photo of an old Mac (screen, main unit, keyboard and mouse) displaying a picture editor program with the just completed site favicon (itself a monochrome pixel stick figure carrying a bundle)

my Mac IIsi, running MacPaint 2.1 F

Short of a Mac 128k running the original MacPaint, this is possibly the most authentic way to draw monochrome pixel art.

In other news, I have made a number of updates to previous posts; most of those were to fix spelling mistakes, but I should mention a few major corrections; for one, I realized that Skype very much is household-name commercial software distributed mostly digitally, so I amended First Impressions of the Mac App Store in consequence; another thing I realized is that I discovered the Iconfactory site in 1999, and not 1996; In support of the Lodsys patent lawsuit defendants has been fixed as such. In Developer ID might not seem restrictive, but it is, I implicitly assumed that if Apple was going to require code to be signed with a certificate it provides, developers were necessarily going to have to pay for that certificate, but I realized Apple was providing certificates for signing Safari extensions for free, so I adjusted my oath to specify that point. Lastly, the ARM architecture documentation PDF keeps moving in Xcode, so I again had to update Introduction to NEON on iPhone with up-to-date instructions for locating it…

Goodbye, NXP Software

For the last four years, starting before this blog even began, I have been working as a contractor programmer for NXP Software. Or rather had been, as the mission has now ended, effective 1st of January 2012. It was a difficult decision to take, and I will miss among other things the excellent office ambience, but I felt it was time for me to try other things, to see what’s out there, so to speak. After all, am I not the wandering coder?

I’ll always be thankful for everything I learned, and for the opportunities that have been offered to me while working there. Working at NXP Software was my first real job, and I couldn’t have asked for a better place to start at as people there have been understanding in the beginning when I clumsily transitioned to being a full-blown professional. I am also particularly thankful (among many other things) for the opportunity to go to WWDC 2010, where I learned a ton and which allowed me to meet people from the Apple community (not to mention visiting San Francisco and the bay area, even for a spell).

There are countless memories I’ll forever keep of the place, but the moment I’m most proud of would be the release of CineXplayer, and in particular its getting covered on Macworld. Proud because it’s Macworld (and Dan Moren), of course, but also because of something unassumingly mentioned in the article. You see, in the CineXplayer project I was responsible for all engine development work (others handled the UI development), including a few things at the boundary such as video display and subtitle rendering; we did of course start out from an existing player engine, and we got AVI/XviD support from ongoing development on that player (though we got a few finger cuts from that as we pretty much ended up doing the QA testing of the feature…), but interestingly when we started out this player engine had no support for scrubbing. None at all. It only supported asynchronous jumping, which couldn’t readily be used for scrubbing. And I thought: “This will not do.” and set out to implement scrubbing; some time later, it was done, and we shipped with it.

And so I am particularly proud of scrubbing in CineXplayer and its mention in Dan Moren’s article, not because it was particularly noticed but on the contrary because of the so modest mention it got: this means it did its job without being noticed. Indeed, rather than try and seek fifteen pixels of fame, programmers should take pride in doing things that Just Work™.

As I said, I wanted a change of scenery, and that is why I am still employed by SII and I have started a new mission in Cassidian to work on developing professional mobile radio systems (think the kind of private mobile network used by public safety agencies like police and firefighters). Don’t worry, I am certainly not done developing for iOS or dispensing iOS knowledge and opinions here, as I will keep doing iOS stuff at home; I can’t promise anything will come out of it on the iOS App Store, but you’ll certainly be seeing blog posts about it.

And I know some people in NXP Software read this blog, so I say farewell to all my peeps at NXP Software, and don’t worry, I’ll drop by from time to time so you’ll be seeing me again, most likely…

April’s Fools 2011

So, if you read my previous post before today… April’s fools! And not in the way you might think. This behavior of the iPad 2 is real, I did not make it up, I did indeed verify it this week. The joke is that I claimed to be surprised, hoping to make people believe this unexpected behavior was an April’s fools. Posting strange-sounding yet true information on April the first—now that is the real prank.

It’s hard to tell how successful I was in tricking people into believing this was a joke; I did however get a few emails explaining (as I pretended to request) how such a thing was possible. Congratulations guys, you did not fall for it!

I completely expected this behavior of the iPad 2, I knew about ARM having a weakly ordered memory model, and have known for some time (this test code was prepared over the last few weeks, for instance). By pretending to be surprised, I attempted to raise awareness of this behavior, which many people are completely unaware of; indeed, programmers have rarely been exposed to weakly ordered memory systems so far: x86 is strongly ordered, and even if these programmers have worked on ARM they have only worked on single-core systems so far (the only consumer hardware I know of that exposed a weakly ordered memory model are the various bi-pro PowerPC PowerMacs, which are not very common and back then Mac code was mostly single-threaded). I’ve been thinking about ways to raise this awareness for some time, but it was hard to find out how since it was pretty much a theoretical concern as long as no mainstream multi-core ARM hardware was shipping. But now that the iPad 2, the Xoom, and other multi-core ARM tablets and handsets have shipped I can show everyone that this indeed occurs.

Later today or tomorrow, I will replace the contents of that post with a more in-depth description and a few references, in other words the post I intended to write in the first place, before I realized I could turn it into a small April’s fools prank. It will be at the same URL, in fact you might have noticed the slug did not really match the title, I intended this as a small hint that something was off…

Whether you thought the iPad 2 behavior was a joke, you knew this behavior was real but believed I was genuinely surprised, or you saw right through my feigned surprise, thank you for reading!

(On that note, I should mention I have been sloppy in checking my spam filters residue so far, and my ISP deletes them automatically after one week. So if you ever wrote me and I never answered, this may be why. My apologies if this happened to you, please send the email again if you feel like doing so.)

PSA: “previous” and “next” links in archives

(PSA, for the readers not familiar with this bit of US culture, stands for Public Service Announcement; these are similar to ads, except that instead of promoting a product, they serve to forward a message of public interest, like “Don’t do drugs”)

On the web, many archives can be browsed chronologically; I’m not just thinking of blogs here, many web pages can be thought of as being in an archive, webmail for instance. And more often than not, the links to do so are labelled “previous (item)” and “next (item)”. And here lies the rub: “previous” will typically take you to a newer item, and “next” to an older item. Wait a minute…

Oh, I certainly see the faulty logic that leads there. It started innocently enough, with “next”, denoting a link to the next page to go to see more items in the archive, but then “previous” came in for the link to go in the opposite direction; and now many sites are content with this.

But there are much better choices. For instance one is “earlier” and “later”; “earlier” has the advantage of being relatively positive (as compared to, say, “older”), which is good to encourage the reader, who has reached the bottom of the front page, to dig deeper in your archives.

Now why am I calling attention to this? Because I am guilty of this myself. Indeed, when I posted “Raising the Level of Discourse” my blog gained a second page. I immediately went to check it and saw that it indeed features “Previous Page”. The technical reason is that it seems to be the default for the theme I’m using, but that’s hardly an excuse; even if I can’t modify the theme myself (I’m on and have to use the available themes; I can customize one or two things and add CSS, but that’s it), I have to own up to my choices: a good craftsman does not blame his tools, but if they are not up to the task, either fixes them himself, gets them fixed, or changes tools altogether. However, this takes time, which I haven’t taken for this yet, so in the meantime it is still “Previous Page”; I apologize for the inconvenience.

The issue was resolved when I switched to a different theme in the beginning of 2012; I’m keeping this post for historical interest. – May 22, 2012


Hello, traveler.

You have reached the start of Wandering Coder. Yep, this is the very first post. You can now start reading chronologically from here, if you’re so inclined.