Software development industry analysis by Larry O'Brien, the former editor of Software Development and Computer Language
Monday, December 31, 2007

I was reading PC Magazine's 25th anniversary issue in which they have the evergreen "what will the future bring?" essays. I was struck by how much talk of medical stuff (nanobots, non-invasive diagnosis, ubiquitous this-and-that) there was. And then it struck me:

Boomers.

Just as they do with every damn thing, boomers define the mainstream concern as "What does this mean to me?" In the past 25 years (to take PC Mag's benchmark) it went from work (what is technology about? Business productivity!) to family (what is technology about? HDTVs, Internet predators, and bluetooth-enabled minivans!) and now, of course, it will shift again.

What will technology be about for the 25 years? Getting old.

Just as you wish you'd written a spreadsheet program 25 years ago or Facebook 10 years ago (well, you would have been flushed away in the dot-com bust, but aside from that...), the thing to think about now are the killer applications for aging, whether that's medical support, post-retirement money management, or Am I Wrinkly Or Not?

Monday, December 31, 2007 10:49:15 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | SD Futures#

When I can shake some time free to actually learn F#, this awesome series of blog posts on "Practical Parsing in F#" is definitely something I'll revisit. Parsing is one of the better tasks for shaking free a large number of concepts about a programming language, since it invariably involves large and dynamic data structures, abstraction strategies, IO, etc.

Monday, December 31, 2007 7:00:28 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | Languages#
Sunday, December 30, 2007

When I was 10, this show was on Saturdays at 4:00 on UHF Channel 56. I watched the static-y, ghost-filled image on a black-and-white television with, I'd guess, a 17" screen that sat on a cheap aluminum rolling stand. I thought it was the greatest show ever. This weekend, I discovered that it was actually filmed in vibrant-is-not-the-word color and that, while other people may lament that the future did not bring the flying cars and laser blasters of pulp SF, what I lament is the absence of a moonbase staffed by hot babes in go-go attire and purple wigs.

21st Century Fashions by Sylvia Anderson

Appearance of a new groovy outfit: sip

A new groovy outfit places inappropriate emphasis on a secondary sexual characteristic: drink

Conscious will incapable of keeping eyes from straying to groovily-attired secondary sexual characteristic: chug!

1980: The Future

The future seems inexplicably colorful: sip

The future seems unnervingly reliant on balsa wood and styrofoam construction: drink

You involuntarily exclaim "Yeah, that's exactly how things were in 1980!": chug!

Hey Kids, Let's Put On A Show!

Attention wanders from incomprehensible plot: sip

Actors seem to be on different pages re. how seriously to play scene: drink

Dramatic zoom!: chug!

Sunday, December 30, 2007 12:52:26 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

Raymond Chen's psychic debugging of a deadlock is everything you need to know about why the mainstream model of concurrency (in which programmer's manually manage locks and can start their own threads) is fundamentally broken.

If you're a C# or Java programmer looking at this code, you might be tempted to throw the bozo bit and say "Yech! C!" but this is precisely the same situation that one can will see in any kind of complex, multithreaded application.

Sure, Raymond Freakin' Chen can quickly debug such situations, but most of us don't have Raymond Freakin' Chen on staff. And no matter how gently Chen tries to show us how easy it is, most of us simply don't have the capacity to develop rapid, accurate intuitions into the cause of problematic thread behavior in this model.

And even if such capacity were widespread, the discipline of never doing any form of external calling (message sending, virtual function calls, invoking callbacks, etc.) while holding a lock is never going to be universal and, so long as it's not universal, this type of problem is inevitable.

Sunday, December 30, 2007 9:45:21 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Concurrency | Knowing#
Saturday, December 29, 2007

For the past few years I've felt that Subversion was a "good enough" SCM system, but I am beginning to wonder about that. In practice, SVN hits bumps quite often, especially when doing things like moving files or directories. This is always easy enough for an experienced user to correct ("svn cleanup" plus move the directories, delete the .svn hidden folders, move them back, etc.) but with my less-experienced clients I think these bumps are really clouding their valuation of SCM. In contrast, I used to have customers who felt SourceSafe was easy and used it, only to experience spectacular failures (corrupted stores).

Going forward, if I have a client who doesn't have an SCM system, I'm going to say: Vault, Perforce, or VSTS . It's too high a surface area (every developer) and too critical a function to be undermined by "it doesn't work on my machine."

Saturday, December 29, 2007 9:42:08 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Friday, December 28, 2007

Via Chris Sells comes this cryptic message from Microsoft's Doug Purdy:

We are looking for developers/testers to build a tool that I will roughly describe as "Emacs.Net".

No more details than that, but it should be enough to get your brain moving in the right direction.

Which he then elaborates in comments:

Emacs is a text editor. Emacs is used to write apps (and a whole lot more) on different platforms. Emacs is hyper-extensible. More at http://en.wikipedia.org/wiki/Emacs.
Imagine if someone wanted to write something like Emacs.Net. Actually don't imagine it, it is happening.

The literal reading of the post (a clone of emacs) is too absurd to credit. As put by a commenter:

Neat, so you want to make a clone of a free, open-source, extensible text editor that is loved by millions and write your own closed-source, proprietary, extensible-with-subscription text editor of your own?

Surely not.

So what are the relevant characteristics of emacs?

  1. text editor : But there are gazillions of text editors, including programming editors, on every platform already. Microsoft even has their own little system they seem to like. Can you think of any computing context in which text-editing is often soured?
  2. cross-platform : But Microsoft is a Windows company. I mean, sure they develop a couple things for the Mac, but le's face it, Microsoft doesn't really support other platforms. Do they?
  3. very extensible : But emacs is extended with LISP. An editor that's extended with C# or VB only is going to seem less flexible. And you can already extend VS with those languages. To really have emacs-like "hyper-extensibility," you would have to extend it using language(s) that themselves are very flexible.

---

Counting against this supposition (a Silverlight-hosted text editor based on the DLR) is that I believe that Doug Purdy works in the Workflow and Windows Communication Foundation (WCF / Indigo) teams, which isn't where I would expect such an initiative to flourish.

Friday, December 28, 2007 3:47:32 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

A client bought me an iPhone for Christmas (more-financially-successful friend's instant reaction: "You aren't charging them enough.").

My reaction is that while it's an incredible gadget, it's a pale shadow of the Kindle when it comes to reading. I am dismayed by the number of people who say "Well, the iPhone ought to be the ultimate eBook reader." The screen resolution is a joke compared to the Kindle. I was reading MSNBC on the iPhone a few minutes, started up my laptop, and thought "Oh man, this is much easier to read." The Kindle screen is that much better than my laptop display than my laptop display is to the iPhone.

Sadly, though, the browser that comes in the Kindle is very poor and I can't help but wonder if Amazon isn't content to keep it that way (Web browsing on the Kindle is via Sprint, fully subsidized by Amazon).

---

Having the Kindle for 6 weeks has made me realize how little I read mainstream books -- I read technical books (so far, none available in "native" Kindle format, although I've had luck converting PDFs from the Pragmatic Bookshelf) and a wide variety of magazines, none available on the Kindle. The lack of magazines is especially frustrating for me, since magazines come to Hawaii via boat and I receive them all a month or more after their cover data (and, of course, most subscribers receive their issues well before the cover date).

---

Another iPhone reaction relates to its locked-in development. For the moment, the only way to write a 3rd-party app for the iPhone is to develop an iPhone-friendly Web page; there are a few proprietary extensions, but mostly it's CSS and JavaScript. I have to say that there's a certain "constraints are liberating" aspect to this: the vast majority of PDA programs (todo lists and so forth) are easily-enough ported to the Web.

---

Newsgator's iPhone interface is excellent.

---

It seems that the iPhone only syncs email and calendars with Outlook, which is a disappointment, since my Outlook install seems to have been poisoned (it only runs in /safe mode no matter how many times I run scanpst) and I have been seriously considering switching to Thunderbird.

Friday, December 28, 2007 8:08:58 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Wednesday, December 26, 2007

Ruby 1.9, which involves a number of significant upgrades, is now available. This is development code, probably not ready for use in upcoming sprints / development cyclese, but I will be downloading it if for no other reason than to experiment with its Fibers implementation.

Wednesday, December 26, 2007 10:27:24 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Ruby#

A client bought me an iPhone for Christmas. It's a pretty darn slick gadget, although I doubt that I'll keep a phone plan on it (I'm pretty much either at home in my wifi bubble all day long and, when I go out, I'm often going to beaches and other salty places).

For the moment, though, I have an unlimited data plan. I may try Twittering and see if that becomes interesting. Here's my feed: http://twitter.com/lobrien

Wednesday, December 26, 2007 8:52:37 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Sunday, December 23, 2007

Were I to graph the calories burned per week exercising for group in my social network (were I to bother maintaining my Facebook page), it would create a normal distribution. This graph would probably correlate pretty directly to their perceived fitness and their enthusiasm for exercising. Within this group I could find a subgroup that was slightly-more-enthusiastic-than-average (and subgroups that were slightly-less- and considerably-more- etc.). 

image

If I had a New Year's resolution to burn more calories per week exercising, I could compare myself with a subgroup whose mean calories/week was slightly more than my average. This would be more effective than comparing myself to my most-fit friends, whose enthusiasm and dedication to fitness is as unreachable as the skills of teenagers in Halo 3 (note clever allusion to TrueSkill).

As time went on and my New Year's Resolution waxed (or waned), the group used to determine my subgroup would shift (hopefully toward the more fit, but always to "slightly more motivated than your current evidence"). Note that it's possible for essentially everyone to be in such a group, given a large enough set, i.e., the set of people who are interested in getting more fit.

I understand there's money to be made in Facebook applications. Does such an application exist?

Sunday, December 23, 2007 9:36:08 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Sunday, December 09, 2007

BeepBeep is a high-accuracy acoustic ranging system for mobile phones. It supports Pocket PC phones running Windows Mobile 5.0 or subsequent versions.

I'm not even going to pretend to have the time to play with this.

Sunday, December 09, 2007 7:00:14 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Saturday, December 08, 2007

Gee, what a surprise, no CGI can do justice to "broken-down drunk exiled prince of the armored polar bears." But The Golden Compass was not nearly as incomprehensible to those who hadn't read the books as I thought it would be. My wife quite liked the movie and hadn't been prepped for the story (other than by me saying things like "The books are Lord of the Rings good"). For one thing, the movie starts by explaining there's a multiverse, that daemons are souls, and that Dust is central to tying everything together.

My biggest problem with the movie, actually, was that it lacked Pullman's spine of suspense and discovery. Compared to the books, it was just one damn thing after another. I had other problems, too, like the alethiometer ("golden compass") being a freaking television set when the whole point was that it was symbolic.

The movie was actually more openly anti-Magisterium/Church than I remembered the first book being, which goes hand-in-hand with the overall simplification of the text: there is no question from the get-go who are allies and enemies. On the other hand, at this point the Magisterium is presented as a pseudo-militaristic fascist power and you'd have to be wound pretty tightly to bristle at what's on the screen. (Now, how they can do the third book without the anti-Narnia stuff being on the screen, I dunno'.)

 

---

CGI's come an incredible way, of course, and fur seems to be a done deal (Pan as a wildcat was done well, and for that matter, Pan in general was very good, with lots of shapeshifting). I think with big animals (like, say, armored bears) they're still falling short. They don't give proper attention to musculature (which is amusing, because if you look at 300 or Beowulf, you see an attention to human muscles that borders on fetishistic). One of the sublime moments in my life was seeing the back of a blue whale flex as it dove and seeing the flex of muscles 3 feet wide. Power, more than scale, is what is humbling about large animals.

Saturday, December 08, 2007 9:22:16 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

The biggest problem with tag-based languages (<h1><% someCode %></h1> : the ASPs, the ColdFusions, the PHPs...) is that they facilitate monolithic code. This is related the big criticism of XML and DOMs for data structures, too: they facilitate the creation of hierarchies, not graphs. (As always with programming, the issue is "facilitates" not "possible"...)

My dear friend "Bob" creates horrific pages that are hundreds and even thousands of lines long, with <cfif> at line 100, and then a <cfelse> at line 837 and then a ... and ColdFusion isn't valid XML and there's a combination of HTML indentation and ColdFusion code indenting.

Just absolutely impenetrable stuff, and while I'm more than willing to blame many problems on Bob, I think this is a problem that the tool he uses (ColdFusion) is facilitating.

Saturday, December 08, 2007 7:00:17 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | Languages#
Friday, December 07, 2007

Microsoft's new Volta toolset allows developers to develop their applications using standard OOP techniques and then use "declarative tier-splitting" to specify which functions should run on the client and which on the server. Erik Meijer says:

...Volta starts with a client-side perspective. That is, once developers are satisfied with an application’s functionality and fully understand the internal object interactions, they “decorate” the code with declarative attributes, or annotations, to indicate the parts of the application that should run on other tiers.... Moreover, Volta allows developers to delay irreversible decisions until the last responsible moment, greatly increasing the agility of development in intermediate phases where change is often rapid. Since developers initially create easy-to-manage, single-tier client applications, and then incrementally distribute parts to other tiers through a "refactoring" technique they are already familiar with, they can apply familiar skills to new problems – reducing development cost and risk.

I've not explored Volta, but...

This sounds like a bad idea to me. You can't refactor away the difference between an in-memory method call and an Internet message: one happens in nanoseconds and the other in milliseconds.

Meijer says "Volta dramatically reduces the amount of 'new stuff' developers must learn...." which is all well and good, but "Making lots of function calls over the Internet is a bad idea for performance, scalability, and maintenance" doesn't qualify as 'new stuff' and I think pretending otherwise is wrong-headed.

Friday, December 07, 2007 9:55:44 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

Jon Skeet's generation of the Mandelbrot set via LINQ chaotically oscillates between absurdity and relevance, sensitive to the input of what aspect of concurrency you're thinking about. If you're thinking about efficiency, you rapidly head towards "absurd," but if you think about mental models, it rapidly heads towards relevance (by way of "declarative programming"). But as soon as your train of thought moves forward, you may find yourself flung towards either side of the spectrum. I like it.

Oh, by the way, I was going to say some things about chaotic oscillators and concurrency and I realized how sad it is that I've never mastered Flash (I can program Flash, but every time I do I have to go through a learning curve again). And then I thought about Silverlight 2.0 (nee 1.1), which I can't get to run on my dev machine because I quarantine alpha and beta products in VMs and for some reason I can't get Silverlight ... but then I thought about Mathematica and how it now has a runtime player ...

Friday, December 07, 2007 8:05:38 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Monday, December 03, 2007

Jeff Duntemann (a great competitor/friend from the Computer Language days) opines that:

[T]here are three different kinds of reading:

  • Meditative reading is reading to change your state of mind....
  • Autodidactive reading is reading to teach yourself something....
  • Developmental reading is reading within the process of creating texts for reading or presentation....

What kind of reading we do bears heavily on what kind of ebook reader we'd like to have....

There will come a day when the tech is good enough so that all three kinds of reading can be done exclusively on electronic devices. But I'm also pretty sure that a single device will not serve all kinds of reading.

Which certainly seems to be supported by my Kindle experience, which continues to be excellent with "meditative reading" but could certainly not support "developmental reading," which Jeff accurately describes as involving "reading that involves quick changes of focus from one book to another, with occasional dashes to the Web. I sometimes sit in my chair with four or five books lying face down on my nearby desk, the chair arms, or the floor, like bugs."

Monday, December 03, 2007 7:00:00 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Sunday, December 02, 2007

This story of a couple that stole $7 million on Monday and were nabbed this morning reminds me of a second-tier friend from High School who was very dim. A few years after HS I heard that he had gotten a job with an armored car company doing ATM refills.

"Apparently, he decided that he'd skim some $20s off the top and who would be the wiser?"

"He got caught?" I asked.

"He got caught before lunch."

I always liked that gradation: there's risky, there's fool-hardy, and then there's caught before lunch.

Sunday, December 02, 2007 7:00:58 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Saturday, December 01, 2007

Sounds like a great opportunity to hang out with compiler geeks. Since someone's already beaten me to an LOLCode compiler for the DLR, I'll have to put in some work on my other projects: Excel# and a more serious language I've been noodling around with called Rinq, a REST-Oriented Language that supports LINQ.

Saturday, December 01, 2007 10:10:07 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | Languages#
Search
About Larry...
Flickr photostream
Subscribe: RSS 2.0 Atom 1.0
Popular Articles
Programming Sabre with Java, C#, and XML
Genetic Programming in C#
15 Exercises To Know A Programming Language
Top 10 Things I've Learned About Computers From the Movies and Any Episode of "24"
Recently Published Articles
HI
KonaKoder
Categories