Tuesday, July 25, 2006


Well, it's a bit of a strange time for me. I've accepted a position on the CoreCLR1 team working on the Macintosh version of the MiniCLR that's going into WPF/E2 and perhaps later other places. It's a little odd to be considering leaving a position I've ostensibly had since I got here (with only one major reorg), but fortunately(?) I have so much to do to wrap up what I was working on for MacBU that I haven't had time to ruminate overmuch. On the other hand, it's hard not to get excited about working on cool developer technologies.

After some amount of worry when it seemed the handoff between the two groups (which is scheduled to happen over this weekend) was going to jeopardize my going to WWDC, all is resolved, and I'm once again set to go down to San Francisco the end of next week. I'll just be wearing a slightly different hat is all.

I hope that within my first week at the new job I'll know enough about what we can tell other folks that I might have something to show at WWDC. Or at least blog about it some.

Many thanks to my colleagues at MacBU for making my stay fun. Who knows… maybe I'll come back sometime later with some newfangled scripting technology to use with Office. If only I could think of one…
1 The CLR in CoreCLR stands for Common Language Runtime, a fundamental piece of .NET technologies.
2 WPF/E is Windows Presentation Foundation/Everywhere, a subset of WPF designed to work outside of Windows.

Tuesday, July 11, 2006

Yet another framework

When I was younger, my dad showed off his Texas Instruments TI98+ scientific calculator, which for him was a godsend; he was doing medical research at the time, and being able to program up to fifty operations on a piece of data at a time made filling out his tables significantly easier. I was too young to really do much with it (or more to the point, have too much that I needed to do that could use it), but I "helped" (in that way that a child can "help" and have it take longer than it would've otherwise).

Fast forward a couple years, and our family acquired an Apple ][+. This wasn't our first computer1, but it was the first one he did any significant computing on. I used to watch him enter in page after page of AppleSauce Basic to take in data sets, perform calculations, and spit out the results. We used the heck out of this machine. Admittedly, as kids, we preferred to play Karateka, Moon Patrol, or earlier Aztek and Elevator Action2, we also had AppleWrite and I wrote my homework using that for years.3

Still later, I came back from college to find that my dad had purchased an IBM PC clone and had ceased doing any programming, but just used some already-created applications which did most of what he wanted. I ended up sneeking on and writing a simple BASIC program that would play Happy Birthday to him if he started his computer on his birthday. Apparently, he didn't do that for two years and was mightily surprised when it started making noises at him. In any case, one of the times I was working on programming and he was around, I asked him why he didn't just pick up this new BASIC and continue his work. His response was that he had already learned enough languages, and that picking up another was just not worth the time. I repsonded that it was not that different, that it was easy. He agreed that it was likely to be as easy as I said, but still not worth changing for, given the viability of the solution he already had.

At the time, I thought that I would never feel that way.

When I was maintaining the MacBU build system, it was written in Perl. I hadn't known Perl beforehand, and because I thought the system needed some tweaks, I learned just enough to make the tweaks I wanted. Then, of course, being the only person who was actually doing any work on it, they made me the official person to work on it. I ended up getting a pretty in-depth education in Perl as a result, from having to deal with the Perl plug-in to CodeWarrior (PerlIO anyone?) to writing tied filehandles to capture output into an XML time-stamped log. All this without the benefit of something like Affrus.

Eventually, I gave up working on the build system, and subsequent to that, it was decided that Python shall be the Way of the Future™, and the system that we're working on to support Xcode was to be adapted into Python from the old Perl-based CodeWarrior-driving system. Of course, now I'm back to where I was before – wanting to make tweaks to the system to make it work better for me. And learning Python isn't so terribly hard, since it's very similar to Perl. But it just seems sad to have to figure out a bunch of ever-so-slightly-different ways of doing the exact same thing.

I probably will finally put Python under my belt one of these days, but it's just not as compelling as it would have been to my child-self.

Not all new systems fall in this baliwick however. I'm currently working on some simple Cocoa stuff. Cocoa, too, has been long ignored by me, largely because very little of the MacBU-based code uses it. It is a whole new way of doing business, and its model is sufficiently different that it's taking a little "settle-in" time to grok it. It will be yet another framework to learn and to have to integrate into my other programming paradigms. However, it makes some things sufficiently simple, that it is compelling to learn. I just sometimes wish I were learning it faster.
1 Earlier, my dad had purchased a Sinclair ZX81 with the 16k memory pack. The Basic programming was rather simple and fragile – on one hand, the 16K memory pack's connection wasn't too good, and if you giggled the keyboard, you were likely to lose everything, and on the other hand, it took several tries of playing the tape before the computer would finally "take" the program. As it was, I think he chalked it up to a learning experience and didn't do any scientific work on it. My brothers and I played some super-lo-fi 2D space scroller (like Zaxxon, only not orthogonal).
2 Unfortunately, we didn't really have access to the good games, since it was a "Work" machine. I remember spending quality time at a friends house playing Wizardry. To this day, I still attribute my navigation skills to wandering that maze sans MILWA.
3 The Apple ][+ was also the computer I performed significant programming tasks on. I used AppleSoft BASIC to do some boring things (like modify other BASIC text-driven games, like Oregon Trail). I took a stab at basic graphics programming to show long addition. I tried several times (mostly failed attempts) to learn 6502 assembly, and really only ever emitted a few assembly things in BASIC code. My brothers mostly remember me trying to harangue them into helping me transcribe hex dumps of computer programs published in computer periodicals – they hated that, though less so when checksums were finally introduced.

Monday, July 03, 2006

Choice: productive(?) but unhappy

Doing my standard breadth-first-search of people's blogs (omitting links of little interest), I ran across the Simplessity blog (via Nadyne via Brian Johnson). The particular article linked from the title is about a presentation by Barry Schwartz about how as the number of choices goes to infinity, the productivity (of maximizers at least) goes up, but happiness (in general) goes down. Facinating. This probably explains why people end up being paralysed when faced with the number of options our products support (assuming they actually are aware of them). ("How best to format this document? Oh, crap, that was the wrong way." Even if it was the right way.)

I really like the idea of Libertarian Paternalism.