Archive for March 2006

Microsoft Hiring Ruby Implementor

Microsoft is looking for a developer whose “first task will be to drive the exploration of other dynamic languages such as Ruby and JavaScript on the CLR“. Dang. If only they allowed people to work remotely…


Tablet PC Honesty

Rob Bushway data-mined the buzz about Origami to reveal that a lot of Tablet PC users don’t carry their existing Tablets around as much as they might claim. It’s a good catch. I have 3 Tablets (how ridiculous is that?) and have to admit in all honesty that somewhere over 90% of my work on them is done in desktop mode. For something to be carryable requires an incredible fine-tuning of features. I never carry around my Toshiba Portege M200 (a convertible) — that’s the role of my Motion Computing M1400 slate (which shares the form-factor of my third tablet, an M1200, which is gathering dust, quite honestly). It’s not that the M200 weighs a few more ounces (although it does), but the balance. The Motion Computing slates are really, really appealing for carrying around — the M200 just doesn’t feel the same way.

On the other hand, what do I carry around all the time? My Pocket PC Phone Edition PDA (an O2 XDA) which I like much more than my now-bricked SMT5600 Smartphone. Its got instant-on and battery life long enough not to worry about it. If only it had Shapewriter / Shark text input I’d be in heaven. (By the way, the “coming soon” version of Shapewriter has been that way for a year and a half: could IBM be holding back because Microsoft has so much to gain from a great mobile text input technology?)

On the other hand, the view-anywhere screen on the M1400 is better than that of even my PDA. But it’s only 1024 x 768, while my M200 is 1400 x 1050.

In other words, there are a million (or at least a dozen) tiny little things: balance, screen readability, resolution, accessories, battery life, text input speed, etc… that weigh into the decision to carry a computer at all times. It seems to me that it’s more a case of time and luck than anything else, that eventually there’s going to be some piece of hardware that really hits the sweet spot. Whether the Origami / UMPC is it, I don’t know — the base resolution of 800 x 480 makes me doubt I’ll be using it to compose articles.

Permalinks fixed (?)

I have had a problem with dasBlog by which the first load of a page on this site (via permalinks) would serve up a 404, but if you refreshed, you’d get the page. The solution appears to be at hand: by turning off the Movable Type blacklist in the configuration, all is well (I think).

The 60 Percent Solution

So first a writer in Australia says that “Up to 60% of the code in the new consumer version of Microsoft new Vista operating system is set to be rewritten,” and the blogosphere goes crazy. Then Scoble wigs out and says:

  1. It’s not true;
  2. It’s absurd to the point of being non-credible; and
  3. If you link to the original article, Scoble won’t link to you.

Let’s start at the last point: here’s the original article. For a guy whose great theme is PR as “conversation,” the threat is unseemly at best, hypocritical at worst. Because, to move on to point #2, the assertion is not absurd on its face. Amazing, incredible, disastrous: yes. Prima facie absurd? No. The development of Vista has been extremely rocky and huge projects with troubled histories often end up in a quagmire. Even if the proposition that Vista is in a horrid quagmire is an extraordinary claim requiring extraordinary sourcing, given the lack of technical precision in mainstream tech publications, the assertion could be an overly dramatic statement of the not-absurd premise that up to 60% of the subsystems unique to the consumer version need refactoring. If that were the case, it would mean a delay in schedule for Vista, but at this point, it’s not like that is unthinkable.

  Perhaps it is unthinkable internally at Microsoft and that’s part of the reason that Microsoft is so angry ? “We’ve finally turned the corner on this, and they say we’re still in trouble! Bastards!” But Scoble seems to think that journalists should know that the story couldn’t be possible true. While journalists know tons of beta-level non-public stuff, for major announcements, we typically only get a few days notice. On real surprises, especially bad news, we will often only get news that news is coming ? when Microsoft calls you to schedule an interview with a VP, you know something’s bad. On the other hand, those of us who’ve been around a long time, know tons of people who work inside of Microsoft or who used to work at Microsoft and, one way or the other, end up knowing lots of secret stuff. Microsoft has internal politics and strong personalities and a surprising amount of invisible or below-the-radar projects.

  Now, to point #1: Is there any truth to it? Given Microsoft’s vociferous denials and the enormous schedule risk of a major refactoring of anything in Vista at this point, I doubt it. But I’ll still keep my ears open.


LISP macros versus C macros

Ted Neward also laments the lack of LISP-style macros in mainstream programming languages. Damn straight. LISP macros allow you to extend the syntax of your programming language. You know how modern IDEs allow you to type ‘for’ and then hit some key and it expands into a complete for loop and even knows, within the generated code, where the “blank spots” are that you need to fill in, and even moves the cursor to where you start typing in (in Visual Studio 2005, these are called “snippets”)? So if you had a snippet/macro that generated, let’s say, the scaffolding to instantiate a DirectX surface and another snippet that generated the scaffolding to, say, load a mesh and add it to the surface, your typing might be reduced to “GameSurface{expand-key} LoadMesh{expand-key}room.mesh;” and you might end up with 1,000 lines of code and you’d code before and after and in the “blank spots” with your normal coding language. Now imagine that the expansion of the snippet occurred at compile or runtime. So you’d have a whole bunch of normal programming code, but in the middle, instead of 1,000 lines of code, you’d just have “`GameSurface `LoadMesh room.mesh” and the back-quote (say) would indicate “expand this.” And, of course, it might be hard at first for someone to understand what goes on when GameSurface or LoadMesh is expanded. But once they were convinced that it was robust and flexible, they’d probably start using the LoadMesh snippet/macro themselves and, in doing so, would be using what is in effect a Domain-Specific Language. And, of course, it’s hard to write a robust and flexible snippet/macro. But it’s still simpler than any other way I’ve seen to write DSLs.

Uh… Now that I think about it… With today’s VS2005 macro capabilities, could you write a macro that expands other macros and then run the “expanding” macro as a custom pre-build step? Gee, how much more would I like to explore that this weekend than debugging the dang broken permalinks on my site?


Should programmers fear offshoring?

Ted Neward argues that “programmers shouldn’t fear offshoring.”

He has two theses:

  • Unlike previous industrial revolutions, the demands in the software industry are such that there’ll be plenty of work for all; and
  • Best practices seem to indicate that physical proximity is important to software success

I’d like to agree, but I can’t.  Neward’s first point is argued in terms of productivity, and he says “Because what’s expected of software is constantly on the same meteoric rise as what productivity gains provide us, the need for programmer time remains pretty close to constant.” Putting aside the premise that there has been a “meteoric rise” in productivity, the argument only speaks to the total size of the market; there’s no reason to think that the domestic market will stabilize relative to the international market.

His second point is definitely more substantive. We absolutely know the importance of communication in evolving requirements. We absolutely know that the waterfall model of a document of perfectly accurate and unambiguous requirements that can be handed to a development team to implement is not just mythical, but a harmful myth.  Quality issues are definitely an Achilles’ Heel of outsourcing projects (if this were an article, I’d dig up supporting citations from CACM, ACM Queue, and Software Development).

However, the large majority of U.S. domestic software teams do not exploit their advantages of proximity and communication. Sure, team leaders and analysts work with stakeholders and, in a domestic team, then work directly with programmers and there’s definitely some advantage there. But how many coders see communication as their competitive edge? How many programmers say “Well, yeah, I could spend the morning learning this API that will be used, but it’s more important that I spend the morning in a meeting with users”?

A lot of programmers feel more comfortable ? more productive, more fulfilled — working with code than with people. That’s not a value judgment, it’s an observation (including, yeah, the way I sometimes feel myself). My point is that physical proximity is not a substitute for communication.

Look, I’m offshore, but I stay busier than I can handle because I can talk very clearly about software, not just when I’m writing articles, but when I’m developing software for clients. It’s no substitute for face-to-face communication and whiteboards, but I do have an advantage in that I can discuss my code (over the phone or in writing or if I travel) in terms of higher-level things, like design patterns and OO design and systems analysis and risk analysis, etc. That knowledge and clarity about non-coding issues is the advantage that allows me to be an offshore coder. And, when I look at newsgroups and forums and other resources, it looks to me that interest in these type of issues is, if anything, more common among non-US programmers than among US programmers.

XNA, Managed Code, and XBox Live Arcade

The February ’06 issue of Game Developer Magazine (hey – the last magazine I founded that is still in publication) has an article on “Casual Games and the Mass Market.” They mean games like those of PopCap and PlayFirst: you know, Bejeweled and the like. Okay, so first of all, it’s a $240 million a year industry, projected to go to $900M by 2009 (but on the other hand “projected to grow to…” means “someone made up this number”).

Greg Canessa, group manager of XBox Live Arcade: “The conversion rates, from free to paid, were staggering. The industry average for PC-downloadable games is under 1 percent, and we were getting a sustained average conversion rate across our 20 titles of almost 12 percent.” (emphasis added).

I’ve been there, I know: Game development is the worst freaking subset of the software development industry you can imagine. But holy cow, with Microsoft’s preview of XNA that was just released at the Game Developer’s Conference, you can now use C# or VB.NET to write the next Tetris / Bejeweled / PacMan. Man, is that a tempting market. Man. I mean… Man.

And if you don’t want to learn DX, PopCap has released the engine they use under a no-fee, Open Source, must-give-credit license.

Tracepoints: Debugger controlled printf() debugging

Pandora vs.

I haven’t tried, which is a music recommendation service based on what other people listening to X also listen to. But I like Pandora quite a bit, so this article comparing them was worth reading. On the other hand, I still prefer KEXP to both.

Scott Hanselman has diabetes: Sponsor Team Hanselman