Monday, January 13, 2003


UEN Discovers the Blog.

The UEN component of the Utah blogroll is growing.  Troy Jessup is now blogging on network security and joins Jim Stewart and Pete Kruckenberg as UEN bloggers.

UEN's quote of the day:

Creativity represents a miraculous coming together of the uninhibited energy of the child with its apparent opposite and enemy--the sense of order imposed on the disciplined adult intelligence.

[David Fletcher's Government and Technology Weblog]
6:28:05 PM    trackback []     Articulate [] 

Squeaky clean Mr. Sterling. ' Mister Sterling ' takes on Washington.

 [Google Entertainment News]

I really liked the first episode of this show. It has a lot of potential.

Here's the background: California's scandal-beset senior senator has died unexpectedly. His successor will be hand-picked by the Democratic governor, who wants a problem-free fill-in until the election two years away.

A perfect placeholder: The son and namesake of beloved ex-Gov. William Sterling who, played by Josh Brolin, has a squeaky-clean past and no political ambitions.

Even so, Bill Jr. turns out to be full of surprises -- this, despite having been warned by Senate bigwigs never to surprise them.

Once he figured out that his chief-f-staff was 'old school' he fired him.  He immediately made a deal with the old guard, and f*cked them in the process.  In the 2nd episode he's gonna decide he wants to run - upsetting everyone's assumptions.

This guy would DEFINITELY come out on our side - in issues that really matter.  That's what the shows producers want you to think.  BTW  Jesse Ventura supposedly is going to do a Talk show on MSNBC.

[Marc's Voice]
6:22:32 PM    trackback []     Articulate [] 

What's after next?.

TechTV's Catalog of Tomorrow, by Andrew Zolli, feeds my inner futurologist. The childhood visions of what is possible. I've ordered my copy and can't wait.  

This is why I majored in Finance, to understand the business world's way of modeling possibilities.

This is why I studied forecasting methodologies, like the Delphi method, and dived into stochastic modeling and simulation. To model the world to understand what may come.

This is why I ate up scenario planning, the one discipline that asserts the future is unknowable.

This is why I go to Foresight gatherings and Nanoschmooze events, feeding my craving for the unfolding patterns that I will live through.

Once in while I uncover sites like Edge.org, people like Greg Rothfuss, and ideas like the Singularity that reshuffle my expectations.

And then I sigh.

[Phil Wolff: technology]
6:16:38 PM    trackback []     Articulate [] 

Top 10 Vulnerabilities in Web Applications [Slashdot]
5:30:44 PM    trackback []     Articulate [] 

25 pathetic attempts to make .NET look bad

Carlos Perez has posted 25 reasons why he thinks Java is a better platform than .NET, and I kind of feel sorry for him.  Why? Because I've written like 100 lines of Java in my life and I'm pretty sure I could come up with better arguments than these. Many of Carlos's reasons are only tangentially related to the Java platform and are more about perceptions than technical excellence. That makes me sad - Java deserves better. 

Unfortunately the reality in this industry is that perceptions matter as much as technology, so I feel compelled to respond.   I'm pretty sure I'm being trolled for doing so, but it's such juicy bait I can't help it. Before I do, let me be clear - I like software. I've been around enough platforms to find joy in all of them, including Java. Java introduced some important ideas to the mass market, many of which obviously made it into .NET and were refined in the process.  JUnit, Ant, SAX parsing, Eclipse - lots of great stuff comes out of the Java space (as well as stinkeroos like Swing). It is not my intention to smear the Java platform here, rather to smear the arguments proposed by Carlos.  So, on that note...

1. Run on Multiple Platforms from the Smallest Devices to the Largest Mainframes.
.NET is officially less than a year old and already runs a pretty fair number of places, and not all because of Microsoft. .NET is multi-CPU aware and should at least run on largish NT mainframes.  It also runs on StrongArm devices and (aside from the disaster with [Nokia?]) can run on cell phones.

2. Run Dynamic Languages
Neither the CLR nor the JVM are very good at dealing with dynamic languages since type safety is the linchpin of their security models and dynamic typing makes that very hard to enforce. That said I have yet to find a paper saying the Java platform is friendlier than the CLR, and that includes the paper Carlos cited.  Support for alternate languages is an explicit goal of the CLR and is an explicit non-goal of Java, so you'd expect it to be a little better, right?  Here are some reasons why the CLR is a richer environment for alternate languages:

  • Support for pass-by-reference and pass-by-value (Java only supports pass-by-reference for object types)
  • Support for tail calls (important for deeply recursive languages like LISP or Haskell).
  • Support for method bodies over 64k (important for some compilers that need to emit entire programs into a single method)
  • Support for "ordinary" (nonstatic nonvirtual) functions.
  • Support for user-defined value types
  • Support for Auto-boxing (the runtime can infer a boxed representation of a value type, so you don't have to manually mess with int versus Integer)
  • Classes can share constant pools, wasting less space
  • Support for two families of arithmetic operations (some that throw exceptions, some that don't).
3. Compile in One Platform Run in Another.
uhhh, Mono? Portable.NET? Compact Framework?
 
4. Smaller Runtime Download
Why does this matter?  I can buy a 100BG drive for $200US. or about $2/Gigabyte.  In this light we're talking about roughly 1.6 cents worth of disk space for Java and around 2 cents for .NET.  The only place the size of the runtime matters is for small devices. No doubt for these devices there are more Java options right now (a company here in Tucson actually does research in this area). But you don't install the standard JRE on small devices either.
 
5. No mandatory upgrades. No subscription fees. No software insurance fees.
How many MIS organizations are held hostage to microsoft's draconian licensing policies?
Guilty as charged. That said, how many Java developers are held hostage to Sun's draconian handling of Java?  Even Andy hates the JCP :)  The growing maturation of Mono makes this a less compelling argument, too.  As my friend Keith likes to say "They're both just Vendor Scum, man".
 
6. Run Multiple Versions of the VM (Runtime) on the Same Machine
On this laptop I have Mono,  Rotor, Portable.NET, and two versions of the commercial CLR running simultaneously.  Works great.
 
7. Large Innovative Open Source Community
A-ha! Good argument. I really don't think I can refute this one.  Java's been around a lot longer.  Give it time.
 
8. Low cost Commercial Quality IDE's
Not nice to make fun of sharpdevelop. For non-profit use VS.NET can be had pretty cheaply, especially if you know anyone that is in college somewhere. And Eclipse .NET integration is starting to happen.
 
9. More Available Jobs
For now.  This is actually related to 15 and 25.  Not very convincing to me. 
 
10. Better and Standardized Connectivity to Legacy Applications
I don't work in this space, but I can't imagine these vendors are planning on ignoring .NET.  But I'll concede the point - Java has more penetration in these spaces.
 
11. Multiple Vendor Choice and Support
See my response to #1. As for messaging, Carlos forgets at least  IBM MQSeries.
 
12. Compile to Machine Code
Wait a minute - isn't the whole point of Java NOT to do this? Let me be clear here - I have no beef with the Java source language.  It's nice.  But completely ditching the platform it's supposed to run on doesn't sound like much of a benefit to me. Anyway, .NET's NGEN (or "pre-jit) facility basically allows you to compile code as it's deployed onto a client machine,  and in a way that is robust in the face of security and versioning, and in a way that allows clean interaction with ordinary [JIT-compiled] code.
 
13. Future Proof
This is where I really begin to question Carlos's sanity. Java code will not become obsolete? Then let's just kill the JCP now as being irrelevant.  Sun has resisted every attempt to standardize Java in any meaningful way and could obsolesce everything tomorrow arbitrarily.  (MS did this with VB.NET and the results have not been pretty).  C++ was way more nailed down than Java and the ivy is starting to grow over its door.   Nothing is future proof.  (Except COBOL)
 

14. Most Popular Language in the Corporation
The exact same survey Carlos quotes states that

"78 percent of respondents indicated that they are currently developing for a Microsoft platform, with 28.6 percent stating that they are actively developing specifically for .NET or ASP.NET"

Sounds to me like a lot of Java programmers are using Java on Windows.  Give them time :)

15. Larger Talent Pool
Bullshit, frankly.  I have personally worked with a number of universities who include C# and .NET in their curriculum, including the University of Arizona, Cornell, University of Colorado Boulder, Texas A&M, and UC San Diego to name a few. And since many .NET concepts are familiar to Java developers any good Java developer would be productive in a week or two and feel pretty comfortable in a few months. 
 
16. More Contributions From R&D Organizations
Give this some time.  Plenty of researchers are tinkering with managed code too. MS has the funds to throw at Academia so like it or not .NET will get research interest.
 
17. Government Approved
I'm not sure how this proves Java is better than .NET.  The Government after all used to love Ada :) 
 
18. More Homogeneous and Less Complex Environment
This one betrays real ignorance and deserves special praise for it's entertainment value. First of all, .NET obsolesced many of the technologies Carlos mentions.  The Registry? DCOM? Dead dead dead.  Yes those technologies needed to die, and they did.  Now can we talk about EJB? Second, saying "Developers are competent whether its UI development or server development, everything is in [insert language here] so its understandable and therefore maintainable by everyone" is laughably naive.  Anyone who said something like that to me in a job interview would find a polite but quick end to things.  The world is complicated.  There's more to knowing how to write software than knowing what a for loop looks like.
 
19. More Deployment Options
Umm, no.  You can deploy .NET apps in most of the same ways as Java apps, and once the security story for internet apps gets better you'll basically be able to do everything.  Will everyone who likes Java applets please raise their hands?
 
20. More Searchable References
Reaching for straws.  Not worthy of comment.
 
21. Better support for Software Process Best Practices
More hilarious flailing. There are just as many hopelessly incompetent "Java experts" as there are VB hacks. (and VB hacks at least usually have some humility :). None of the things you mention are unique to .NET. JUnit and Ant are wonderful tools that quickly got ported to .NET. Spend some time in the .NET class libraries, especially in the areas of threading, remoting, and interop.  Do you really think the Java libraries are better factored?
 
22. Mature Object Oriented Relational Mapping Tools
This makes me feel icky, probably because I have a strong dislike for these tools anyway.  But sure, fine,  I'll let Carlos have this one.
 
23. More Productive Coding Tools
Umm, yeah, okay.  This is the first time I've seen someone hold up Java IDEs as being the great thing about the Java world. Eclipse and IDEA both get props from my Java homies.  The rest of them...well, it's subjective.  VS.NET certainly is not perfect (I curse at it daily) but it's pretty darn productive.  I really doubt either space has much of an advantage here.  (insert obligatory "leaky abstraction" reference here).
 
24. Cross Platform Integration with Other Languages
See my response to #1
 
25. Higher Paying Jobs
Even if you're right programmer salaries are notorious for fluctuating.  It's a very bad career strategy to just go where the money is.  There's great money to be had as an SAP consultant, yet I'd sooner shoot myself in the head.  If you're competent in *any* technology area you'll make decent money.
[Managed Space]
12:32:54 PM    trackback []     Articulate [] 

...Now With Flash!.

Glish is back, yay! Eric is diving headfirst into Flash and ActionScript, most likely a result of his involvement with Game Neverending. Expect good stuff.

Thanks to everyone who suggested solutions for my PIM needs. Unfortunately, most of the software was either too large in scope, or required changes to my host configuration ("Dear Hosting Provider: can you please recompile PHP with domxml and allow me to make arbitrary changes to your crontab? Thx."). In the end, I bit the bullet and wrote my own contact manager and calendar with PHP/MySQL. It was easier than I expected; I just get weary reinventing the wheel sometimes.

[scottandrew.com]
12:09:42 PM    trackback []     Articulate []