Making it stick.
Friday, August 29, 2003
  Higher Values

An interesting article on "offshore" IT. ("Offshore" if you're in the US at least.)...

Libertarian IT workers who watch their jobs go overseas should derive joy from geographic shifts in employment. Their "dog eat dog" creed requires them to be happy whenever the marketplace finds a way to pay workers less and increase business owners' profits.

I thought this was an insightful connection with the seemingly disproportionate number of self-professed libertarians in the IT industry.

A couple of observations about this "offshore" movement...

What's that? We're talking about IT. How are labor conditions worse for IT workers? Well, for example, I am diabetic. Diabetic care in the US is great* but in lower cost labor markets even well off IT workers suffer from less advanced and available diabetic care. This is just one example that hits home for me.

So employers who move jobs "offshore" without providing equivalent benefits are very much saying they value their workers less. Maybe this is to simply stay competive with everyone else, maybe its to satisfy stockholders who demand growth or as much as possible in a down market. But this is still a value decision that should not be ignored for Adam Smith's sake.

In theory wages and benefits should average out. "Ours" will come down a little and "theirs" will go up. And in theory improved productivity will lead to advances in technology and society as a whole, and we'll all rise with the tide. Of course the difference between theory and practice in theory is small, but in practice it is great.

What do we really value? Are we making good choices that reflect our higher values? Don't they need jobs "offshore" too? Of course. There are no easy answers. Jobs should go "offshore" to capable people.

The real problem is we should be putting our governments (plural) to work to reflect our higher values. Governments should be made effective market shapers when the "natural" course of a market does not appear to be moving in a desired direction. What I think our governments need to be shaping is the development of "appropriate" technology. We cannot deny that we need to do more with less, and concetrate truly scarce resources where they will have the best long term benefit.

Can governments be so efficient as to reflect our higher values?

*(In spite of the fact that vendors are not eager to cure such a money maker, and religious fundementalists are not eager to appear yielding an inch to the abortion/cloning faction, yet stem cell research is neither.)  

  Use the source!

James provides a response to Danny's bare arse scenario.

I would add two things:

*Mark Weiser, "Source Code!," IEEE Computer, November 1987  

  Windley's gone off the deep end!

I know, you're going to hate this idea. You're going to say "Windley's gone off the deep end!" and "I'll never use Microsoft's ID program!" and "Microsoft will turn it to commercial advantage!" All of those things may be true, but the alternative, in my opinion, is much worse. At some point, legislatures, spurred on by their constituents, will undertake to solve this problem and no matter how well intentioned, you'll lake that solution even less---I promise.

I may not like a legislated solution but it has some advantages:

But actually...

  Dell takes customers to a new low

He said he couldn't give me his phone number or mailing address, and that he didn't have a boss who could talk to me.

Who do they think they are, the cable company?  

Thursday, August 28, 2003
  Accounting for Web Services

From Ephraim Schwartz in Infoworld: "From everyone I speak to, it is a foregone conclusion that Web services are a less-costly alternative than other integration technologies."

I sure would like to see some analysis of what these folks are claiming. What costs are they including or excluding? What systems are being integrated? What is the environment (departmental, enterprise, external, global, regional, etc.)? What are the architectural components?

I don't doubt that web services in general are the direction. That's a fete accompli. How people are using them currently, and how they are accounting for their success or difficulty is a topic worth exploring in much depth.  

  New Stuff, But Still Fun?

Gordon Weakliem's not having fun anymore...

I think I've had it beaten out of me, I've spent too many nights and weekends chasing down stupid quirks, stuff that's not even programming, just accounting and janitorial stuff. I still read programming books in my free time, but most books just depress me. That thought occurred to me while reading one of the Agile process books, so I quit reading about process and started trying to find things that would take me back 12 years, back to when Pascal was neat, and everything seemed easy.

Every time I put fun and programming in the same thought, I go to Ward Cunningham, who still seems to find ways to have fun.

Lately I have been enjoying PragDave's Katas. These get back to the heart of programming and don't require VisualJ2ESharpPlus. Just me, Emacs, and Python.

I am surprised and not surprised at the lack of an outcry for simpler ways to program. My fear is all the good ideas and fun will be left behind.

But XML-RPC is fun. And Chandler looks like it could be the source of fun. Eclipse only looks like fun seen through a Jython lens. (Jython is the best way to get an interactive experience with Java classes!)

dotnet will have the Jython kind of fun eventually. 

  XML + Java = Lisp?

What I just wrote about interactive programming with various languages brought up an old thought, and I'm not the only one to think on this. But I've not read anyone else with this same angle. I wrote...

Lists, maps, arrays, even self-referencing structures can all be entered end edited in a command loop or workspace using a very simple (i.e. few characters) syntax. There are also the mundane (now that Java brought them to the masses) aspects of these languages like garbage collection and array bounds checking.

How I believe the Java-like family will get even closer to this experience is via XML. Complex structures (i.e. nestedt structures as well as "primitive" values) is fairly simple in XML. The Java family of languages will eventually make the leap from XML constants expressed as strings and DOM'ized via a library. They will leap to the world where the DOM and the expressions are "native". These will be the "self-referencing structures that can be entered and edited in a command loop or workspace" that Lisp programmers have been doing for 40 years.

Then someone will create a Java with transparent persistence with shared paging so the structures don't all have to be in memory. Oh wait, been there, done that (more than once), and literally have several of the T shirts.

Of course these language communities first have to get over their fascination with such things as "generics" and "partial types", etc. Think simple. How simple can you go? 

  Close, but no cigar

Don Box disagrees with Jon Udell in this dynamic language discussion.

Jon writes: I think dynamic languages and interactive programming environments help make us better explorers and discoverers, and I think that's only going to matter more as time goes on.

Don counters: My confusion comes from Jon's conflation of dynamic languages and interactive programming environments... During the late 1980's, I used Sabre C[++]. Sabre was a highly interactive programming environment for C and C++... It's been almost 15 years since I've used Sabre or Smalltalk, but honestly I'm having a hard time remembering what you could do in say Digitalk's smalltalk environment that you couldn't do in Sabre.

I also used Sabre. Prior to Sabre I used Zeta C, which was a C implementation for Lisp Machines. (Get your head around that! Yes, Lisp Machines had Fortran, Ada, C, and other language compilers.) Zeta was even better than Sabre.

Language design absolutely makes a difference beyond interactive environments. This difference is what makes these languages good for exploration and discovery over more cumbersome Java-like languages.

Lisp, Smalltalk, (dynamic languages I have decades of experience with) as well as Python, Ruby, etc. have good support for not only making prototype code, they also have good support for making prototype objects and data structures.

Lists, maps, arrays, even self-referencing structures can all be entered end edited in a command loop or workspace using a very simple (i.e. few characters) syntax. There are also the mundane (now that Java brought them to the masses) aspects of these languages like garbage collection and array bounds checking.

If I had to do C or C++ programming I'd do everything in my power to use an environment like Sabre or Zeta. At a minimum I would use a conservative garbage collector (e.g. Boehm's) unless the delivery environment really could not support it.

Yes, there are languages and tools that are edging closer to the best dynamic languages. Coming from another angle we have ML, Haskell, etc. with their own advantages. But for overall programming experience, most common situations would benefit from a simple language and toolset like Lisp, Smalltalk, or Python that have been around for 10-40 years! 

Wednesday, August 27, 2003
  Is the wiki now just coming into its own?

I believe a case could be made that more innovation is taking place with Wikis today than with weblogs. Clay Shirky writes...

A wiki in the hands of a healthy community works. A wiki in the hands of an indifferent community fails. The software makes no attempt to add 'process' in order to keep people from doing stupid things. Instead, it provides more flexibility, a crazy amount of flexibility, and intoxicating amount of flexibility, allowing massive amounts of stupidity and intentional damage to be done, at will, by roving and anonymous posters. And it provides rollback.

That captures it for me. Supporting evidence of my thesis include the Bliki and the Purple Wiki. Not to mention the Atom wiki.  

Tuesday, August 26, 2003
  It's not up to me anymore

Don Box responds... I didn't realize I was a static typing loyalist.

Don't look at me. I rely on my Bayesian categorizer (PDF) for such distinctions. 8^)  

  Software Development Seen Continuing to Suck in Near Future

Chief Software Architect and Chairman Bill Gates has publicly described the company's goals to add support for model-driven development to Microsoft products leading up to the release of the company's "Longhorn" operating system, expected in 2005.

I am not convinced that IBM bought Rational for UML. The Three Amigos were last seen riding off into the sunset following the ascent of XP.

The IBM deal I think was driven by tools like ClearCase maybe, but more specifically for the embedded market.

Can MSFT make MDA shine? Maybe. 

  Dynamics: The Language Counts

Don Box continues to come to terms with dynamic languages...

More and more, however, I'm less convinced the problem is with languages per se but rather is related to how dynamic linking and binding works in most modern object systems...

The problem is that we bake a fair amount of non-semantic information into the way their code compiles against those assumptions.

...then steps back with Perl as the red herring...

I don't think the answer is for everyone to adopt Perl - if that's our only hope let's give up now.

By "non-semantic information" I guess he means "syntactic sugar"?

In any case, I think Don is half right. It *is* about how dynamic linking and binding works in a system. But how that works is intimately associated with the language design.

Have you ever used an interactive environment for a Pascal-like language? It is a very different experience from using one for Lisp, Smalltalk, or Python.

I won't mention Perl. That's the red herring for static typing loyalists. 

Patrick Logan's weblog.

March 02, 2003 / March 09, 2003 / March 16, 2003 / March 23, 2003 / March 30, 2003 / April 06, 2003 / April 13, 2003 / April 20, 2003 / April 27, 2003 / May 04, 2003 / May 11, 2003 / May 18, 2003 / June 01, 2003 / June 08, 2003 / June 15, 2003 / June 22, 2003 / June 29, 2003 / July 06, 2003 / July 13, 2003 / July 20, 2003 / July 27, 2003 / August 03, 2003 / August 10, 2003 / August 17, 2003 / August 24, 2003 / August 31, 2003 / September 07, 2003 / September 14, 2003 / September 21, 2003 / September 28, 2003 / October 05, 2003 / October 12, 2003 / October 19, 2003 / October 26, 2003 / November 09, 2003 / November 16, 2003 / November 23, 2003 / November 30, 2003 / December 14, 2003 / December 21, 2003 / December 28, 2003 / January 04, 2004 / January 11, 2004 / January 18, 2004 / January 25, 2004 / February 01, 2004 / February 08, 2004 / February 15, 2004 / February 22, 2004 / February 29, 2004 / March 07, 2004 / March 14, 2004 / March 21, 2004 / March 28, 2004 / April 11, 2004 / April 18, 2004 / April 25, 2004 / May 02, 2004 / May 09, 2004 /

Powered by Blogger