Software development industry analysis by Larry O'Brien, the former editor of Software Development and Computer Language
Tuesday, March 28, 2006

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...

 

Tuesday, March 28, 2006 3:17:33 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

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.

Tuesday, March 28, 2006 2:38:48 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | Reviews | TabletPC#
Monday, March 27, 2006

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).

Monday, March 27, 2006 1:23:42 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | Offtopic#

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.

 

Monday, March 27, 2006 7:46:46 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Friday, March 24, 2006

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?

Friday, March 24, 2006 11:05:01 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

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.

Friday, March 24, 2006 10:33:27 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Tuesday, March 21, 2006

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.

Tuesday, March 21, 2006 10:25:02 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Tuesday, March 21, 2006 9:42:49 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

I haven’t tried Last.fm, 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.

Tuesday, March 21, 2006 9:42:32 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Tuesday, March 21, 2006 9:42:06 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

According to a survey conducted by Mercer Human Resource Consulting LLC, a software engineer in Beijing makes $13,400 per year. In India, a software engineer makes $10,300 per year. Salaries in India are growing at 11.5% per year (over the past 5 years) and 7.5% per year in China in the same period. The survey also said that software engineering wages in Beijing, Shanghai, and Guangzhou are higher by approximately 20% versus jobs in other Chinese cities. Via [David Intersimone]

Tuesday, March 21, 2006 9:41:30 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

Ralph Johnson makes the point that since the majority of work on code is subsequent to its initial creation, the idea that transforming one program into another is not a theoretical exercise, but a fundamental reality of the way things already work. Via [Patrick Logan]

 

Tuesday, March 21, 2006 9:40:46 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

I am interested by Literate Programming, in which both human-readable discussion and compiler-readable code are combined. Not only does such a system allow a document to be unit-tested, it generally allows code samples to be more expressive, because you can re-order code sections to fit the discussion. I’ve written a literate programming system for Word and .NET, but this is even cooler: a Wiki whose markup supports literate programming. Every page has a “download code” button that generates both a listing and even a .ZIP file!

Tuesday, March 21, 2006 9:40:46 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Tuesday, March 21, 2006 9:40:22 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

Ray Ozzie’s “Clipboard for the Web” is also (partially) based on the premise that “cut and paste” / copying is something that is inherently productive. A microtrend?

Tuesday, March 21, 2006 9:39:59 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

Another good article on C#. This one on how to use interop to speed file reading.  [via Steve Pietrek]

Tuesday, March 21, 2006 9:39:47 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

I have been very intrigued by Jonathan Edwards’ work on “Subtext,” a spreadsheet-like programming language that elevates “copy and paste” to be the primary means by which programs are constructed. He’s already put up some prototypes and casual discussions, but now he’s posted a draft of a more formal definition of what he’s doing.

Tuesday, March 21, 2006 7:25:46 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

This is a nice article demonstrating a programming style that has become possible in C# 2.0. Update: Fixed broken link.

Tuesday, March 21, 2006 6:51:02 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Monday, March 20, 2006

This game perfectly captures how I feel right now:

Movie

Monday, March 20, 2006 3:42:51 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Offtopic#

This article reports on Microsoft's rumored 'iPod killer' and is filled with enough details to make me think that this is a different project from Origami/UMPC. That's interesting, because when the rumors of an "XBoy" started a few months ago, I mentally said "Oh, that's the Origami." (Yes, I knew about Origami for months before launch.)

 

Monday, March 20, 2006 9:49:18 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

Apparently, DDJ has had a redesign (which doesn't necessarily mean new editorial direction, but could be...) and wants to continue the Jolt Awards going forward (although it's a little confusing, as the Jolts will apparently continue as a project tasked to CMP's Events groups).

Rosalyn Lum, SD's Technical Editor, is moving to the Events group, so to the extent that DDJ evolves its content, it won't be with her help. That's too bad, as Rosalyn should get most of the credit for SD's improvement in surveys and quantitative numbers, which I think has grown to be one of SD's key strengths.

Monday, March 20, 2006 9:09:04 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | SD Tools#
Sunday, March 19, 2006

I've heard from several people that permalinks to this site fail initially, but if you reload the page, they work (but, of course, most people just click away at the first 404). The site is hosted with Gearhost, with whom I'm generally pleased, but I don't have access to the actual OS, all I can do is work with web.config.

I'm running dasBlog, with which I'm generally happy, but the documentation sucks. There's no sign of this in the defect tracker on SourceForge. Naturally, I suspect some kind of caching issue.

I'm going to try to take a run at the problem today, but ony have a few hours to look at it.

Update: Grr... It's not a caching issue, it seems to be a defect / bug in dasBlog relating to session state. Haven't been able to get a debug version of dasBlog to compile and run (it's interacting with .NET 2.0 in a weird way). So much for my Sunday morning... The problem will have to wait.

Oh, by the way, the "technical refresh" of Office 12 Beta 1 is vastly improved. Outlook stability seems much better and I can actually understand at least some aspects of the "task-based" UI, of which my initial impression was utter shock and disapproval.

Sunday, March 19, 2006 8:09:49 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Friday, March 17, 2006

Joel Spolsky incorrectly read the announcement as SD taking over the Dobb's name. Dan Read  hopes this might mean a hybrid magazine that combines the best of both. At the risk of alienating my future potential editors, almost certainly not. So far, what we've got looks like the pro forma assurances that are typical of an all-out acquisition. Software Development's Editor, Alexa Weber-Morales, was laid off in December (when she was six months pregnant, to b