Valid HTML Woes
SGML (and by extension, HTML), can be rather annoying to deal with. →
tail -f /dev/mind > blog
SGML (and by extension, HTML), can be rather annoying to deal with. →
...maybe I'm just embarrassed because I was hacking from home yesterday, and managed to check in a bunch of files with my standard boilerplate "This is *my* code, why are you even reading it?" license at the top. →
Sometimes, I think of ways that our lives could be simplified. Then I write them in my blog, so I can point at them whenever I want to complain about how much better the universe would be if I were in charge. →
The movie kicked arse. →
If on a major holiday or birthday you buy a girl a gift from The Body Shop, you may as well be writing "I didn't have the faintest clue what to get you, so I ended up taking the path of least resistance" on the wrapping paper. →
When search stop words get you in trouble. →
Why do Java applications have a tendency to grow scripting languages and a plethora of configuration files? →
So what happens if you test those higher-level components with mock objects? Well, you sort of end up with tests that do absolutely nothing but test a series of method calls on mock objects. What are you testing, really? →
A rambling account of finding tests that don't clean up properly after themselves using a TestDecorator →
Happy birthday to me! →
Thanks for everything, Cirrus. →
"Train yourself to think about where to put the halt, not to think about what the problem is. Of course it’s a great feeling when you can reason to the problem. But we’re not here to make our brains feel good, we’re here to get the code working as quickly as possible." →
One of the biggest problems these days is information overload: there's just so much information out there that needs to be digested and kept on hand. Using the Internet as my swap-space leaves much more room in my head for the important things →
And Bill still believes that what is best for us is what is best for him: Microsoft dominating every market they play their hand in, until all competitors are ashes. →
It's not spam, it's targetted advertising! →
And you (OK, I) end up in situations where B is throwing a NullPointerException where it's being called from A (via the helpfully provided A->B plugin). Is it a bug in A? Is it a bug in B? Is it really a bug in C, the invisible piece of infrastructure that introduced A to B? →
I've had my own bad experience with stand-up meetings, but I've also had good ones. I think, however, that I've been able to observe _what_ makes the meetings good or bad. So here's a couple of stand-up meeting antipatterns that I have observed, and refactored solutions that I have seen work. →
Cocoa is one of those frameworks that makes the simple things simple, and the difficult things possible. →
It's a whole bunch of people saying interesting stuff, but the stuff hangs around indefinitely. It's very easy to dredge up a reference from a vague memory. →
[Jones] went out to bat during the famous tied Test of 1986 at Chidambaran Stadium, Madras, despite suffering from a combination of dysentery, vomiting and feeling faint.... →
A user is able to craft some input to the program that modifies an SQL query into doing something that it shouldn't. →
Between broadcaster Channel 10, producers FremantleMedia/Grundy, record label BMG Australia and concept licensors 19, there must be a lot of people wringing their hands with glee. There's a lot of money to be made here, and with any luck, a bare minimum is going to be wasted on the "talent" →
A user is able to specify a filename to a program that allows them to access files in areas of the filesystem that should be unavailable. →
A series of articles detailing common security flaws found in software: stuff that gets reported to Bugtraq every day. If you're a developer, it's your job to know what these are, and how to avoid them. →
The enemies of security are complexity and inattention to detail. Using a "managed language" is one way to reduce complexity, but more than enough remains to make our lives very difficult. We just have to keep paying very close attention. →
I will play through the 3362 songs on my iPod in alphabetical (well, ASCII) order by song-name, starting with Regurgitator's "! (The Song Formerly Known As)", and finishing with Faith No More's "Zombie Eaters". →
Sometimes, though, a director can go to the Guild and complain that the movie was taken out of their control. The studio pressured them to stray from their vision. It was cut against their wishes. Then, the Guild will have the movie credited to Alan Smithee. →
A disconnected ramble about software, backwards compatibility, the death of shareware and inflatable penguins. →
Inspired by Diego's excellent two articles on blogging, here's the slides from a presentation I did for work a little while back on the subject. Geared heavily towards Java programmers. →
I was thinking of writing a quick program that would process my iTunes XML-exported playlists into HTML. After some thought on what would be the simplest way, I decided it might be time to overcome my distaste for XSLT. →
It's 1am and I just turned off Knights of the Old Republic. While it's shaping up to be a pretty good CRPG (and, the prequel movies aside, I'm a sucker for all things Star Wars), here's the things I have found annoying so far: →
It captures nothing about what it means to be a hacker. Worse, its drab nature captures every misconception we'd rather get away from. It's the logo equivalent of "You sit in front of a screen all day typing? And you _enjoy_ it?" →
I think the moral of the story here is that optimization is sometimes the judicious application of brute force. →
The other day I had to mess around with struts-menu, so as to make certain menu options disappear based on who was logged in. Eventually, I worked out how it's done. Mostly by reading the source-code. I figured I'd write up what I did so maybe someone else can benefit from my day. →
A while back, I wanted to demonstrate that the restrictions of the Java programming language and those of the Java Virtual Machine were not the same thing. Hence, a class called 'class'. →
Suffice to say, from this day henceforth, I will do my utmost to convince any client, customer, employer, friend, neighbour, or anyone I overhear discussing Linux in the pub that Redhat is a useless pile of fetid dingo's kidneys. →
Through the modern miracle of defenestration, the programmer is relieved of the drudgery of Javadoc. -- Alan Green →
so here I lay dreaming looking at the brilliant sun raining its guiding light upon everyone →
Early on, require that command or action classes are named by their noun first. then the verb: i.e. "UserCreateCommand", or "UserUpdateInformationAction". →
A more accurate restatement is to say that "Exceptions change the default behaviour on an error from being unpredictable, to being fail-fast". The first property that Exceptions have, but error codes do not, is this safety. →
"I don’t think writers are sacred, but words are. They deserve respect. If you get the right ones in the right order, you can nudge the world a little or make a poem which children will speak for you when you’re dead." (Tom Stoppard's "The Real Thing") →
It's a strong model: the end nodes are secure and the middle is not. It's clean, it's simple, and we just happen to have a solution for it. Problem is, it's also wrong. The end systems are not secure, and the comms in the middle is actually remarkably safe. →
One of the problems with writing is that sometimes you have an idea that is very clear in your head, but that for some reason you just can't ever quite manage to turn into a coherent article. →
From the front page of Apple's website today: The blunt art of hyperbole, and how to get everyone talking about you. →
I'm pretty sure the fridge in the Cirrus office hasn't been defrosted since I started working there, three and a half years ago. In that time, it's managed to gather up a healthy collection of ice. Today David Pinn decided to do something about it. →
Nobody dies cleanly in Kill Bill. The bodies don't fall out of frame with a minimum of mess. They fountain unnatural torrents of blood, and stay where they lie, or they crawl out desperately with what limbs they have remaining. There is no sanitized violence, there is only brutality. →
Once you can reach across your desk and play that sample at any pitch you desire, it's hard to stop. Even though you know you're sending your co-workers insane. →
The web does not exist to serve Google. The web should not stay stagnant so as not to break its search engine. The web evolves continuously. It is up to Google to change itself to adapt to what people want to do with the Web. →
Like quite a few people, I'm going to add my voice to the throng and say that Joel Spolsky's latest essay, 'Exceptions', is the first of his writings that I can remember looking at and thinking, "Man, that's just wrong." →
After seeing both X-Men 2 and League of Extraordinary Gentlemen this year, I have come to the conclusion that Hollywood has great difficulty writing a script for an ensemble superhero movie. As a theatre patron, I would like to suggest the following script guidelines for anyone attempting such a movie in the future. →
A day in the life of those online quizzes. →
One of my favourite cautionary tales about the assumptions that nerds make about the Internet comes from when I was working for an ISP. →
Given the use of the phrases "is ... fully featured", "can be easily configured", and "has a plugin architecture" in its description, what stage of development would you assume the project is in? →
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." -- Brian W. Kernighan →
'Just' is a vague, almost condescending diminutive. Nine times out of ten, it means this: "I do not know, but it is in my interest to estimate optimistically." →
I keep hearing how wonderful Visual Studio .NET is, and how it kicks the ass of any Java IDE. Unfortunately, I mostly hear this from people who haven't used a Java IDE in the last three years, and I haven't used Visual Studio in about... er... five. So I just grit my teeth and say "Yes, whatever you say". →
One of my possibly annoying habits is inserting pop-culture references into random conversation. →
NetNewsWire has a really cool feature whereby it highlights changes that have been made to an RSS item. The transparency of weblogging can be quite daunting sometimes. →
With the help of some links from Les Orchard, I've managed to enable the extended desktop on my iMac. →
For the first time since buying the iMac in February, I have a reason to be disappointed in it. This is the first thing about the machine that hasn't "just worked" for me. →
A quick newbie's guide to this exciting new coding paradigm. →
Problem: I have a list of objects. I want to create another list containing the id property of those objects. Solutions in seven and a half languages. →
I was thinking last night that I haven't really bought many CDs lately. I guess it's partly because (IMHO) the music scene is going through one of those downturns during which it doesn't produce much that I actually like. Or perhaps it's just that I'm finally getting older and my ability to adopt new music has atrophied. →
I'm not a big fan of Network Address Translation. Its security benefits are minimal compared to a similarly configured firewall, and its disadvantages are legion. It's a tool that's blocking the free flow of data, segmenting the Internet and bloating protocols, while at the same time being misused as an excuse not to improve the infrastructure surrounding it. This is just a bad thing. →
Probably the most glaring of my many character flaws is my ability to procrastinate pretty much forever. Over the years, this has led to me putting up with situations that most people would just do something about, because I was always going to "do something about it tomorrow". →
Wherein Charles discovers he really isn't as keen on his hosting provider as he previously thought. →
I recently bought a keyring-sized 256Mb USB flash drive. This got me thinking about just how portable our data is going to become, even without networks. →
I'm beginning to wonder what we expect from our fellow man. →
Finally, Apple have updated the 15" Powerbook. →
Verisign, it seems, have the trump-card. By putting a wildcard DNS on '.net' and '.com', they are redirecting every single domain typo to their own search page. I can't even begin to describe how much this whole idea annoys me. →
I sat staring at the screen for a very long time. It seems that ten years after leaving school (and five since I last studied mathematics in any meaningful way) my mathematical skills have atrophied to the point where I'd forgotten how the hell sine and cosine really worked. →
This is not a bug. The Javadoc for the Character Class explains that the toLowerCase() method does not necessarily return a lower-case letter. It returns either a lower-case letter, or the original letter if it has no lower-case equivalent. →
Your application should quietly do what it's told, but provide a way for the user to recover from mistakes. Make your actions undo-able. Make your deletions un-deletable. →
I've visited this subject before, but it's worth repeating. In my experience, the most useless feature in any public bug-tracking system is the ability to vote on bugs. →
Dear world. Fight Club was not a grand endorsement of nihilism. It was not there to reassure you that it was OK to hate the world and your life. Fight Club was a satire! →
For several years now, my Slashdot signature has been: "The more I learn about the Internet, the more amazed I am that it works at all." →
I'd say it's quite significant that I, someone who spends more of his life than he will comfortably admit to online, have never felt even remotely like visiting a URL chalked on the sidewalk. The same goes for the plethora of URLs that appear in print and television ads. Never bothered with them. →
This email was obviously written with Bayesian filters in mind. It's seeded with around 150 random, long words of the kind that you'd not expect to find in a spam, but that are varied enough that it's quite likely that at least _some_ of them will be in your filter as high indicators of non-spamness. →
Copyright does not prohibit reverse-engineering, except (thanks to the DMCA) where the thing being reverse-engineered is a copy-prevention mechanism. This is because copyright law is all about the making and distributing of copies. Under regular property law, once you have bought something, you're perfectly within your rights to take it apart and see how it works. →
I was in the pub last night playing pool. At some point during the game, my opponent mentioned something about Bronski Beat (after a few beers, you're lucky I remember this much), and my Father and I both got stuck trying to remember who the Hell the lead singer was. So I tried Google... →
"Fragmented" is a spin word. It has powerful negative connotations, implying that something that was once whole has broken into pieces. I would like to replace it with a better word: "competitive". →
I had the weirdest dream the other night... →
I would like to personally thank all the cat-lovers (even those without cats) for making "Post Pictures of Your Cat To Javablogs Day" such an enormous success. Join us same time next year, when we post candid snapshots of our favourite celebrity elbows! →
Symptom: when you're trying to access a webserver, you can connect fine, send the HTTP request fine, but then the client waits forever for a reply. Interestingly enough, if you upload a really small (Say, 10 byte) file to the server, you can retrieve it without fail. Possible Cause: something is blocking Path MTU Discovery. →
This is my cat. Her name is Cassie. She has nothing to do with Java. →
So you've had a really great technical idea that's going to change the world? Here's a very simple sanity-check. →
I loathe Cascading Style Sheets with a passion. Well, I loathe the fact that every browser supports a different, incompatible subset. →
I have come to the conclusion over the years, that the worst possible way to run any kind of volunteer online community is through democracy. Democracy is a high-overhead compromise that rarely works in the small- to medium- purpose-oriented communities that tend to arise online. And yet, people keep trying it. →
In honour of a recent comments thread on Hani's blog, I hereby declare Monday, September 1st to be "Post pictures of your cat to Javablogs" day. All are invited. If you don't have a cat, find one! →
The assumption of the OS security model is that all actions a user takes should be considered equal, and the user's authority is delegated infinitely and unchecked through software. This is the deadly assumption that causes almost all malware to spread. We should not assume that the user trusts the software he or she is running. →
To enable sender-validation in sendmail, enable this option: bird, squiggley line, sideways man, fish. →
Some people, when confronted with a problem, think "I know, I’ll use regular expressions." Now they have two problems. ---Jamie Zawinski, in comp.lang.emacs →
It turns out the bug that sapped a day of my productivity has been known since April, and nothing concrete was done about it. Go RedHat. →
Debian is a volunteer project, so the people who put the packages together do it for free. RedHat is a commercial organisation, so they need to pay their packagers, and in turn that cost needs to be transferred back to us, the user. It also doesn't help that compared to apt/dselect, RHN is pretty clunky. →
Yes, I've momentarily jumped on the audio-blogging bandwagon. Fear. →
It's tempting to try to make it impossible for people to write bad code. It's also often a waste of time: what you want is to make it impossible for people to write bad code when they should know better. →
James Gosling recently weighed into a discussion on Apple's java-dev mailing-list. Here are a few choice quotes. →
The accepted, and often unquestioned wisdom is that reinventing the wheel is bad. I attempt to redress the balance by providing a few situations where such reinvention is a good idea. →
Maybe I'm being a neanderthal here, a historical throwback due to my life as a computer nerd. Maybe the modern-day Metrosexual man scoffs at my inability to work out if that jacket really makes me look like a prat or not. I doubt it, though. After all, the archetypal Metrosexual is David Beckham, and I bet Posh picks out his clothes. →
Some long-running processing is occurring in your program. You really have no idea how long this event is going to take, but you want to keep the user as happy as possible while it is running. →
So long as Atlassian add filtering and threading features to Javablogs in imitation of the evolution of mail and news clients, the Java blogging community will continue to grow and share good information. I just can't help thinking it will be missing something: that ineffable element that makes weblogging different. →
He avoids harsh language and abstains from it. He speaks such words as are gentle, soothing to the ear, loving, such words as go to the heart, and are courteous, friendly, and agreeable to many. →
The reposts were causing the little-known newsgroup to get a lot of attention. Everybody wants to associate with, and become a part of something that is funny and successful, and this inevitably lowers the overall quality of the place being inundated with newcomers. →
Too many Open Source projects treat Version 1.0 as some kind of Holy Grail that can only be reached when the project is perfect. I find that highly annoying, because it makes it really, really difficult to tell a sketchy alpha from production code that is just still in pre-1.0 because the author wants it to do everything. →
What it is, however, is highly resistant to floods of crap. The network routes around such damage easily. Nobody finds it interesting, nobody links to it, so it may as well not be there. Which isn't to say that AOL weblogs are going to be all crap: they'll just follow the general distribution such services have shown elsewhere. Those that aren't crap will be linked to, and become part of a larger section of the blogosphere. →
What occurred to me, was the well-known fact that the modern corporation exists as a means by which people can get involved in risky ventures, and then be protected from having to pay their debts by the government if the venture fails. Put that in your pipe and smoke it, Libertarians. →
The law is not code. It is not compiled into an inviolate binary and run by a deterministic system. It is passed through the heads of human beings whose job it is to interpret the intent of the law. Courts generally look with disdain upon ‘clever’ interpretations of the law, unless that interpretation follows the court's conception of justice. →
Since we now have number portability, the net difference in cost and convenience between me staying with Vodafone or switching to a new provider is... zilch. Hence, a certain sale was turned into a vaguely pissed off customer with an incentive to see if he can get a better bargain elsewhere. →
Q: What can you brush your teeth with, sit on, and telephone people with? A: A toothbrush, a chair and a telephone. →
Maybe that means I'm not an alpha nerd any more. In twenty years some ten year old kid is going to try to teach me how to use the descendent of Tinderbox because I never caught on at the beginning, and Just Don't Understand... →
One story from Snopes that I quite like is the story of Van Halen and the Brown M&Ms. The story was that Van Halen's rider contained a clause that required a bowl of M&Ms to be supplied backstage, but with the brown ones removed. If they found any brown M&Ms, they could terminate the contract with the venue without penalty, and not perform. It's true. →
Other Director's Cuts are a marketing exercise designed to sell more copies of a video (or now DVD) by adding those bits of the movie that were filmed, but removed from the final cut because they screwed up the pacing, made the movie drag and generally added nothing to the film itself. →
This is Melvin the Money-box. He belongs to my mother. →
The maximum number of significant tasks I can work on concurrently is two. →
If you could care less about something, you are implying that there the thing in question has some measureable degree of importance, however slim, in that it is possible for that degree of importance to lessen. →
In a roundabout way, I came across a page about an IRC Channel discussing whether the channel should have a clear set of defined rules. As an IRC user for eight years, here's the formula I have found to be the only one that actually works: →
So, the moral of today's story. Don't just think about how to handle an error, also put thought into how you might recover from it. →
Hard limits, on the other hand, impose a strict cap on the disk space a particular user can be assigned. Attempts to exceed that usage are met with a reaction similar to the disk being full. Very few programs can cope with running out of disk space. →
When it says "24/7 Technical Support" on the box, I explicitly do not expect that to mean "you can email us any time of the week, but we'll only respond the next business day." →
This is just a test. Ignore it. →
I wanted to write a response to the circulating The Internet is Shit meme, but all I really kept coming back to was this piece of Usenet history from Russ Allbery →
I've been watching the RSS vs nEcho debate rage back and forth, back and forth for a week or so now. For those who came in late, don't worry what Echo is, go home. →
An architectslobby headline on Javablogs pointed out by a co-worker reads: "XML Beans: The Best of Both Worlds". While I haven't read the article it points to, I'm sure I could think up some better headline... →
I'm not making a particularly controversial (or new) statement when I say that when developing some project, having the development team "eat their own dogfood" is a very useful technique. This is an advantage Open Source can have: what you get is some very well-chewed dogfood. →
Personally, I think such polls are a blight on society. If I had a lot of spare time and absolutely no morals, I'd fight back. →
Dear Roller maintainers. "apos" is NOT a valid HTML entity reference. →
Any idiot can sit down and spend four or seven years of his life writing out his "masterpiece." You do some research, you do some hard work, you get a little help from friends and family, and you get it done. But, it takes a true writing genius (or geniuses, in this case) to create something as original as... →
Too many software developers just can't bring themselves to implement completely invisible features. They need to show off about what a great feature they just implemented, even at the cost of confusing people. Really great UI design disappears. →
The problem that Namespaces were introduced into RSS to solve was: lots of different people want to add their own custom extensions to RSS. Since RSS is such a small domain, the chances of two people coming up with identical tags with different semantics is actually quite high. →
Mid-2002, Apple release an update to their Mail app that catches 90% of spam. A year later, Bill Gates has a revelation: "Hey! Let's do something about spam!" →
Cocoa hacking reminds me just how much I dislike Swing. It took me longer to post this blog entry than it did to write the above "My First WebKit App". If only Objective-C had automatic memory management... →
I'm sure the Cancer Council of Australia</a> think they're making a really incisive point here. But why, oh why, oh why did they pick Pulp Fiction as the movie to parody? I suppose it was just because it's a well-recognised poster, but it rather kills the message. →
Random picture →
Then, of course, I realised just how recent 1999 was. I started thinking "Do things change that fast?" Then I realised, no they don't. Things still changed slowly, but if you only see the back end of the exponential adoption curve, it looks a lot faster. →
The linking patterns of weblogs did not subvert or corrupt PageRank, they simply altered the web in such a way that PageRank became less relevant, and no longer answered that question. Rather than taking the negative approach, working against the new shape of the web, patching the problem by marking down a certain class of page, Google needs to find a new positive approach, to adapt to the new shape of the WWW and work with that to once again find the answers. →
As a courtesy, I'd like to ask anyone commenting on this site to leave their real name with the comment. That is, unless you're someone I've known online for so long under an alias that I wouldn't recognise your real name. →
Penetration Testing is a security practice during which some trusted party attempts to detect and exploit weaknesses in a system's security. It is possibly one of the more fun aspects of security work, as it is the closest a legitimate 'white-hat' hacker can get to the sort of fun the black-hats get up to. →
List of various Dr Who and Anime references from Star Trek TNG →
I just closed one bug... and then as a result of closing it, opened six new bugs. (Well, five new bugs, and one umbrella-bug to link them all to). Ever feel like you're digging a hole, and eventually it'll be too deep to climb out of? →
This is why the BileBlog quickly bored me. Most of the criticisms are, indeed, accurate. Some are trivial, some are not. But each individual criticism is only dealt with in the most superficial of possible ways. Root causes aren't investigated. Improvements aren't suggested beyond "don't do things that suck". →
I phoned support to question this requirement, and was flatly told that there would be no negotiation entered into. Their reasoning was that they had some kind of fiduciary responsibility to make sure that whatever got typed in as the card number got sent verbatim to the bank. So I shrugged, and did what I was told. →
One day last weekend, I had nothing to do. I was visiting my old Radio weblog, and started wondering how many others had jumped ship like myself. 98 lines of Ruby later, I had a set of totally useless statistics. →
The languages that an interested soul could download and learn today are so much more advanced than we had back then. Now, programming is no longer a ubiquitous part of the computing environment It isn't the default mode the computer starts up in any more. Its an option you must seek out. →
Fish can be turned on by an aquatic equivalent of pornography, according to research revealed yesterday. →
It's pretty much impossible to walk from the office to the shops where I buy lunch without going past, and being accosted by at least one person soliciting for a charity. →
What are the needs of the users, however, are up to the developers to determine from all the evidence, and a bug-tracking database is a very bad measure of what is important across the whole range of users. →
For about a week we had been noticing a pretty bad smell in the kitchen. A sort of rotting-animal smell. As we leaned over to look behind the oven, the smell got stronger. →
Choosing a slogan can be tough... →
Splashscreen n. An excuse for not optimising your application's start-up time. →
I have a rather painful history of having to throw out toasters for various reasons I'd rather not go into at breakfast. Yesterday, I finally overcame my toaster phobia and bought a new one. →
I consider skinnability to be a good reason not to use a program. →
Enforcing J2EE compliance is important, because IT buyers care about being able to move Java applications to different systems, said Ted Schadler, an analyst at Forrester Research. ... →
I'm suffering from horrendous Mozilla beta-fatigue. I've been supporting the browser, using it regularly since the single-digit milestone releases (Well, M9 anyway). It had about a year of useability and stability, and then... another radical change of direction lands us in beta-country again. →
Inexorable, the harbour is going nowhere, it has nothing else to do. It will beat on this jetty day after day until it was broken, until it is out of its way. Such forces have hewn valleys between mountains, this little structure of wood and steel will be beaten down if the harbour has to wait until the end of civilisation to do it. And what has civilisation been, but a blink in the water's eye, a ripple in history? →
You are in some way subject to architectural, framework or language constraints that force you to write ugly code. For example, your UI framework requires one kind of object, your persistence framework requires another, and you keep having to convert between the two. →
I recently posted a definition of Metadata to the XP mailing-list. It's pretty basic stuff, but I figured I'd put it here in case I needed to find it again later. →
Anyway, today after dropping into the bakery to grab lunch, I decided to walk across the bridge and take some photos. I should do it again some time when it's more sunny. Meanwhile you can find the photographs in question here. →
Above all, you need a culture where quality is considered important. (This, once again, parallels security.) If the company doesn't value quality, you're never going to achieve it because everyone will be looking for ways to work around whatever measures you put in place, and nobody will ever be called to account for doing so. →
1. Compiles on my machine... →
In order for this to happen, though, I expect the people who design toasted sandwich makers for a living to know a hell of a lot about them. This is fundamentally necessary. If it were made by some guy who'd read a pamphlet one evening about how to build an electrical appliance, it'd be just as likely to blow up in my face as do anything useful. →
Sometimes I think it would be really cool to have my working day commentated by the ghostly voice from Mortal Kombat. →
Getting people to contribute to Open Source is <em>hard</em>. If you do not have sufficient motivation to take the first, important steps yourself, nobody else is going to. At most, you'll attract a bunch of other people who, like you, want to talk about the project instead of coding it. →
This, of course, took the poor student somewhat by surprise. Not the least because I tend to write rather formally to strangers, and it may have (unintentionally) sounded like I was annoyed. But anyway, you don't really expect, when you reference someone's writings in your obscure school assignment, to have the author write back and correct you. →
How Agent Smith replicates. →
I'm going to see The Matrix Reloaded in about two and a half hours. Just now, I was reading JWZ's blog and discovered that it contains evidence of the first ever technically accurate computer-hacking scene in a movie. →
A closure is an anonymous function that `closes' over its surrounding scope. Thus when the function defined by the closure is executed, it has access to all the local variables that were in scope when it was created. →
There's a lot to think about in this for Swing programmers, too. If your application has been laid out on a Windows box, chances are it's going to look wrong on OS X. At worst, you're going to find a lot of widgets fighting for space, and cropping text because the OS X widgets are just that much bigger and rounder than their Windows counterparts. Even if the layout isn't breaking, you're still not going to look comfortable on the platform because the Apple Human Interface Guidelines are very strict about how applications are laid out →
Since joining the Church of Macintosh, I have found peace and fulfilment. Finally, after years in the computing wilderness, I finally feel I have found somewhere that I belong. Don't you want to belong? →
No, procrastination week is next month. →
"...it's funny that it's now become possible to use Linux and still feel like you're selling out, but there you go." --- Kief, on being forced to support RedHat →
After eight years of being an Internet nerd, I've finally completely lost the ability to concentrate on one thing at a time. →
Static typing is declarative. Testing is procedural. Thus, when your program fails through types, the exact location of the error can be immediately ascertained: it's the point at which your type declaration becomes untrue. When your program fails a regular test, you only find the point at which the testing procedure detects the resulting misbehaviour. →
I say we take off and nuke the entire site from orbit. It's the only way to be sure. ---Ripley, in Aliens. →
Charles discovers Lisp. Again. →
The intended use of Schemix is for exploration of the Linux kernel and for rapid, interactive prototyping of Linux drivers and other new kernel features. To achieve this, Schemix will attempt to make a large subset of the kernel functionality available to Scheme programs. Interactivity is via a character device, /dev/schemix which presents a REPL (Read, Eval, Print Loop) to anyone having access to the device. →
X-Men 2 had a good plot, strong villains, good F/X and action sequences (both unfortunately overshadowed by Matrix Reloaded anticipation), and good performances by all the lead characters. What it desperately needed was a decisive, ruthless script editor. →
What happens when you cast null to an exception type, then throw it? →
They're not really My Documents, you see. They're Bill's. →
The only place where it is acceptable to swallow exceptions is in the first case: if the throwing of the exception means absolutely nothing to your application, that's the only time you can ignore it. If you're going to be swallowing an exception, have the courage to swallow it silently. If you can't muster that courage, if you have one of those guilty pangs every time you see an empty catch block, it's a good sign that swallowing the exception was the wrong thing to do in the first place. →
Classic Testing Mistakes by Brian Marick dates back to 1997, but this is the first time I've read it. It's a very good, common-sense guide to software testing. →
In Java at least, an object's type represents three different things: (a) The messages that the object will respond to. This defines the object's interface. (b) The code that the object will use to respond to these messages. This defines the object's implementation. (c) An attribute of the object, of type Class. Sometimes, people get stuck on the third one, and give it far more importance than is really necessary. →
If there's one musical instrument I detest, it's the bagpipes. →
In a previous post, I noted Paul Graham had described Java as an "evolutionary dead-end". After a lot of thinking about what this means, I've come to the conclusion that it's not really such a bad thing for Java to be. After all, the crocodile is an evolutionary dead-end too, but we don't hold that against it. →
Standard has to be one of the most over-used terms these days. Technologies compete against each other, and get into slanging matches over who is the most "standard". The term is meaningless. →
Ned Batchelder pointed to The Memory Management Glossary, which is (as would be expected) a glossary of terms applicable to memory management. I'm linking to it because I just know it's the sort of thing I'll want to be able to find in the future, and if I don't write it down, I'll forget. →
To save you following the link, the Prevalent Hypothesis is (direct quote) "That there is enough RAM to hold all business objects in your system." That's right. Users of Prevayler don't have to worry about there being enough RAM because... we assume there will always be enough RAM! →
I was thinking of writing something longer than a blog-entry. Anyway, to do this, I must pick a format. I want an open format, naturally, but I also want to be able to publish to both PDF and HTML. I want the PDF to look professional, but I don't want the HTML to look like ass. Which leaves me in a bit of a bind. →
The quality of a web-host is measured by how little you notice they exist, and in the six months I've been running The Fishbowl on their service, I've noticed them precisely once. That's a pretty good record by any account. Good work, AVS. →
One tenet of predictability is that when you make identical queries against identical sets of data, the results should also be identical. In queries that return multiple responses, this includes the order in which the data is returned. →
I, of course, haven't been deleting the junk messages, I've been moving them into a storage folder. I am willing to assume this is what's been confusing the filter into wondering what is spam, and what isn't. →
A host is a host, from coast to coast / and everyone talks to a host that's close / unless of course, the host that's close / is busy, hung or dead. →
One of the big selling-points for Apple's Mail application in OS X is the adaptive spam filter. Reviewers have gone wild praising how wonderful it is, and how it gets rid of 95% of their spam. In my experience, it has been catching about one fifth of the junk, and letting 80% through. →
The artist occasionally known as Urban_Dragon drew this the other day and sent it to me. It's really neat. Thanks Urb. :) →
Written, by me, in an IM to a cow orker: "It's one of my better ideas. Although I still think the one about putting saddles on sheep has merit." →
I'm engaged in a running battle with my father over web services. He believes in them. I don't. I admit I'm young, but I've never seen a computing revolution imposed from above. →
I was hanging around at work late, doing a few practical checks on the effects of different isolation levels on overlapping entity bean accesses under Websphere. Oh, the exciting things I get up to in my day-job! →
I don't test private methods. Being able to quickly create, move around, and change the functionality of private methods is vital to remaining agile while developing. →
PortableRemoteObject.narrow() was the first step in my steady, and now complete disillusionment in Enterprise JavaBeans. The first time I saw it, even though I was a relative newcomer to OO modeling at the time, something clicked in my head, something said to me this is so very, very wrong. →
I've written about this before. So has Mark Pilgrim, and he's got a much bigger audience than me. If you are writing a news aggregator, web robot, blog indexing tool, whatever, you MUST NOT advertise your product's website in the Referer header. If you do, your product does not comply with the HTTP standard. More importantly, you're being incredibly annoying. →
As I was paying for my copy of NetNewsWire, it occurred to me that I've bought quite a lot of Mac software in the last year and a half. Especially when compared with... well... the nothing I bought for Windows in ten years. →
I've been meaning to write an article about why I'm discouraged from using Prevayler by the over-blown and annoying hype of its supporters, but Alan has beaten me to it. →
The JSR-666 expert group has noted that since Java source is essentially Unicode, there are thousands of potential operators going begging, simply because they don't appear on regular keyboards. This minor inconvenience should not deter us from improving the language, so we are proposing the following additions: →
Another picture of my view, this time at night. →
Exception catch-blocks that took multiple exception types would be incredibly simple to implement in the compiler, would require no VM changes, and would tidy up a lot of source code. How about it, Sun. With a bit of a push, you could get this into 1.5 easily →
It's absolutely insane that there's no way in HTML to associate a caption with an image. The closest you can get is putting the image in a table, and then giving the table a caption, which is Just Wrong. And of course, because the standards bodies are going off into the ether with XHTML2, this'll never get fixed for the mainstream web. →
You find the strangest things in old piles of paper. I've been preparing to move to the new apartment, and this time I'm trying to minimise the amount of stuff I have to transfer across the Harbour Bridge, and that involves going through my old piles of paper, some of which have lain undisturbed for up to six years. →
Most Wednesday nights, you can find me at the Menzies hotel opposite Wynyard station, playing in the pool competition. I first went four years ago, and I've been a regular ever since moving to Sydney, three years ago. If you're in Sydney, pop down some day and say hi. I'll buy you a beer. →
Charles' wacky left-field idea of the day. Incorporate an optional grid-computing client into Everquest. →
February was the first time my weblog's exceeded 100,000 hits in a calendar month. And that's even if you ignore the two days where I got hit 11,000 times by the same bot. Go me. →
One of the tricky aspects of API design, especially when designing the base APIs for a programming language, is deciding what goes in, and what stays out. Some languages, such as Smalltalk, Objective-C, Ruby, Python, Perl, CLOS... Okay, a great many languages allow you to add behaviour to existing classes. Java doesn't. Which is why the humble Util is here to stay. →
I took the not-CD back to the store. I may very well download it from the Internet (where it is readily available, despite the copy-control) as an act of protest. →
Quick straw poll. Whoever wrote the Java interface to Applescript for OS X was: (a) So comfortable with AppleEvents that he or she just wanted to replicate them verbatim in a new syntax, instead of providing a useful abstraction, (b) Completely ignorant of the Java Language, (c) A sadist, (d) All of the above. →
Sure, I could treat my body better. It could do with more exercise, and a better diet. (or maybe this is my body reacting violently to the fact that I actually fed it a large quantity of salad yesterday, and it was unused to the nutritious content?) But still, it's let me down this morning, and I'm not going to forgive it easily. →
You know you've been hacking too long when you see the band-name ZWAN, and your first thought is "What does the Z stand for?" →
I'm a good programmer, and a pretty good designer. On all other counts, I'm told I interview quite well. That said, if you put me on the spot and say "Write this code in the next five minutes", I'll flounder around, and probably make a pig's breakfast of the whole thing. →
It's been pointed out to me once or twice that I don't enable comments on my posts. Today, I read that this is the number one habit of highly annoying bloggers. So in my inaugural comment-enabled post, I invite you all to say hello, in the spirit of two-way communication. →
I'm sure some people in the office wonder why the three of us greet each other in the morning with a hearty "moo". Or maybe they don't. Programmers tend towards eccentricity anyway. →
Generalise your data. Specialise your apps. Computing nirvana will follow. →
"LiveJournal is currently under a Distributed Denial of Service attack, and has been since about 5:30pm PST (1:30 AM GMT) tonight. We have been working with our upstream providers (including several major backbones) to filter traffic as quickly and effectively as possible." →
These pictures really don't do justice to the size of the crowd that turned up in Sydney today to protest against Australia's involvement in any war in Iraq. →
It's getting to the point where opinion polls on war in Iraq contemptuously ignored by my country's government, because those in power trust the power of their media allies to convince us they're right, and we're wrong. Where we all have questions we want to ask our elected officials, but get no answers because those in the position to ask them for us, have their own agenda. →
I'm considering moving from Newtown to Kirribili. I want a view of something more than just Erskineville Road, damnit. →
Javascript is a small language, but the problem didn't lie there. The problem is that what we generally refer to as "Javascript" is really the intersection of the language itself, plus the DOM (and to some extent CSS) support of whatever browser it's being run in. And it's only in the last year or so that web browsers have had anything approaching decent DOM/CSS support. →
Java, being rooted firmly in the C tradition, believes that the first number is zero. Arrays and lists begin at index 0. The first character of a String is string.charAt(0). Thanks to the legacy of time.h, Java even believes January is month 0, skewing up the mental landscapes of anyone used to thinking of June as month 6, and December as month 12. →
55. If you think you might be slurring a little, then you are slurring a lot. If you think you are slurring a lot, then you are not speaking English. →
Tonight, just before going to bed, I learned of the tragic break-up of the Space Shuttle Columbia on re-entry, and the probable death of her seven crew. To those astronauts and their families, I send my thoughts before I go to sleep. →
This is entirely Lonita's fault. The rest of my apartment will have to wait until I've finished tidying, but I thought I'd do the kitchen beforehand, just for all the beer bottles. →
People expect Extreme Programming to be undisciplined. That's not true. People seem to want to label any undisciplined process as being 'agile' or 'extreme'. That's not true either. People have found that writing an article of the form above, and sticking an inflammatory headline about Extreme Programming on it gets you lots of page-views. That, on the other hand, could be true. →
Everybody makes mistakes. My fine is attached. I believe we're even. →
Once you're used to automatic memory management, being forced to do it all manually is a real hassle. →
This mailbox is protected with an email password system, to have your email delivered please resend the message and include the string BLUEHILL in the subject. Thank You! →
Responding to Andy Oliver's "Why C# is better than Java", part two. 6-10 →
Responding to Andy Oliver's Why C# is better than Java, part one. 1-5 →
Microsoft's homepage, on the day the SQL Server worm crippled large sections of the Internet: "Today's News: Bill Gates reports on security progress made and the challenges ahead." (Image on site) →
The solution isn't defensive worms. The solution lies in the recognition (seldom expressed, lest we later regret it ourselves), that the failure to patch a seven-month bug is negligence, the failure to firewall non-essential open ports on network servers is negligence. In other matters, the failure to implement egress filtering is negligence. We could probably come up with a pretty good baseline of what is obvious systems administration negligence when it comes to security. →
Hello, Internet-wide denial of service attack. **** you, Microsoft. **** you, incompetent server administrators who are not only too lazy to get off their stupid asses and upgrade a broken piece of software, but are too ****ing clueless to put their servers behind a firewall and block access to administrative ports. →
The ancient Chinese encyclopaedia entitled Celestial Emporium of Benevolent Knowledge classifies animals into the following categories: →
Online personality tests are a load of bollocks. →
Two perspectives of where I live. →
Dan 'DJB' Bernstein can be a dickhead, but you have to respect software of the quality of qmail, and you have to respect his amusing fight against his university's patent policy. →
Dear Operating System Vendors. I no longer want to know where my files are stored. I no longer care. →
I feel pretty confident saying that a significant number of people who are using a Relational Database, shouldn't be. They shouldn't be for one of the following reasons: →
How do I remember the next morning, the last thing I was working on yesterday afternoon? →
I haven't posted a silly sign for a while. →
Apropos a discussion of the non-final-ness of final fields, a colleague came up with this gem. What does the following code do? →
The NullPointerException in Java can be incredibly annoying. In some languages, such as Objective-C, the null (or in their case, nil) object doesn't throw an exception, it just quietly returns another nil for every method called on it. I prefer the Java behaviour. Many others disagree. →
Matt Olson: How to Write Like a Wanker, "A popular misconception about text messages on the Internet is that, to be an effective communicator and earn the respect and admiration of your peers, you must be able to write lucid prose; that your messages, articles, posts and pages must be easy to understand and pleasant to read." →