(no subject)
Jun. 7th, 2005 03:53 pmJust got back from a short coding-break walk along the bikepath behind the lab. Saw a whole bunch of ladybugs on a plant. Also got a good look at the leetle-bebby prarie dogs in the adjacent open space. They are much smaller than the ones I saw earlier in the season that I thought were babies, so I guess those ones are adolescents. That means that prarie dogs either take more than a year to mature, or they have multiple litters of offspring each year. I have no idea which is true.
I'm making slower progress on my own, but it's happening. The game end sequence is much cleaner now, and I got the final debriefing window to hang out long enough to be read.
Still loathe java swing just as much as ever. I think the core concept of good UI design (and hence, good design period, for any product which is meant to be used by people, which is basically all of them) can be summed up as follows: whatever it is that people are going to do with your product most of the time, it should be good at that. If there's a common use, that should correspond to the default behavior. If there's an obvious way to interact with it, that should do something sensible. Don't punt on sensible defaults because they're more work -- that's just laziness. If you can't figure out what sensible defaults are, you have no business designing the product.
I don't think the developers of swing even had a concept of "default behavior"; they just have code that happens to function even when attributes are unset. Bad, bad, bad design, and utterly inexcusable, given that John Osterhout (designer of Tcl/Tk, which has very, very good defaults) was working at Sun at the time. I suspect that part of their mandate may have been "make sure it looks as little like Tk as possible, so we don't have to pay him any royalties".
I'm making slower progress on my own, but it's happening. The game end sequence is much cleaner now, and I got the final debriefing window to hang out long enough to be read.
Still loathe java swing just as much as ever. I think the core concept of good UI design (and hence, good design period, for any product which is meant to be used by people, which is basically all of them) can be summed up as follows: whatever it is that people are going to do with your product most of the time, it should be good at that. If there's a common use, that should correspond to the default behavior. If there's an obvious way to interact with it, that should do something sensible. Don't punt on sensible defaults because they're more work -- that's just laziness. If you can't figure out what sensible defaults are, you have no business designing the product.
I don't think the developers of swing even had a concept of "default behavior"; they just have code that happens to function even when attributes are unset. Bad, bad, bad design, and utterly inexcusable, given that John Osterhout (designer of Tcl/Tk, which has very, very good defaults) was working at Sun at the time. I suspect that part of their mandate may have been "make sure it looks as little like Tk as possible, so we don't have to pay him any royalties".
no subject
Date: 2005-06-07 03:48 pm (UTC)I'll keep my comments on swing to a mere sympathetic "blech."
But what I really meant to write is a request for more info about your game, 'cause I'm curious. So, I know it's a simulation, and that it's geology related; can you share more? I've been curious ever since you briefly described it before, and when dan showed me your webpage, my recollection is that I didn't find a description that fit what you described then; so I gave up.
If it's Top Seekrit / related to your eeeevil plans for World Domination, that's OK, I'll wait in suspense until the plans are unleashed...
no subject
Date: 2005-06-07 04:02 pm (UTC)"DLUG, the Disaster Land-Use Game, is a four-player virtual strategy boardgame about the interaction between natural disasters and urban planning."
I'll post more, probably including a link to the game's website; I just have to do some cleanup before I start throwing promo stuff around... (It's always possible the link will find its way to a potential user, and I want to maximize my chances of catching their interest!)
no subject
Date: 2005-06-07 04:26 pm (UTC)Wait. Actually, I can find it with no trouble at all, without even knowing your name. Never mind.
no subject
Date: 2005-06-07 04:36 pm (UTC)Seriously, the screen-shot looks hypercool.
no subject
Date: 2005-06-07 04:30 pm (UTC)...my initial impression, based on the one-sentence description, is: "the cool parts of sim city, the disasters and planning around them; with 4 players instead of 1 and presumably better realism surrounding results from the natural disasters. So, no UFOs or Godzilla."
(...Leading me to wonder; is Godzilla a natural disaster, and if not, shouldn't he be?)
no subject
Date: 2005-06-07 04:44 pm (UTC)I've been totally seduced by Python and the wxToolkit recently. And if you're not doing anything too crazy, the wxToolkit even works cross-platform: write in windows and use in KDE or Mac or whatever... Well, most of the time. But it still does the right thing more often that the wrong.
I recently had a discussion about the Eclipse IDE-for-everything with my advisor. She's been coding in Java a lot recently, and Eclipse makes coding in Java a lot easier: you tell it you want to start a new program and it sets up all the class static void main(int) and everything for you. Wanna add a new class? It fills in all the empty ritual framework for you.
So I tried using it for Python. Well... it helps a little bit. It handles multiple files much better than the default IDE Python comes with on Windoze, IDLE. But... well, there's just not that much empty ritual framework to fill in. Writing hello world in python is one line: print "Hello World!". Writing it in Java you have to declare the class, declare the public-static-void-ness of main, and then get to system.out.println hello world.
And I think that's really why I like Python: generally, it does the right thing, without you having to remember how to do it. If you're a reasonably experienced programmer, it does what you expect; if you're a novice programmer, it avoids having nasty traps to screw you up. It's very comforting, really.
jofish
no subject
Date: 2005-06-07 04:56 pm (UTC)It's theoretically not too hard to make even custom UI elements look like they belongs in whichever OS the user happens to be using, but I've never tried it so it might be harder in reality than in theory.
no subject
Date: 2005-06-07 04:59 pm (UTC)pseudocode as
set-look-and-feel (OS)
where OS can be Windows, Mac, Motif, or Java. There's either a fifth value for "whatever the OS really is" or a call to find out what the OS is as a value you can plug into that.
It is suboptimal that the default isn't "look like whatever the OS really is," but if an app doesn't look right the primary blame belongs with the programmer, not with Java.
no subject
Date: 2005-06-07 05:01 pm (UTC)We designed our program with sufficient modularity that we should be able to remove the UI wholesale and replace it with something better. And boy, would I love to, if I had the time. Maybe someday...
no subject
Date: 2005-06-08 05:19 am (UTC)Especially those who plug Python. I haven't really done any GUI building, but I second the rest of what jofish says. I'm so not a true computer nerd, but Python makes it so easy to fake it. But not with a deceptive and dumbed-down façade; when I am ready to advance into a new genuine computer science concept, the Python way in is almost always clear and elegant.
Spoiled by an employer-purchased copy of WingIDE, I am
- Rebar (but don't call me that if you ever come to a PyCon)
no subject
Date: 2005-06-08 05:57 pm (UTC)(I love all my brothers, especially the ones who are sisters.)
no subject
Date: 2005-06-09 09:17 am (UTC)So, National says we can't be co-ed, eh? Well, we'll just show them...
no subject
Date: 2005-06-07 07:41 pm (UTC)Being a bit of an intuitive interface geek (but never professionally trained in the matter), I find that "obvious" isn't. Not that it isn't obvious, it's that the people who know that it's obvious are few and far between. Clean, simple interfaces should be science, not art. Too often it's just bad Art.
no subject
Date: 2005-06-07 08:40 pm (UTC)The particular thing I had in mind when I wrote that was a GUI container. Most of the time, all I'm going to do is add a widget to the container and display it. So it should do something sensible, like stick the widget in the middle with a little bit of padding around it so it looks nice, since the odds are that's what I want. (This is what Tk does, and most of the time, it Does The Right Thing.)
Sure, those behaviors should be overrideable, in case I want to manage the border myself, but if there's one case that covers 90% of the uses, that should be the default. Tk gets it right; Swing gets it wrong, wrong, wrong.
(I'm a total amateur at usability, too. I've been trying to learn more about it, though, because it's both interesting and important...)
no subject
Date: 2005-06-08 06:52 am (UTC)no subject
Date: 2005-06-08 10:47 am (UTC)I think it depends.
Avoiding a busy interface, using common formats, making sure icons are legible and text isn't overly heavy--that stuff is definitely something you can give someone a set of rules around. And 95% of UI work in the world has been done before, so don't re-invent the wheel.
However, there is that 5% where what you want to do really doesn't fit the standards that have come before. Two mistakes that are often made are:
1. Try to squeeze the functionality into something that is kind of close, but not really the same thing at all.
or
2. Come up with something crazy, new, perfect for your use, but that resembles nothing that has even been used before.
There is a middle ground between the two, and I think that for this 5%, UI design becomes more of an art than a science.
How much are people going to use this interface? People are willing to commit to a steeper learning curve if they plan on getting a lot of use out of it--like a tool someone uses for work every day. People don't want to learn a whole new interface scheme to check their bank account balance once a month.
How interesting is the activity? People will learn really complex stuff for cool video games, but the aforementioned bank account tool will probably not engage anyone as easily.
What kinds of users are going to be interacting with your system? Power users like customized components if they are clever--like a calendar control--and they like tools that give them a lot of control over their input. Technophobes want to feel confident that they aren't screwing it up.
Anyway, the principles behind that 5% could be turned into a science (which I'm taking to mean a set of rules which can be applied, exchanged, and designed into perfection--an engineering task) but I think they are better placed as an art (which I'm taking to mean a matter of a series of inspirations which feed upon one another based on experience and loose best practice guidelines, creating a series of trials that get progressively closer to a subjectively "good" result).
UI hall of shame...
Date: 2005-06-10 10:46 am (UTC)http://www.userinterfacehallofshame.com/index.php?p=51
thought of this discussion.
it's an old saw, but somewhat entertaining
G