Matt's Mind

Tuesday, October 26, 2004

First, do not suck

Have to get this rant off my chest: I am so sick of software sucking. Today was an extreme example, but every day I use computers there's several examples of self-imposed software stupidity driving up the blood pressure.

So I propose a new maxim for software designers based on a maxim from medicine, "First, do no harm":
  • First, do not suck
So: do not tell me one thing is wrong when in fact something totally other is. Do not randomly do stupid things that I can't stop you doing. Do not assume anything that I can't correct you about.

The highlights of the random screwups so far for today:
  • Both my monitors randomly refresh occasionally, setting icons blinking, windows flashing
  • Saving a file in Acrobat sometimes burns 100% CPU for no apparent reason. Cursor still blinks in Save As dialog, but dialog is dead. Comes back after about a minute
  • Acrobat informed me that the disk for temporary storage was full (a mere 5GB free), when in fact the file name was too long.
  • Java app using XML parser works on one PC with JDK 1.4.2 but fails to find SAX parser on identical machine with identical JDK.
  • Letters take half a second to appears when typing a filename into the Save As dialog when pointing to a network drive (presumably due to the dialog trying to auto-complete the name)
  • Open an image by double clicking. Try to compare it with another image by double-clicking - replaces first image. No apparent way to turn this off.
  • Text an Excel spreadsheet that was displaying fine suddenly turns into a bunch of "######"'s. Checked that format of cell was "Text". Only by changing format to "General" did I manage to fix it
  • Word pops up irritating panel whenever I copy more than one piece of text - take a few minutes to work out how to blow that away. It then insists on selecting whole paragraph randomly when I want to select a piece. Wade through checkboxes in options to turn that off
  • While editing this post, discover that Ctrl+S publishes - I was trying for Ctrl-A to select all. Why do I need a shortcut for publishing? It's hardly something I do every few minutes.
  • An endless number of apparently temporary user account profiles are appearing in my "Documents and Settings" folder. They're using several gigabytes of disk, but can't be deleted because something is using the files. No idea what that something is though.

Wednesday, October 20, 2004

Mac'ified

Now that I finally gave into temptation and bought a 12" PowerBook and have been using it for a week, I can happily say that I'm actually more happy with it than I though I would be (and I was pretty gung ho in the first place). And for someone who's in the past looked at Mac's as the Volvo of computers, that's a happy thing to be able to say.

So many people have waxed lyrical about their conversion to Mac-land, and I don't intend to add to that, not least of all because I'm still using XP as my primary desktop OS so haven't really "converted" at all. And there's that horrible taint of the really religious Mac zealots who assume anyone willingly using anything else must be retarded or unfit to live, or at the very least in need of some pitying condescension.

However, I do see why people have such regard for the platform, because every little thing on the Mac feels like someone spent weeks obsessing over just the right way to work, look, feel and act. Everything indeed seems to Just Work. And not only just work, but give you that nice fuzzy feeling of working so well that you're sure you'll discover even more stuff later.

Things to like:
  • Fonts. The Mac's fonts are truly a work of art. Even on a relatively low-res 1024 x 768 screen they look gorgeous even at 10pt. I thought I would miss XP's ClearType, and indeed the Mac's fonts do look a little blurred compared to XP's, but they are also far more elegantly shaped and don't have the vaguely irritating red tinge around the edges that ClearType generates. Even the Windows fonts that Office installs look better on the Mac than on Windows.
  • Exposé. Let's not mince words: Exposé. Is. Fucking. Fantastic. I used to think it was a neat trick, now it's my main method of navigating through windows. I can slam the mouse up to the left corner to show all, hit F11 to show the desktop, or F10 to show what windows an app has open atm. The dock has simply become a way to launch apps, not to navigate them.
  • Consistent key shortcuts. On a laptop these are a godsend. Close a window option-W, kill app option-Q, next app window, option-left, prefs option-,. Yes Windows apps often have equivalents, but not always, especially when flipping between app windows.
  • Security. When apps need to do something that needs root, the system pops up a dialog and asks for a password - you don't need to take the risk of running with admin privileges all the time. There is a protected system-wide "keychain" for storing passwords. You can FileVault-encrypt your home directory, making me much happier about letting the system store passwords and other info like email that I'd hate anyone to get if the thing gets stolen.
  • Safari. I thought I'd use Firefox, but Safari is cool enough that I haven't yet. The only thing I miss are extensions like Adblock.
  • It just looks cool :) Everything in the UI is antialiased and looks like it's made by skilled glassblowers :) Things slide around rather than snap about as they do on XP. You get the feeling that the platform is so powerful underneath that cools things are easier to do than boring ones.
  • It runs Eclipse very nicely.

Thursday, October 07, 2004

Indigo: WS-TheEmperorHasNoClothes

From MSDN Indigo FAQ (emphasis mine):
J2EE is deeply rooted in a classic distributed object architecture (based on EJBs)—an architecture that has proven to be complex and brittle for Internet and enterprise-scale business integration scenarios. Service-oriented development is a fundamentally better way for building connected systems. But with its distributed object architecture, J2EE is not designed for service-oriented development. Indigo builds on .NET's leading-edge support for Web services, and provides a complete service-oriented programming model and integrated communications infrastructure for building and running connected systems in a productive and reliable way.
From MSDN article on developing with Indigo:
With this [stateful web service] model, private variables can be persisted and properties can be employed. Essentially, true object oriented programming is brought to Web services. Those who have used client-activated objects in .NET Remoting will find this familiar; however, this is completely novel for those used to ASP.NET Web services.
Que? On the one hand OO systems like J2EE Enterprise Java are "brittle", and on the other "true" OO programming is a good thing for developers of web services. They seem to be implying developers can have their OO cake and still adhere to Indigo's avowed goals to separate service contracts and semantics from the underlying object model. I can't see how this can happen if they're encouraging the OO mentality to persist. I also find it a little bemusing that they're actively promoting one of the key things that WS advocates abhor: stateful services.

This sort of crap is liberally sprinkled throughout MS's descriptions of why Indigo and web services are so superior to the previous One True Way of building services. They also only use J2EE as a punching bag, neglecting to note that apparently they've realised DCOM now also sucks.

While I'm certainly not the only one wondering whether the emperor has no clothes, I have to wonder whether even some of the senior, non PHB people at MS are having trouble working out why exactly they're shifting from RPC via DCOM to RPC over XML.

Wednesday, October 06, 2004

Sigh. Swing still broken in Java 5.0

I'm happy to say that this doesn't worry me much any more since I've switched to SWT for GUI development but, unbelievably, it appears Sun still haven't fixed any of the outstanding stupidities in Swing's look and feel emulation in Java 5.0. It's been seven years since the Swing project started.

For example, this image shows font glyphs that are still broken in 5.0 on Windows:
This image (via this blog) shows the glitches becoming visible in the UI when using JFileChooser. And, according to the entry, all the usual missing borders, spacing issues, etc that WinLAF fixes are still in 5.0. And this bug (Java developer site login reqd unfortunately) describes the issues in all their ugliness.

Now these issues individually are irritating, but when they're all combined they become totally frustrating to a programmer who's spent so much effort making a good GUI, only to have it suck in ways they can do nothing about. And it only confirms the sentiments of the anti-Swing bigots to see Swing apps still look as crappy in 2004 as they did years ago.

I have to wonder, as the poster notes, if the Swing guys actually ever use their own stuff on Windows. I have noticed in the past that a lot of screenshots in articles by the Swing team show the CDE (Motif) L&F, which I'm sure is emulated perfectly in all its ugliness.