Tuesday, January 09, 2007

iPhone envy

Well, I was wrong. My friend Jon asked me what was going to be offered up this morning, and I said, “Whatever it is, it isn’t going to be an iPhone.” This because Cisco owns the trademark to it… In the back of my head, I was really hoping for a phone/iPod combo, not just because it would be cool, but because my i-Mate SP3i Smartphone is starting to drive me crazy, and I am looking for a replacment.

This isn’t to say that the SP3i wasn’t nifty at one time. When I was willing to spring for the $20 extra a month it cost for insanely slow wireless internet service, it synchronized nicely with my Exchange account at work, which was pretty much the only way I ever used its connection. Trying to do anything other than load an extremely simple page (usually one written to be displayed on a Palm) (1) took forever and (2) required scrolling all over tarnation with the dinky joystick of intermittent operation. Said joystick came out of the phone multiple times, and could never quite be put back in correctly, and right now I’m operating with the plastic stub instead. Still, the difference between me knowing I had a meeting to get to and/or to look up where it was or what someone’s number is in my 400+ contact address book was huge.

On a parallel note, the implementation of as-needed-synchronization in Windows Mobile™ 2003 Second Edition’s Pocket Outlook depends not on the ultra-slow network that I paid $20 a month for at all. Instead, the Exchange server sends invisible SMS messages (ones that don’t show up in your text message section) that get interpreted by Pocket Outlook to let it know there’s something new to synchronize. I didn’t have a text plan when I first got my smartphone, and after two months of $150 charges in text messages that I had no idea where they were coming from, I finally switched to mode of synching to just every 30 minutes. My comrades in Windows Mobile ultimately changed the behavior of this in a later edition of Windows Mobile™, which is great, but unfortunately, they weren’t willing to upgrade my phone (they were OK upgrading the SP3, but the SP3i was just too… something… (new? freaky?) And as far as I can tell, the manufacturer won’t upgrade it, presumably because it was already an older model.


As time went by, I gave up on the Internet connection, trying to settle on desktop-synchronization. Unfortunately, it was about this time that I played Good Microsoft Employee™, and dogfooded beta candidates of Vista, for which there was no ActiveSync. Now that Vista has released to manufacturing, there’s now an ActiveSync, but it doesn’t sync contacts or events anymore. “The synch status is on the device.”, only it’s not. Add all of this to the device no longer responding to right button clicks, and taking on the order of 5 to 20 seconds to respond to left button clicks when it hasn’t been used in a while (is it paging things in?), I’m starting to take a hard look at new cell phones.

One of the most annoying things about bar phones, IMNSHO, is the requirement of locking them. Yes, I know it’s not a strict requirement, but I put the things in my pocket and then they auto-dial someone in my contact list. I’m still waiting for an accidental call to 911 to happen. Strange things happen when it is locked though. If I get a reminder, sometimes I cannot dismiss it because it wants you to unlock it first, but the reminder is on top, so you don’t get the unlock UI. There might be some kind of lock timer I could use, but that doesn’t preclude me pocket dialing people, and I don’t always remember to lock it. I was thinking I would have to go to some kind of flip or clamshell phone to avoid that nuisance. I spent some time over the holidays looking for a relatively cheap phone (since I’d have to buy it as an “upgrade” through T-Mobile or get a compatible unlocked phone, as I already have a contract), but hadn’t come up with anything.

And then Steve Jobs shows off the new iPhone.

Something tells me the Exchange support might not be all that great. As it stands, Mail.app has never once been able to synch with the Microsoft Corporate Exchange servers. (In the past, that’s meant that I’ve been even more tied to Entourage and/or Outlook, and had a vested interest in fixing/reporting bugs in those products.) I somehow doubt that the iPhone is going to do better than Mail.app. But still the idea is alluring. The iPod I got as a ship gift for shipping Microsoft Office 2004 ended up going to my wife who lives for her podcasts, and her old iPod had ended up with battery issues. (NB: She recently got it re-batteried and now I have an ancient iPod that I really should load up with some tunes.) Having a newer model iPod that can show video and call folks and can fit in my pocket sounds great. And maybe I can even leverage Entourage’s Sync Services integration to get my info onto the phone…

I guess I’ll keep an eye on it, and if/when it comes out, figure out whether it’ll be worth switching to Cingular or whether it could be purchased unlocked for use with T-Mobile. Until then, I’ll live with my ailing smartphone.

P.S., What would be really cool, would be if it had a slot for not just a SIM card to enable the device, but extra SIM cards to serve as generic smart cards. Then you could use it as your physical token for authentication on machines. Can you imagine walking up to your machine and have it auto-negotiate credential sharing, and have a keychain show up on your box?

Thursday, January 04, 2007

Intel inside / Herring v2

Time seems to get away from me when diving into new work. It’s been a few months since my last speculative post, and since then, as I’m sure you’ve noticed, the Core 2 Duos are now in the MacBook Pros. I bought mine the day it came out. But like the rest of my old machines, it wasn’t so easy to part with my old Titanium. First, it was a matter of not having brought everything over (like some applications who keep data in strange places and as such didn’t get copied over when I copied my home directory and data drive), and secondly, for the first time in a long time, I had some PowerPC-only work on my plate!

Digging out the old 601 manual and peering through its pages, I realized that I missed dabbling in assembly. I say dabbling because I know just enough to be dangerous, and not enough to wring the performance you’d want from, say, an optimizing compiler. Fortunately, all I had to do was play with stack frames and arguments placement. Mmm… Nothing like screwing that up and getting a completely broken stack trace at the point of a problem. Well, anyhow, as it turns out, whereas it’s possible to use my new shiny MacBook Pro to do this work, it’s quite difficult to debug in Rosetta, and Rosetta seems to not be too happy about programs generating their own code (it quickly runs out of memory—perhaps it doesn’t know where the data ends and the generated code begins?). Thus, my old PowerBook was going to have its one last hurrah over Christmas, so I could work during downtime while visiting family.

I greatly overrated the downtime, which ultimately didn’t matter, as for some reason gdb on my PowerBook wouldn’t load the symbols of the code I was debugging, so it was even more difficult than it was going to be back at work. I gave up on working over Christmas and focussed it on my and Miller’s family.

As an aside, it seems that around my birthday, Miller and I “spawned a new process”. I don’t think it’s Intel inside there, but according to the doctor, it’s set to release in late July ‘07. Both of our families are quite pleased.

Now that the last vestiges of a reason to keep the old workhorse is gone, I finally used the photos I snapped of it several weeks ago, and put it up on eBay. <shameless_plug>If you’re looking for an old MacBU warhorse, replete with a Moby sticker, bid away.</shameless_plug>

Wednesday, September 27, 2006

Machine speculation, redux

A couple of recent articles about Intel's new quad-core Core 2 offering coming early (in late 2006 rather than early 2007) from SFGate and the Washington Post reminded me that I didn't really act upon my previous machine speculation.

I had posited there was an outside chance that they'd update the laptop line for WWDC '06. It was much more likely that they'd release an Intel desktop, and they did. (I had given it a release date of December +/- 6 months, so it definitely came in on the early side.) Nonetheless, I was (and am) holding out for the low energy versions to get put into the machines for better battery life (and less cooking of the lap), and hoping that they'd be able to cram in a second two-core processor in. Well, with the announcement that availability of quad-core chips this year, with low energy versions "early next year", I might get (effectively) both. Unfortunately, since there's usually some lag time between chip availability and adoption, I may end up waiting another nine months until they could get put in the MacBook line. Ultimately, this comes down to when Apple updates the line and what they're going to do with it. I've got my fingers crossed.

Tuesday, September 19, 2006

Not just licking my wounds

I should have known better. I'm not particularly thin-skinned, but every time I end up going to an Apple conference, instead of being able to purely enjoy the new technology (and at WWDC, the camaraderie of other Mac developers), I find myself plucking daggers out of my (well, Microsoft's) back.

Yes, I know that the Reality Distortion Field is going to promise great things on the platform. But, having never been to a PDC or TechEd, do the Windows conferences heap the same load of scorn on alternative OSes (and by inference, developers on and for that OS)? I'm sure there are cross-platform developers who are just itching for the new technology who think, "Yeah, yeah, now tell us what's cool about your stuff!" There are probably such Mac stalwarts that don't care a whit about what Microsoft is doing or would rather not hear the name mentioned in their presence, and referring to "Redmond"1 repeatedly is just as bad.2

In any case, having been to WWDC 2003, and having had access to other MacBU folks' DVDs for '04 and live streaming for '05, I didn't get as much out of it as one of my new coworkers, who was roughly introduced to the society surrounding the technology. Instead, I enjoyed talking to several Apple developers working on the technology areas of my interest (mostly security-related), and put bugs in their ear about future directions. Secondly, I did not just throw away all those Microsoft daggers–omitting the ones that were purely spiteful, there were still several that complained of real problems in MacBU products that I was able to give feedback to the team about, not all of which were known issues.

The reason I've been quiet recently is not that I'm licking my wounds from WWDC, but that I'm diving headfirst into a bunch of new-to-me technology. Although my coworkers have some good insight about what sections of the technology have analogs to what I had been doing previously, it is still a little like drinking from a firehose. I hope to spend the next few months coming up to speed, and then when the product specs settle down and we can go public about it all, have some more technical blog entries about what I'm actually doing here in CoreCLR.
--
1 A quick search of software companies in Redmond, Washington turns up quite a number of results. Perhaps they're repeatedly referring to WildTangent? No? Maybe Hipsoft? Crick Software? Something tells me they're just afraid of mentioning Microsoft, in case it increases Microsoft brand recognition to their own detriment.
2 I've often wondered what purpose it serves to mock Windows at these conferences. I don't think it's going to dissuade Windows developers from developing for Windows OSes. Is it dissuading current Mac developers from leaving the platform? Or is it just patting them on the back for having made "the right choice" of OSes? Hmm.

Tuesday, July 25, 2006

CoreCLR at WWDC

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.