Software development industry analysis by Larry O'Brien, the former editor of Software Development and Computer Language
Monday, July 21, 2003
Free Microsoft eBooks this week: Hitchhiker's Guide to the Galaxy by Douglas Adams (!), The Flying Book by David Blatner, and Face in the Frost by John Bellairs.
Monday, July 21, 2003 5:15:10 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Tuesday, July 15, 2003

I wrote  this Web page designed for phone / PDA access that allows you to discover the 3 nearest Geocaches for a given position. Returns rough bearing and range, precise lat/lon, description, and clue (ROT13 obfuscated by default).

Tuesday, July 15, 2003 12:30:55 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

 

The technology preview of WSE 2.0 provides early access to new advanced Web services capabilities. New features include a policy framework, enhanced security model, message-oriented programming model, and support for multiple hosting environments.
[Microsoft Download Center]
Tuesday, July 15, 2003 12:14:41 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Monday, July 14, 2003

WAP is...

I wrote this "Mobile Forms App" so that you can find the nearest Geocache by entering your latitude and longitude from your phone. When I try to access it from my Nokia 3590 (a cheap phone, but still...), I can't load the form with the results because it's "too large." It's 8K! Sheesh... MobileCapabilities.MaximumRenderedPageSize is 1397! Hmm is that "per card"? Breaking the page up into cards should be easy, if that solves it...

Monday, July 14, 2003 10:38:37 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

Free Webinar on Service-Oriented Architectures, Wednesday, July 16, 11 AM PDT (2 PM EDT)

"Topic:             Â“Building a Service-Oriented Architecture”
Speaker:         Daryl Plummer, Gartner Group Vice President
Date:              Wednesday, July 16, 2003
Time:              2:00 pm Eastern / 11:00 am Pacific, 1 hr. in length
Registration:   http://www.m7.com/gartnerseminar.html "

M7 is a nice product that we gave a Jolt Productivity Award to this year. That's all I know about this, but it's a timely topic and the price is certainly right.

Monday, July 14, 2003 1:54:26 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Saturday, July 12, 2003

"Where's the outrage?" - Bob Dole, 1996.

Saturday, July 12, 2003 4:24:05 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

I have about 500 albums, which is small for a music fan. With WM9's 2:1-3:1 lossless compression, call it 120GB (500 albums * .6 uncompressed GB / album * 1 compresssed GB / 2.5 uncompressed GB). The Nomad Zen, which I think is today's most capacious player, has 60GB of storage. Okay, I think I know one thing that will be on my Christmas 2004 Christmas list...

Saturday, July 12, 2003 2:43:50 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Friday, July 11, 2003
Microsoft Reader Free eBooks: This week's freebies are I Am Madame X by Gioia Diliberto, Open Innovation by Henry Chesbrough, and The Joy Luck Club by Amy Tan.
Friday, July 11, 2003 5:34:57 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

RCA DCM215 Cable Modem reset technique: if you lose your cable connectivity, try resetting your power by physically removing the plug at the power supply (not just at the back of the modem). Apparently, this is a known issue with (at least) this particular modem.

Friday, July 11, 2003 1:02:33 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Thursday, July 10, 2003

Via Fazed, a really funny japanese table tennis video.... via [Curiosity is bliss]

This is much, much better than The Matrix Reloaded.

Thursday, July 10, 2003 5:55:18 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

I love Mono, I'm very fond of Linux, and if you give me a Mac, I promise I'll give it a fair chance!

Josh criticizes my "disregard for non-Windows platforms as a whole" in this comment. I guess that's pretty fair, at least lately, as I've been living in an all-Windows environment for, oh, the last six months or so anyway. But that's just an accident of timing: I haven't looked at Mono since last Fall and I went through a major hardware cycle over the Winter. Soon (maybe very soon if a particular contract comes through), I will get a Linux system up again. In my training material, I've made a very deliberate effort to teach C# and .NET as separate concepts from the VS.NET 2003 toolset and, to the extent possible, I've tried to make sure that all my code samples run under Mono as well as Microsoft's implementation of the .NET Framework.

Josh's last sentence is a little harsh, though. While I do believe that platform-specific programming has much to offer, I don't want there to be only one platform. I want it to be as easy to use C# to program my Linux-based Tivo as it is to use C# to program my Windows-based Tablet PC.

Not that I have Tivo yet. But when I get one, and if it can be programmed in C#, I promise I'll be hacking it!

Thursday, July 10, 2003 5:33:49 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

No penalty for programming J#.

Contrary to rumors that I've heard, I can find no runtime penalty for code written in J# as opposed to other .NET languages and specifically C#. The one significant difference I've seen in IL generated by the vjc (J#) and csc (C#) command-line compilers is that all Java instance methods are (correctly) virtual, while C# methods default (correctly) to non-virtual. That's a difference in the languages' designs that might lead to a measurable performance difference in the speed with which methods are called (perhaps that is what is going on in the Cholesky benchmarks?).

Something I'd heard, which turns out to be incorrect, is that J#'s implementation of inner classes was flawed. Inner classes are real nested classes at the IL level. So, if you prefer anonymous inner classes to delegates, J#-away with no hesitation.

Thursday, July 10, 2003 5:00:27 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Wednesday, July 09, 2003

Data point:

Once upon a time, to study the performance of square versus jagged arrays in .NET I ported to C# the source code of one of the benchmarks mentioned in the article "The NINJA project. CACM 44(10): 102-109 (2001)."

I dug it out today and ran it against the latest version of Microsoft's C# (7.10.3052.4), Mono (Release 0.25, June 25, 2003), and ran the Java version against J# (7.10.3052.0) and Java (1.4.2). I ran each test 3 times on a Motion Computer M1200 Tablet Computer (Mobile P3, 866MHz, 512MB RAM). Timing is done on either side of a function call, so this should not reflect differences in VM start-up time. Results in milliseconds:

Run # Part 1 Part 2
Microsoft C#
1 2754 3445
2 2744 3485
3 2794 3515
Mono C#
1 3435 3785
2 3385 3825
3 3395 3815
J#
1 3375 3766
2 3435 3825
3 3365 3825
Java
1 4517 4547
2 4546 4567
3 4517 4566
Source code for C#, here for J#, here for Java.
Wednesday, July 09, 2003 5:27:25 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

"dW: What do you think about software quality?

Beck: I wish developers would consider the enormous consequences of their actions. When I got my driver's license at 16, I was both elated and terrified; I had newfound freedom and responsibilities to go with it. Now, compare that feeling to when Microsoft sends me a new operating system. Do I have the same feeling? No, I think it's going to screw up my life for months. For how many decades and for how many millions of people has that negative emotion been created around software. I think it's such a shame we set our sights so low. Either you're stuck with software that works the way it works because you don't want to break it, or you get an upgrade that causes pain and anguish. I just want my stupid computer to work and it doesn't. That's not computing.

That we accept the status quo says such negative things about us as humans. If our laptops degrade at half the pace as before, that isn't progress. Sucks less isn't progress. What would it be like if you bought new software and you had that sense of increased responsibilities but also of infinite vistas? Our ambitions are so, so small compared to the opportunity.

He also talks about XP's beginnings in 1996 at Chrysler. We're using most of XP full time, and we'll be using it all as soon as we have enough people. It's really done wonders for us for project management, and I can't wait to see how much it helps developer productivity when we have full time pair programming." via [The .NET Guy]

Wednesday, July 09, 2003 1:44:39 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Sunday, July 06, 2003

Another app that better with "ink" http://www.inkwalker.com/products.htm via [Sean 'Early' Campbell & Scott 'Adopter' Swigart's Radio Weblog]

This app implies that electrical engineers (or hobbyists) can "think" in circuits the way that programmers think in code. Is that true? Does an EE go: "Yeah, I'd like to build a satellite radio. Let's see now: capacitor-capacitor-resistor...etc..."?

Sunday, July 06, 2003 4:56:37 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Saturday, July 05, 2003

Barry White has died of kidney failure.

Saturday, July 05, 2003 11:52:35 PM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

Does computational power add programmer performance? I said no in this post, Josh sarcastically agreed: "I agree whole-heartedly, if you can be a engineering-puritan and use a simple text editor and compiler, without complex build/make/ant scripts which do far more than just compile. It seems to me that with the evolution of the industry itself, software programming is much more than that now. I can't imagine a programmer today (well, I suppose I don't want to anyway) who builds an application with the luxury of not having to actually test it. The hardware requirements to run the necessary testing/environment software is what really starts to cost, in my experience. In my case, I have to test my software with 3rd party (sometimes homemade) stress-testing and unit-testing software--and these are not thin. With web/network applications, there's also the overhead of running a .NET or J2EE app/web server."

Well, first, I think that the percentage of programmers who actually do the best practice of executing a test suite as part of their compile-cycle is smething far short of 10% of the programming populace. But I'll concede the point that the hyphen in the compile-debug process is a place where a faster computer can be felt. But, I ask, how much productivity gain from a four-fold increase in processing power? A 2Ghz machine versus a 500Mhz (say) -- what productivity increase would you expect to see.

Saturday, July 05, 2003 9:34:07 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Friday, July 04, 2003

Microsoft is running a great promotion this summer -- free eBooks for Reader. Today's selections are Candy & Me by Hillary Liftin, Last To Die by James Grippando, and A Short History of Nearly Everything by Bill Bryson. Once retired, these titles will (almost certainly) not be available for free, so jump on over.

Friday, July 04, 2003 2:53:38 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
Thursday, July 03, 2003

I moved to the Bay Area 14 years ago today, as Product Review Editor of Computer Language and AI Expert magazines. My duties included administering to the BBS's, which ran on a dedicated PC connected to a 1200 baud modem, and keeping track of the CompuServe forums. My CIS account was a mighty "767" account (76702,706 IIRC).

My first vendor meeting was at Borland. Philippe Kahn asked my opinion on whether Borland should do a Modula-2 compiler; I said "Nah." Later that day, I met Nils Jensen of JPI, who showed me their Modula-2 compiler and its at-the-time-amazing multithreading capability. I remember thinking "Geez, how much of an idiot did I sound like saying that Modula-2 didn't seem very exciting?"

Thursday, July 03, 2003 6:09:38 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #

My rant in reaction to Paul Caplan's response to Angelika Langer's OP:

> I would like to hear more about
> what is wrong with the languages of today

Of all the activities imaginable, computer programming is the one in which computers should have the greatest productivity impact. And yet compared to activities that have enjoyed huge productivity gains via computers in the past 20 years (say, image manipulation), the productivity gains in computer programming are trivial. Give a 500MHz P3 to one professional graphics designer and a 3GHz P4 to another and compare their productivity: you will see a productivity difference, because this is a task / profession which has managed to leverage the computer itself. Give the same disparate hardware to two comparably talented programmers and what productivity difference will you see? None, or so little difference as to be immeasurable.

Similarly, give two designers the current feature set of a preferred professional tool (let's say, Photoshop) and the feature set of that tool 5 years ago, and you'll see a difference. In programming? Doubtful (with the notable exception of a refactoring IDE such as IDEA).

More concretely, "computer programs" are almost invariably viewed as a series of linear text streams that are converted in some way into machine instructions in some O(lines of source code) manner. 99+% of the world's code is written imperatively. Object-orientation, which is almost universally accepted as the preferred structuring mechanism for software systems, has turned out not to be universally superior for learning, comprehension, or reuse.

Persistence, business rules, interfaces: all are areas in which the way we specify, create, and maintain systems invariably trade off productivity with maintainability. If you want to do things fast, you might have some chance to use a tool that presents the problem as something other than a text stream (i.e., you might be able to use a visual builder). But those tools invariably create overly-coupled representations of the solution.

Pattern matching is absolutely fundamental to human problem-solving, but where's the computer-support for pattern matching in the task of software development? That is, why can't a programming language leverage the fact that the vast majority of computer programs are built from examples?

Test-driven design and functional programming: The whole world of TDD is based on either minimizing side-effects or making them explicit. Well, if you program side-effect free, you should have programmatic support, i.e., use a functional language, which has all sorts of implications for behind-the-scenes implementation. And if you rely on side-effects, the world of unit-testing tools is in conflict with language provisions for visibility (although in .NET, at least, you can get around visibility with sufficient security permissions).

Typing, multithreading, resource management: In all of these areas, there's an enormous gap between standard and best practices. Just as managed memory and built-in exception mechanisms are for most programmers effective "solutions" to common problems, these things should be part of the development / deployment infrastructure.

Sheesh, I haven't even started on the issue of multiple representations and semi-structured data....

What's wrong with today's languages? Everything.

Thursday, July 03, 2003 3:59:23 AM (Hawaiian Standard Time, UTC-10:00) |  Disqus link  | #
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