January 31, 2007

XML, standards, forgiveness and humanity

Highly readable post by Tim Bray about how technical reasoning can never provide sufficent answers to most interesting technical questions.The case in point is XML, correctness and how we deal with errors and you could do a lot worse than remembering the following:

There's a spectrum of situations: at one end, if an electronic-trading system receives an XML message for a transaction valued at €2,000,000, and there's a problem with a missing end tag, you do not want the system guessing what the message meant, you want to report an error. At the other end, if someone sends a blog post from their cellphone with a picture of a cute kitten, you don't want to reject it because there's an “&” in the wrong spot. The world is complicated.
When I developed domain registration backends for Ascio we had an interesting mix of customers at both ends of this spectrum. We tried to cater both to B2B domain shops that were basically 1 or 2 really good salespeople with zero technical chops or expectations (other than "it has to work") and large retail shops that hated any and all kinds of variation and questions and manual processes because it completely killed their margins (the 'because' is my guess, but from the kind of requests we got it seemed plausible). Catering to both kinds of customers with one system is really hard: The first kind of customer wants a friendly email whenever he does something that's not supposed to work, and then he wants a nice conversation with someone about what he should have done to make it work. He hates it when you turn down an order, because of some minor problem with the paper work. The second kind of customer just wants to not have to think about being our customer, so he'd much rather if we just said no - we can't do that whenever there was any kind of doubt or risk that some kind of manual labor would result from a transaction.

Posted by Claus at 01:05 PM | Comments (0)

January 29, 2007

Wiki/Cliffle-brilliance again: HQ9+

Brilliant joke programming language article from Wikipedia:HQ9+, does everything you need to do for your first programming (or recursive logic) class with an absolutely minimal footprint.

Bonus brilliance: The creator of HQ9+, Cliff Biffle, also created the Beatnik language

A Beatnik program consists of any sequence of English words, separated by any sort of punctuation from spaces to hyphens to blank pages. Thus, "Hello, aunts! Swim around brains!" is a valid Beatnik program, despite not making much sense.
(If you're wondering, that reads a character from the user, adds seven to it [i.e. A -> H], and prints it out.)
The function of a particular word--say, brains, or aunts--is determined by the score one would receive for playing that word in Scrabble. Thus, "hello" gets us 8 points, and so on.
By this point, you're probably wondering why it's called Beatnik. Well, you're about to find out. Here is the source for a program that simply prints "Hi" to the screen.

Baa, badassed areas!
Jarheads' arses
queasy nude adverbs!
Dare address abase adder? *bares baser dadas* HA!
Equalize, add bezique, bra emblaze.
He (quezal), aeons liable. Label lilac "bulla," ocean sauce!
Ends, addends,
duodena sounded amends.


Posted by Claus at 12:17 PM | Comments (0)

January 23, 2007

Disabling Snap Previews

Thank god, there's a way to disable the Snap previews people have started to use. I imagine some people actually like that they can no longer scan over text with the mouse without obscuring it with pop-ups, but I personally don't. To the credit of Snap they provide an easy opt-out. Visit this link and mouse freely again.

Posted by Claus at 07:29 PM | Comments (0)

Highly diggable computing trends post

The trends reported here are really, really important.

I recently outfitted my small format laptop, which isn't good for text heavy "lots and lots of writing"-software anyway, but much better for single-focus quality time with something beatiful and brief, with Haskell simply because the software neighbourhood I currently inhabit isn't beautiful or powerful enough. Brevity and reach of a language is extremely important.

My personal guide to these kinds of things has been Lambda the Ultimate for a while - as well as the clever perl hackers, Torkington mentions in the story above.

Extra special comp sci bonus: Abelson and Sussman video lectures of their own textbook, Structure and Interpretation of Computer Programs.

Other instructors, same material from Archive.org and ArsDigita

Posted by Claus at 01:03 PM | Comments (0)

January 19, 2007

Scaling you database beyond limits with Sequoia

At my work we found this great but secret project called Sequoia. It is an open source project that can increase the performance and uptime of your database system. The remarkable thing with Sequoia is that you can use the project without changing your application or database schema and you can use it with any database server you like. It almost sounds too good.
The software implements a RAID like solution on the database connector level. In other words. The thing you change in your existing system is the database connector (JDBC, ODBC, or what ever you use). The Sequoia connector will RAIDb you databases accross several servers a bit like RAID controllers do it on disks. If one of the nodes in a RAIDb-1 controller fails the Sequoia connector has a transaction log that you can replay on the node when you get it online again.
In theory Sequoia and enough hardware will let you scale you database to any level of redundancy and performance.

Disclaimer: I have not tried the Sequoia software yet. All the facts above is from their own documentation. I will post my test results later.

Posted by simon at 08:49 PM | Comments (0)