Catch up on stories from the past week (and beyond) at the Slashdot story archive


Forgot your password?
User Journal

Journal Journal: Copyright and Scarcity

I'm a bit annoyed at the use of Copyright to stop the publication of a work. Specifically, a rulebook for tabletop gaming.

I understand, and support, paying the creator for his work by granting a limited monopoly for a period of time. Copyright isn't generally a BAD thing.

But when it's used to KEEP works from being published (presumably so the users will be forced to upgrade to a later version), it seems to violate the spirit of the law, and I wonder if perhaps there isn't a way to fix that. Mandatory licensing if the work in question is out of print for more than three years?

User Journal

Journal Journal: On Miserable Programmers

There's an article on GarlicSim that caught my attention . . .

And it just doesn't make much sense. Perhaps it's just an oversimplification of how things actually work, or it's a sign of a programmer with limited experience, or maybe I've been lucky. More likely, my metrics are different.

So... what makes a programmer happy? For me, and most of the good programmers that I've worked with, what makes a programmer happy is accomplishments. The code compiles, then passes unit tests, then integrates with everyone else's code, then passes integration, functional, and acceptance tests, demonstrates well, and makes the customer happy. Good programmers also take pride in their work, so there are internal metrics that bring them happiness as well -- the code is well-documented, well-structured, organized, readable, maintainable, garners admiration from fellow coworkers, and/or is adopted by coworkers and associates; junior programmers become respected senior programmers under one's mentoring, bad programmers depart in shame, etc.

Contrariwise, miserable programmers have few events that make them happy. It's really a flux thing -- if you measure happiness-events per day, you're going to be a happy programmer; if you measure days, weeks, or months between happiness-events, you're going to be a miserable programmer.

So what's the crux of the argument on GarlicSim?

Interrupting the train of thought is bad. Not interrupting the train of thought is good.

This is not a measure of happiness or miserableness. This is a measure of OCD, or possibly Vingean Focus.

So the GarlicSim article isn't *entirely* wrong... it's just missed the basic mechanism. Interruptions slow down work, which slows the rate of happiness-event, which increases misery. Using bad tools means that more of the programmer's time is spent fighting the tools instead of getting those incremental rewards, which means when you find programmers that put up with crappy tools, they tend to be unhappy programmers. (A programmer who has a tool that's too clever will be happy, but might make a lot of other programmers unhappy. Who cares if you've figured out how to make emacs use eliza to 'help' you write documentation?)

Somewhere in this division of labor between "good technologies" and "bad technologies", "work" has been lost. Solving the problem, expressing the solution, and demonstrating the result is the work that the technologies facilitate or hinder. To put things like "go to a specific line number" in the "good technologies" and everything else in "bad technology" seems to miss the point -- work still needs to be done, and since there's no way to reduce that part to a shortcut, 'work' ends up in the 'bad technologies' slice of the pie.


And yet there are people who think that programming would be a lot more fun if it wasn't for those pesky requirements.

Computers should eliminate the tedious, the boring, and the error-prone tasks. Finding the right tradeoff is a matter of personal preference, the problem at hand, the environment you're working in, and the constraints you're working under. And, of course, being the kind of person who enjoys telling computers what to do.

User Journal

Journal Journal: Whiners

Apparently, the folks behind "Hudson" (a project I've never heard of and probably don't care about) are so upset with Oracle that they're going to change their name.

(See )

Has Oracle actually done something objectionable, with regards to the Hudson project?


Has Oracle indicated that they're likely to do something objectionable, with regards to the Hudson project?

Again, no.

But, you see, they /might/. And because they might do something objectionable in the future, it's vitally important *now* to adopt the course of action that would be required later.

There's a possibility that something bad might happen, which would require the project to take drastic steps to, oh, change its name or something. Because that's such a terrible prospect to consider, obviously the best way to keep that from happening is to act as if the bad thing has in fact happened, and take the drastic step of renaming the project.

Yes, it doesn't make sense to me either. It's like giving yourself a black eye before the alleged neighborhood has spoken a harsh word.

Some people just have to borrow grief.

User Journal

Journal Journal: Android and the iPhone

Well, I now have an Android phone.

And, frankly, I don't think Apple has much to be worried about.

Sure, it's a sexy little phone. A little bit sleeker than my year-old (to me) refurbished iPhone 3G. It has a mini-SD card that I can replace, unlike the iPhone. It has a battery that can be replaced, unlike the iPhone. The camera has a flash, unlike the iPhone.

But despite all that, I don't see giving up my iPhone anytime soon. The user-experience of the iPhone is miles ahead of the Android, and it appears that the Android isn't even heading in the same direction. The Android seems to be taking the standard path set out by all the previous phones I've owned: cluttered and crowded screens, non-orthoganal commands, and a reliance on convoluted menu trees.

On the iPhone, the natural gesture is the tap. Want to do something? Tap the thing on the screen and see what you can do.

On the Android, the natural gesture is the menu. Want to do something? Hit the menu button.

Granted, I've only been playing with it for half a day, but I'm far from impressed. Had I purchased this phone with my own money to replace the iPhone, I'd be extremely upset about now. As it's a work phone... meh. It's there for three things:

1) To receive (cell) phone calls.
2) To make (cell) phone calls.
3) To receive work-related email when I'm away from my desk.

It'll do just fine with that.

But I'm not giving up my personal iPhone. And I don't think I'm the only one.

Pity, really. I had hopes that the Android might give Apple some competition in the UI space.

User Journal

Journal Journal: Have Axe, Need Grindstone

How the lessons of the past are so easily lost....

According to SecureCoding.Cert.Org, using a goto is the recommended way to write secure code. Let's just forget about how goto is universally abused by mediocre and undisciplined programmers to create comprehensibility and maintainability nightmares, and concern ourselves only with the ideal situation.


The example is a clever bit of sleight-of-hand. A single-entrance-multiple-exit-no-goto approach is contrasted with a single-entrance-single-exit-using-goto approach. The appearance is that apples are being compared to apples, but what's actually going on is that apples are being compared to potatoes (i.e., earth apples).

The "this is how you write the code without gotos" example really should be code that's as equivalent to the "this is how you write the code with gotos" example. And if the authors can't see a way to write that sort of code (it's pretty damn obvious, IMNSHO), they're not really qualified to make the sort of judgement they're making.

It may be that one could argue that the goto-using code is still cleaner, but if you don't do a reasonable job in creating the contrasting code, that argument rings hollow. It's arguing in bad faith. It's dirty pool. It's *slimy*.

Cert doesn't get a biscuit.

User Journal

Journal Journal: Back!

A new machine is a good time to re-evaluate how one's been doing things.

Such as logging _in_ to Slashdot.

Let's see how the new interface holds up.

United States

Journal Journal: Water Rights

Ran across a pathetic entry on on water rights, but the the page required Javascript to leave comments -- so the site is run by (an) idiot[s].

Not surprising, as the author of the entry was profoundly upset at the idea of water rights. Apparently, this idiot worries about the government enslaving people by controlling the water, but never reflects on the subject for five minutes to think about what the underlying problem might be: else he (or she) might have had an actual thought, and perhaps wondered what would happen if, instead of a government (answerable to all of the people) controlling the distribution of water, a random citizen were to "enslave" people by controlling the water.

Many laws are bloated, twisted, unreadable, useless, and stupid -- but most of the laws that affect most of the people in the country are, oddly enough, not without some sort of justification. They address a problem, concern, or issue, that was or is important. Sure, the law may introduce a different problem, but that, too, is often addressed by the law (which is how we end up with such bloated, twisted, unreadable legal codes).

This isn't to say that laws shouldn't be routinely challenged, or re-evaluated; it just means that we should take a little time to learn some of the history of the issue, and ponder the concerns the law was apparently made to address. It may be that our national values have changed since then (it used to be -- as in before I was born -- illegal for a non-white to own my house, for example, something I find quite offensive), or not (I quite like it being illegal for someone to shoot me just because).


Journal Journal: parenthesis

I ran across and, well, I disagree.

"Thomas Guest" writes:

And secondly, if a coding standard were to rule on how to parenthesise, it would be difficult to find a middle ground. This leaves as candidate rules the two extremes:

1. parenthesise everything
2. never parenthesise

The first quickly leads to unreadable code. The second seems overly proscriptive.

Thomas misses the obvious middle-ground: parenthesize everything where order matters.


x = ((((a * b) * c) + e) + f);

may be overkill, but even the most passionate parenthesize everything advocates don't go that far; they write

x = ( a * b * c ) + e + f;

where every operation at the same level of precedence is left alone. This provides maximal clarity and promotes readability, as the reader doesn't have to think about the order of precedence for that language.

He then goes on to discuss order of precedence as if it's a universal rule, rather than a convention of infix notation in programming languages. (I've had this discussion with people, some of whom could not be convinced that precedence was anything other than a convention, arguing that it derives from fundamental principles of mathematics that I was too stupid to comprehend and thus it wasn't worth explaining.)

Perhaps Thomas should try programming in more than just one language. I suggest Smalltalk.


Journal Journal: Dumb DHL

I bought something online. DHL was the cheapest/fastest combination offered, so that's the shipping method I selected, and I've always used FedEx or UPS, so variety is good, eh?

And, this being the Bright New Future, I received a link to the DHL tracking page for my order. Hurrah!

Then I follow the link to see what the status of my shipping order is... and I get a blank page. WTF?

I poke around and discover that the "tracking link page" is nothing other than a form, with all fields hidden, and a fragment of Javascript to change one of the hidden fields and then submit the form. Really, it does nothing of any importance whatsoever, other than consume time, waste bandwidth, and exercise some idiot's Mad Javascript Skillz.

I fix up the page, rip out the Javascript, add a proper submit button (why do so many "web developers" despise the submit button? ), and visit the real tracking page. Whereupon I'm informed of all the information I desire... and I'm also presented with a notice that I am either using a browser that doesn't support Javascript, or that I need to enable Javascript in order to use the page.

Dumb. I already used the page. I discovered the information I was looking for.

Of course, if someone at DHL runs across this, I see three ways it can go:

  1. Nothing happens. I'm a crank on "the internet" and it's vitally important not to upset the web developers by offering up criticism; besides, I should just get with the program and jump on the Web 2.0 bandwagon and trust everyone already, instead of being a paranoid freak.
  2. The "programmer" in question takes offense at my Mad Javascript Skillz comment, and further obfuscates the javascript and content, so that I need to spend considerable time reverse-engineering (and presumably I would then give up and concede that my it's-my-computer-not-yours-keep-your-hands-off attitude is no match for mad skillz, and join the rest of the shee^Wpeople in enabling Javascript because that's what everyone else does) the page.
  3. This gets to an actual programmer who looks it over, realizes that this "technique" is indeed entirely bogus, and rips it all out, or at least makes the few minor changes needed to have the system work just fine with and without Javascript.

I think the middle option is actually the most probable outcome, and would demonstrate level of corporate stupidity that moderately intelligent people have come to expect.

Role Playing (Games)

Journal Journal: Arkham Horror

I played Arkham Horror [ ] for the first time the other night. I played the nun (7 SAN and "never lost in time and space" were the big draws), managed to engage in quite a lot of combat (especially for a newbie), and had a great time.

By the end of the night, I was almost managing to remember what to for each phase of the game.

Oh, and we "won".

Great fun.


Journal Journal: On Selling Software

I spent some time today looking for spreadsheet and word-processing software for my new MacBook. I figured I'd look to see if there was anything worth spending money on.

I had mixed results.

Some vendors offered a trial version, others, not so much. I found this astonishing... there are free-as-in-beer alternatives out there. Why for the love of ladybugs would I pay to check out some software? Because the marketing hype is so convincing? I think not!

But, that simplifies the process a bit. No trial version? Move on to the next product in the list.

Some vendors would offer to give me a trial version, but they wanted contact information first. I'm just browsing, folks; I do not feel like providing you with a name and email address. I get enough junkmail as it is, I don't need something more to ignore (or directives to go to a website to unsubscribe from something that I never wanted in the first place). Move on to the next product in the list; I'll come back if nothing else can do the job, but otherwise no go.

Now we're cooking with gas. I happily download several .dmg files (I have become a heavy user of tabbed browsing, and will often take actions in parallel). I mount each of 'em in turn to start evaluating the products.

Some of the programs are installers. They want to splatter themselves across my system for a trial version. Sorry, no. Move on to the next product in the list.

But some... some products let me run them straight from the .dmg -- drag-to-where-you-want-it kind of installation. These I can evaluate. Some work better than others, of course, but that's why I'm doing the little evaluation dance.

These vendors deserve a biscuit.

However, that's not the point of the ramble. I'm concerned with the reasoning behind those vendors who made it difficult (or at least annoying) for me to evaluate their product. How does this happen?

And why?


Journal Journal: UNIX and Security

I was poking around on the apple discussion boards, and ran across some assertions by one Scott Radloff.

He explains that OS X is safe from viruses because it's UNIX, and then he goes on to assert a number of things about UNIX that just aren't so, to the best of my knowledge. The thing is, I've heard these assertions before, from Linux advocates mostly, which means this isn't just another standard case of excessive Mac advocacy.

Scott first asserts that UNIX was built with the Internet in mind. To the best of my knowledge, UNIX was first conceived and built prior to the Internet, and its basic structure and principles were established before even the Internet's precursor, ARPANET.

Scott further asserts that "UNIX was conceived as a rock-solid fortress of security". This is laughable, as even a cursory reading of UNIX history reveals that UNIX is very much a "good enough" system. The name itself is a pun on MULTICS, about which one might be able to defend Scott's assertion. UNIX was a simplification over MULTICS (thus the pun).

This isn't to say that UNIX lacked any sort of security. UNIX was built in the days of timesharing computers -- many users, one machine -- so naturally there are *some* controls in place. Just enough to do the job, however, which is a far cry from being a fortress. Many of the modern UNIX security advantages are due to efforts to retrofit a better security system on to UNIX, rather than to design it in from the very beginning.

(MSWindows, on the other hand, comes from a tradition of microcomputers, which were not typically networked, and had one user per machine. NT attempted to bring a more sensible infrastructure, but by all accounts, that's mostly been subverted in the name of market share. And hey, it's the right business decision for Microsoft: most of their users don't actually want security.)

Scott's assertion that MSWindows "began life as no more than a port of the early MacOS to the PC" is a huge stretch. But then, when I think of "port", I think of starting with a copy of the source code of what I'm porting, not an attempt to reimplement functionality from scratch. If MSwindows is a port, then so is MacOS -- Xerox invented the GUI, after all.

Scott then oversimplifies the concept of a virus (or, less charitably, demonstrates an ignorance between virus, trojan, and worm). He, like many "UNIX-is-secure-out-of-the-box" advocates, miss the point.

A virus doesn't have to compromise the whole machine. It just has to replicate somehow.

So long as you, as a user, can create and run executable programs in your home directory, you can, in theory, support a virus.

Why there aren't viruses galore for the UNIX platforms I don't know -- it may be that the kind of person who would write a virus can't justify spending the money for a Mac or UNIX box (or can't figure 'em out); or that there aren't enough UNIX users among the general population to keep a virus viable; or that there are UNIX viruses but they're very slow, very subtle, and don't break anything; or that UNIX users tend not to run everything as root or the administrative account, making the payoff less juicy; or that the virus-writers believe the hype, and just don't try.

One of the things that most UNIXes get right, but OS X gets wrong, is that they have you create a "normal user account" in addition to the root/administrative account. The first user you create in OS X is, by default, the Administrative User. There's a reasonable justification behind it -- most users won't or can't track two distinct accounts -- but it's still uncomfortably close to the MSWindows "solution" of making everyone a Administrator so they can get their work done.

Remember, one of the first viruses ever created was created on a UNIX machine. Some of the most widespread worms spread on UNIX machines. UNIX isn't immune to malware, at least not if you have a gullible user.

Update: Seems like I'm not the only one annoyed by this attitude. I just ran across this article on unix viruses.

User Journal

Journal Journal: Upgrade Hell (with a Biscuit)

I wanted to run some OSes in a virtual machine on my laptop, but my venerable Titanium Powerbook just wasn't up to the task. It's short on disk, short on power, and starting to fall apart. So in the middle of January, I go and buy a MacBook.

(I looked at a variety of machines, but the constraints were simple: it had to ship with some variant of *nix, support wireless out of the box, and have a keyboard I could enjoy, or at least not loathe, typing on. The last is often the killer... I could've gotten a macbook pro, but the keyboards suck, for me.)

Since I'll be using this laptop for presentations, I ask the guy in the store: "This WILL run all of my existing PPC software, right?" "Yes, unless it's Classic. If it's OS X native PPC software, this macbook will run it out of the box."

Cool. That's what I need to know. Transaction ensues. New laptop is brought home.

I dig out the box for Keynote. I install Keynote. It crashes on startup.

Crap. Okay, let's poke around the Apple site.... good, here's the upgrade to 1.1.1 -- and it says this makes Keynote work for all versions of OS X 10.2.8 and later.

Download. Install.

Crashes on startup (got a little farther, but not much) again.

Damn, damn, damn.

Okay, time to use that AppleCare support I bought. My new laptop won't run software that it ought to run. I call... and end up on hold.

Eventually, I get thru to a nice support lady, and we fix the permissions, verify the partition, reinstall, and do the fix-permissions dance again.

No joy.

It _ought_ to work, but it doesn't. So... she bumps me up. Back on hold.

Eventually, I get a guy, who listens to the problem, listens to what we've done so far, agrees that it ought to work, and then explains that he'd have to spend some time researching this to find out what's wrong, and it would be faster to get bumped over to iApps Support.

Okay, fine. Back on hold.

Ten minutes in, a voice tells me I'll be with a representative inside of 15 minutes. An hour and twenty minutes later, I finally talk to someone.

He stalls on the fact that I'm having a problem with Keynote. He corrects me: "iWork".

We go around and around; he all but calls me a liar, not until he takes my CD's version number and goes away for another quarter-hour does he come back and acknowledge that, indeed, I do have Keynote, not iWork. (No apology, either.)

He then asks how I can expect such old software to work anymore. I point him at the Apple Website, and point out the bit where it says "10.2.8 or later", and get him to grudgingly agree that 10.5.1 is, indeed, "later".

"But that's an old website!" he cries. "How can you expect it to apply?"

The fact that it's an Apple website makes no difference to this drone. In fact, the suggested solution is that I go out and purchase iWork 08.

No admission that perhaps the website is misleading.

No pointer to an announcement that Keynote 1.1.1 wouldn't be supported on OS X 10.5.

No promise to fix the misleading website.

I should just go out and drop close to $90 on a new copy of iWork. (Well, he said $79, but then there's at least $8 in taxes on top of that.)

Now, I'm not against paying money for value received. Fair is fair.

But to break working software, and then to suggest that the solution is to buy more than what I want (I don't need the rest of the crap in iWork) to "upgrade" what was broken, well, I've seen that attitude before, and I want nothing to do with it.

But I've been on the phone for four hours by this point. I'm tired, hungry, cranky, and am being given crap by some jerk on the phone who is trying to tell me that I just need to spend MORE money because the promises made by Apple employees don't mean anything.

In short, I'm pissed.

No way in hell am I going to go buy iWorks anything. This is a good way to lose a customer, Apple. Shoot, this is exactly how Microsoft lost me as a customer; I used to grudgingly accept their dominance, at least at work, until I got exactly this sort of treatment,and decided that I, as a customer, could not in good conscience give my money to a vendor who treated me like that.

So... a biscuit to the Apple hardware folks.

No biscuit to the Apple iApp folks.

It's not that it would have been hard to treat me as customer.

I didn't expect to be _given_ a copy of iWork 08 (although, that would have been nice). A discount for upgrading iWork would have been plenty of motivation; AT LEAST stating that the Apple Store employee was wrong in his assertion that OS X PPC software would run on the new laptops, that the website was wrong to say "or later" instead of giving an explicit version range, and promising to fix the website RSN, would have begun smoothing ruffled feathers.

If they can't be bothered to treat me like a customer, I can't be bothered to give them money, or talk nice about 'em.

So, time to look at the competition.

I still don't look at Microsoft. Sooner or later, they'll screw you.

NeoOffice still wants a package installer. No go.

OpenOffice, however, lets me drag-and-drop from the DMG file.



However, OOo falls down after a bit, it seems. Some sort of X11 error.

However, the OOo Aqua alpha version runs, and seems pretty stable for alpha software. It's ugly as sin at the moment, but it'll play a presentation on the new laptop. I tried using it to create my presentation, but it's still a bit rough, but I can still use the old machine to create a Keynote 1.1.1 presentation, and then export it so the OOoAqua can play it.

I have great hopes for OOo Aqua.

Still... has changed for the better.

That's progress.

Have a second biscuit.

User Journal

Journal Journal: Bad developers!

I have a spreadsheet in Appleworks that I'd like to give out to a few people. Appleworks won't save it in an "open" format, but I can export it to a Microsoft Excel file. Alas, that incurs some minor corruption in some of the formulas. Since I don't have Microsoft Excel on my system (any of 'em), I can't load it up in that to fix 'em.

The folks I want to give this spreadsheet to generally use OpenOffice. As this spreadsheet started life as a StarOffice document, I figured having the up-to-date version in the Microsoft Excel format and the original in the StarOffice format would provide enough information to correct the corruption due to the exporting of this file to Microsoft Excel.

It seems OpenOffice doesn't read StarOffice files.

Bad developers! No biscuit!

Okay, I suppose I can install OpenOffice long enough to do the fixup, with the added bonus of being able to provide the spreadsheet in an "open" format. Since I'm using a Mac, the recommendation is to use NeoOffice.

So I go to download NeoOffice. They want a donation. I want to try before I buy, so I skip that bit. It's in a DMG, yay! Mount... and it's a freakin' PKG installer. WTF? Well, maybe it'll let me install it in /tmp or something. No joy... it demands the Administrator password.

Bad developers! No biscuit!

There's zero reason for an _application_ to require the Administrator password. I consider an application installation process that requires an Administrator password -- especially on the Mac, where run-from-the-DMG-file is almost a standard -- to be a sign of incompetence, arrogance, or carelessness on the part of the developers. Laziness is a virtue, but only sometimes.

And they wanted a donation?

No way. Not until they demonstrate a little professionalism and provide me, the user, a reasonable installation process.

Of course, a reasonable soul might point out that there's nothing wrong with a PKG installer, since Apple ships the PKG installer builder tool as part of the "standard" development suite. And they'd be half-right... the problem with PKG tools is that it doesn't do the right thing and allow the user to choose where and how to install an application (no matter what the developer does or doesn't do). Apple developers dropped the ball here.

Bad developers! No biscuit!

Sometimes folks wonder why "the average users" get so annoyed at developers. This is why. We have a tendency to take reasonable choices away from the end-user, instead of building our tools (especially our installation tools) to preserve the user's sense of control over the hardware that they've paid for and use on a daily basis.

User Journal

Journal Journal: How does Sun do it?

So here I am, wanting to get a good set of Solaris 10 installation disks, and not wanting to go through the bother of downloading and burning a set. "No problem," thinks I, "I shall simply pay the $35 and order a media kit."

Sun's web-pages suck.

You'd think that a company with so many talented designers, engineers, graphic artists (you have to admit, their logo is cool and they have a very good eye for color), and so forth could manage to come up with a usable website. But noooo....

I suppose that $35 could be selling at a loss for them, and selling onesies and twosies isn't worth the cost or infrastructure -- but why then offer to sell it to me anyway? What's the use of teasing me by offering to take my money, and then going through all sorts of effort to make it difficult?

No wonder they're in trouble.


Yay Sun!

They fixed it. Or I found an alternate approach at that worked. For free. And the media kit arrived in just a couple of days.

Of course, it's a DVD, which means I have to go juggle hardware now....

Slashdot Top Deals

We have a equal opportunity Calculus class -- it's fully integrated.