Software development industry analysis by Larry O'Brien, the former editor of Software Development and Computer Language
Tuesday, February 27, 2007

I have an email account on a customer's Exchange server and I need to ensure that I reply using that account to email traveling over that server. I don't want it to be my default account for normal email. Essentially, I want to say, "When replying to mail in Outlook Folder 'foo', use account 'lobrien@foo.com'." Is there a way to implement such a rule in Outlook or do I need to install VSTO and write some kind of Outlook extension?

Tuesday, February 27, 2007 9:11:00 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Friday, February 23, 2007

Huh... I use Newsgator Online because I have so many machines. I don't know if I should hold this out as an example of the problem with browser-based applications, but suddenly Newsgator Online has stopped properly marking articles as read. The problem extends across both Firefox and IE7, so I don't think it's some errant extension in my browser.

Gee, that sucks.

Friday, February 23, 2007 9:47:36 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

Via Dale Churchward, standing in for Harry Pierson, comes word that Massachusetts lawmakers are considering a bill to punish retailers for personal data leaks. Dale speculates "there may be some good jobs in retail IT data security."

I think so. Of course, you should figure out what you love to do and figure out a way to get paid for doing it, but a good hobby for any self-employed person is trying to figure out non-glamorous retail industries that will have guaranteed growth. For instance, I live in a place that attracts retirees, little infrastructure, and has very high shipping costs -- I know that a retail medical supply company that delivered would have ample business.

Similarly, the rise of IT data security as a business cost is a fait accompli. I have a friend who does security audits for a major consulting firm and he's living large. Starting a business to do it on a smaller scale makes a lot of sense. I would imagine that it's a significant amount of upfront work and then you get a long-term maintenance contract, which is nice for a business, since I would think there's a significant amount of lock-in associated with that initial audit.

Friday, February 23, 2007 9:22:49 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

Via Bill de hÓra comes this CG image. I don't follow the CG scene so I don't know how this compares to the best work of others, but I wouldn't pause for a second if I saw an image like this in an ad. So if stills have crossed the "uncanny valley" could it be more than another decade for motion?

Friday, February 23, 2007 8:52:30 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Thursday, February 22, 2007

Fran Allen's Turing Award made me ponder future recipients. Most of the action in the software development world today rotates around business, not science. The Turing Award is supposed to honor technical contributions, not marketshare or business models. The problem with that is that "everything happened in the Golden Age ('64-'74), right?" Then I thought of an obvious candidate for a future Turing Award,someone who's elegant programs and approaches have had a lasting and practical impact. Do you see?

Ward Cunningham is a time traveller from 1969!

Thursday, February 22, 2007 8:24:03 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

The ACM honored Frances Allen with the Turing Award today. Allen started her career teaching FORTRAN to scientists in the late 50s, wrote a classic paper called Program Optimization in the mid-60s, and did major foundational work on optimizing transformations. She is the first woman to receive the Turing Award (Grace Hopper didn't get a Turing Award?!?!?).

Thursday, February 22, 2007 8:09:34 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

Mono now has native support for Visual Basic. Linux already supports a "console" approach to your hardware: pop in a CD/DVD and boot into a specialized environment. While I think general-purpose computers are more appropriate for intermediate-and-better users, the console approach is very appealing when it comes to training beginners-to-intermediate in complex fields. For instance, I would love to have a "statistics machine," that gave me access to a suite of appropriate tools for my every-few-years need to do something more sophisticated than calculate a standard deviation. (In the meantime, I have Mathematica, which of course can do anything that's asked of it, but the point is that I have to essentially re-learn my own beginner-intermediate understanding of statistics, which is not facilitated by simply having a powerful tool.)

I could imagine a LiveCD that surfaced environments for ... (snip an ever-growing list of arguably appropriate languages) ... whatever languages you felt were necessary for a programming curriculum. Of course, VB's great advantage has been that it is both accessible and professionally used. Today, it would be hard to make the argument that Ruby, JavaScript, or PHP don't fit that philosophy better.

Lisp machines are fondly remembered by some. The only Mac I've ever owned was a "IIFX" that, for me, was essentially a Smalltalk console.

Thursday, February 22, 2007 8:03:36 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | Languages#
Wednesday, February 21, 2007

A few commentors have taken me to task for drooling over the "multitouch" UI demo. My gut reaction is two-fold: I want a huge display (covering 150 degrees or so, with high-density pixels, of course) and I want direct manipulation. Although I'm pretty sure I'm right about the former, I could very well be wrong about the latter. A cautionary tale:

From about a year before it was publicly announced until recently, I have spent a good deal of time programming the Tablet PC. I did this primarily because I was a huge enthusiast for pen-based UIs. However, when you use a Tablet PC regularly and, especially, if you try to integrate pen-based components with regular UI elements, what you learn is that UIs have co-evolved with the keyboard and mouse. There's an old UI canard that "everyone agrees that mice are faster than keyboards: except the stopwatch." Similarly, I adore writing longhand with a pen, but it is unworkably slow as an input method and there is no word-processing software that is pen-specific. Not even OneNote works as an actual pen-based word-processor and while I admire the technical achievement of InkGestures, it doesn't make longhanding into Word appropriate.

More subtlely, virtually everything about the modern UI -- clicking, the size of icons, rectangular movements "through" menus, etc. -- work better with mice and the movements that come naturally from the wrist. Pens have more precision from the fingertips and use more of the arm and, of course, I don't think there's anyone who can actually draw better with a mouse than with a pen. But I know from experience that a pen is not nearly as transformative within Photoshop as you'd think -- again, the workflow is co-evolved with keyboard and mouse.

All of which is to say that I have a history of being mistaken about the long-term effectiveness of touch-based UIs.

Wednesday, February 21, 2007 9:44:04 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Tuesday, February 20, 2007

This is a much more impressive video than the one from (Siggraph?) last year. The UI that Tom Cruise's character uses in Minority Report blew me away and this video, which demonstrates "multitouch" on a big screen (rear projection, I imagine), is amazingly similar. Of course, what they're showing may not be a universally usable metaphor for users, but to me, this is like Engelbart demoing the mouse.

Tuesday, February 20, 2007 9:22:51 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | SD Futures#

CodeGear has unveiled the first of their new development environments since their not-quite-spin-off from Borland. First is Delphi 2007 for Win32, which actually supports Vista Aero development and Ajax (as well as Win32 development). Second is their first new language in years -- Delphi for PHP. No one from CodeGear saw fit to include me in the beta of these products (cough cough), but word from my spies is that Delphi for PHP, in particular, looks like a killer product.

Tuesday, February 20, 2007 8:35:08 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | Languages | SD Tools#

First John Lam and now John Montgomery have dropped broad hints that they will be making announcements at Mix, Microsoft's April-May show in Las Vegas targeted primarily at Web developers. Obviously, if one were planning on discussing something substantively at the PDC in early October, one might announce it in early May. Hmm... I wasn't planning on attending Mix, but y'know, I love announcements.

On the other hand, the Pussycat Dolls are the entertainment at the party and if there'd be one thing more depressing than standing around being reminded that I'm no kid anymore, it'd be doing it to a lip-synched version of "Dontcha."

I knew the Go-Gos. I saw the Go-Gos. The Go-Gos were friends of mine (well, Kathy once met my eyes and smiled and in that moment, I think there was a real connection). The Pussycat Dolls are no Go-Gos.

Tuesday, February 20, 2007 7:55:35 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#
Friday, February 16, 2007
Friday, February 16, 2007 9:07:23 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | Languages#

A company's developed a hamster ball in which you run while wearing VR goggles. My initial reaction was scorn, but adopting Mom's best "who cares what others think of how you look?" attitude, I have to admit it's kind of... well, I can't bring myself to say that I think it'll succeed, but it does have a certain elegance of function.

Synchronicity-ously, last night I was reading New Scientist's straight-faced pooh-poohing of the question "Could the world's energy crisis be solved by a sufficient quantity of hamsters running on wheels?" My favorite response delved into the question of whether caged wheel-running was natural or stereotypic behavior; I learned that if you give hamsters bedding of 20cm or more, their wheel-running drops dramatically. I can't wait until the next cocktail party!

Friday, February 16, 2007 8:06:51 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Offtopic#
Thursday, February 15, 2007

 Okay, this is pure gloating, but I get paid (or, at least, can justify time spent on...) to think about things as diverse as quantum computing, Ruby IDEs, and trustworthy Trackbacks. Even better, when Tina heard the humpback songstream she invoked a 'We live in Hawaii' break and we went up to freedive Puako Bay, where the whales sounded so close we kept expecting to see them appear in the distance (of course, they were actually about half-a-mile away).

So much better than having a nice car...

Thursday, February 15, 2007 1:08:10 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Hawaii | Offtopic#

I'm arranging an interview with a VP at D-Wave, the quantum computer company. Any topics I should be sure to cover?

Thursday, February 15, 2007 12:57:03 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | SD Futures#

My long-time favorite Java editor JetBrains/IntelliJ IDEA has added a Ruby plug-in that supports Rails. My initial reaction is that the vitally important quality of code completion is well below that of both Ruby In Steel and Komodo. Don't be too excited by the presence of the Analyze and Refactor menus either -- they're non-functional (or at least I couldn't get them to work).

The little "ruby" icon beside 'def HeloWorld' navigates to the view for the action -- that's pretty slick. You can generate Rails entities (controllers, etc.) via right-click context menus and you can Rake from within IDEA.

My quick feeling is that the plug-in, while welcome, seems to fall well short of the functionality in Komodo and Ruby In Steel much less the full array of functionality available in IDEA (or even ReSharper).

I wonder if anyone else is working on a Ruby IDE.

Thursday, February 15, 2007 12:35:04 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | Languages | Ruby#

Hmm... If a site delays its association with a spammer until after it's been insinuated as a "friend" within target blogs, it can at a ripe moment trigger a slew of spammy FOAFbacks. Thoughts?

Thursday, February 15, 2007 10:36:40 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Wednesday, February 14, 2007
Wednesday, February 14, 2007 9:25:28 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Hawaii | Offtopic#

Showing how clueless aggregator sites are, no one seems to be properly freaking out about the claims of D-Wave to be demoing a 16-qubit quantum computer with plans for a 1K-qubit computer within a year. CNet story here, straight link to company here.

The shocking thing about this is that a quantum computer's information processing ability goes up exponentially as its qubits increase. I believe that Shor's algorithm factors at O(n) (goodbye standard cryptography) and Grover's algorithm sorts at O(n^2). The theoretical power is even more mind-blowing: small numbers of qubits can model incredibly complex things (I'm not going to post the thing I'm thinking of without finding a source).

What triggers a certain skepticism is that the few-qubit computers that have been developed didn't look like they were going to scale and everyone expected it to be quite a slog to find a scalable architecture. D-Wave's claims imply a huge breakthrough; of course, given the epochal nature of such a breakthrough, very smart people have been looking for just such a thing.

I'm utterly stunned. I use to play with simulating quantum computations and tried in vain to develop algorithmic design methods that were comprehensible, but I did not expect a significant quantum computer until the 2020s.

Wednesday, February 14, 2007 8:31:46 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing | SD Futures#
Tuesday, February 13, 2007
Tuesday, February 13, 2007 6:30:23 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Offtopic#

Dmitry Shecthman, who knows more about OpenID than I do, doesn't get why OpenID is important to making FOAF the validation route for Trackback. Here's my thinking, which has a 90% chance of being wrong (based on historical averages):

FOAF looks like this:

<foaf:Person> 
  <foaf:name>Leigh Dodds</foaf:name> 
  <foaf:firstName>Leigh</foaf:firstName> 
  <foaf:surname>Dodds</foaf:surname> 
  <foaf:mbox_sha1sum>71b88e951cb5f07518d69e5bb49a45100fbc3ca5</foaf:mbox_sha1sum> 
  <foaf:knows> 
    <foaf:Person> 
      <foaf:name>Dan Brickley</foaf:name> 
      <foaf:mbox_sha1sum>241021fb0e6289f92815fc210f9e9137262c252e</foaf:mbox_sha1sum> 
      <rdfs:seeAlso  
        rdf:resource="http://rdfweb.org/people/danbri/foaf.rdf"/> 
    </foaf:Person> 
  </foaf:knows> 
</foaf:Person> 

Which essentially says:

And one would expect this to be part of a file created by Leigh Dodd and sitting in his Website (perhaps at www.leighdodds.com/foaf.rdf) Given that Leigh created that file, one would think that Leigh would be willing to have his Trackback server automatically create links to Dan's comments regarding Leigh's blogposts (i.e., Dan is trusted by Leigh).

So, a Web of FOAF files (n.b. <rdfs:seeAlso>) defines a social network graph and part of my premise is that anyone within a few degrees of separation from me could be trusted to -- oh I can't resist  -- "Foafback."

So my first cut at a new Foafback software would be one that receives a Trackback post of this form:

POST http://www.example.com/foafback/5
    Content-Type: application/x-www-form-urlencoded; charset=utf-8
    
    title=Foo+Bar&url=http://www.bar.com/&excerpt=My+Excerpt&blog_name=Foo;postedBy=Dan+Brickley

And looks up Dan Brickley in Leigh's FOAF file and says "Oh yeah, Dan! Swell!" Except, of course, the value of postedBy can't possibly be "Dan Brickley" or dbrickley@rdfweb.org or even Dan's mbox_sha1sum because spammers are going to figure out the Websites of those doing Foafbacks to your site and they will easily guess any publicly available identifier of those wishing to perform Foafbacks.

Therefore, I think you need an arbiter of identity; you need a service that Leigh's Foafback server and Dan's Foafback pinger can use to silently-after-the-first-time validate the identity of the person doing the posting.

The second cut at a new Foafback server works like this: The first time that Dan trys to Foafback to Leigh's site, he is redirected to Dan's OpenID provider (I think that's the term), logs in, and is told "www.leighdodds.com is requesting your email address" and Dan clicks "Okay, now and forever."

Leigh's Foafback server then receives OpenID credentials and a Foafback post (sans postedBy because the email of the person whose logged in is actually coming from the OpenID provider, not from the person performing the Trackback). Leigh's Foafback server validates that the OpenID identity (i.e., Dan's persona) is in the trust zone (i.e., can be reached via FOAF) and automatically generates a link.

So that's why I think you need OpenID.

Now, since I went to the bother of showing what a Trackback post actually looks like, I guess I should state the obvious, which is that the onus of calculating the FOAF graph ought not to be on Leigh (the original blogger) but on Dan, the Foafbacker. The Foafback pinger needs to include the route by which the poster is asserting a relationship (a list of FOAF URIs ought to suffice). The Foafback server needs to verify that route (at least once, but I can well imagine the admin software saying "These people have tracked back to you; include them in your FOAF?").

Spammers will subvert Overly Trusting Ted with second-order attacks ("Hey, love your site!" from "new friend" cutegirl15, whose FOAF is 10,000 phentermine sites) and there's little that can be done about that. But the list of targets for the spammers real purpose (which is to get links to their phentermine sites posted on high-traffic blogs) is limited to those in Ted's FOAF file. But of course Ted asserts that he knows Dave Winer, Robert Scoble, and Cory Doctorow, so the spammers have a target. But if the spammers link indiscriminantly to outbound links, they're already at 3 degrees of separation (Ted-cutegirl15-phentermine) and, of course, Ted won't validate (since Winer, Scoble, and Doctorow don't have Ted in their FOAF files). So the spammers wise up and validate the route to the potential target by checking the potential target FOAFs. But by validating along the directed graph, this severely limits the speed by which spammers can propagate "out" from Ted's trust zone (assuming that those in the top 1/2 of 1% of the blogging power curve don't become superpropagators by allowing six-degree-of-separation Foafbacks).

Tuesday, February 13, 2007 4:50:22 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | Knowing#

Is a limited recursion through a FOAF graph based on OpenID the solution to Trackback? If that sentence isn't understandable, don't worry about it, but if it parses, continue...

The big problem, of course, is the initial trackback from those outside the limits of the graph. In such a case, the attempted trackback raises the barrier above which a bot can rise: you must have an OpenID and you must propose a path through the graph. Such trackbacks are submitted for moderation (who doesn't check out those commenting on their posts? The A-Listers? Who gives a frack if this doesn't work for them? As a person well up the power-curve of blogging (99.9th percentile), I can assure you that it's not hard to read every mention that Technorati can find).  

OK, so the obvious failure mode is that Trusting Ted, who's in my trustzone, allows into his zone a mole, who becomes a conduit for spammers. Several things occur to me about this: yeah, I have a blacklist in my trackback mechanism and it, too, is FOAF. Second, Trusting Ted FOAF probably has a distinctively low inbound:outbound ratio (again, the A-List bloggers love being supernodes, so they haven't noticed that supernodes have downsides). Third, it seems to me that the graphs of