« | » Main « | »

XSLTXT version 2

Tuesday 30 March 2004

XSLT is a powerful technology that uses some unusual constructs compared to more traditional programming environments. I like it, in fact, I use it to generate the page you are reading right now. But it is an XML dialect, meaning that if you want to write XSLT, you are stuck with the horrible-for-humans XML syntax.

To solve this, Alex Moffat has written XLSTXT, an alternative syntax for XSLT. It's a great idea, but the implementation needs some work. Some of my XSLT constructs occupied more lines as XSLTXT constructs, and I couldn't roundtrip some of my complicated files. But I'm glad to see that someone is thinking about other ways for people to produce XSLT code.

Oldversion.com

Tuesday 30 March 2004

If you've ever upgraded a piece of software and thought that the old version was better than the new one, then you understand oldversion.com's motto: "because newer is not always better". They archive old versions of commonly-used software so you can find an older, simpler version of software you really use.

Prothon

Tuesday 30 March 2004

Prothon is a derivative of Python using prototypes rather than inheritance as the basis for its object orientation. Prototype-based languages seem powerful and intuitive, more so than inheritance-based languages. I'm not sure why they aren't used more. Also, Prothon fixes a few of my main annoyances with Python, especially the ubiquitous self variable, although it does it with dangerously Perl-like prefixes.

Race car birthday cake

Saturday 27 March 2004

For our second March birthday, we made a race car cake:

Race car cake, front view Race car cake, back view

The headlights are malted milkball candies, the front bumper is a licorice Twizzler, the front wheels are chocolate covered cookies, the windshield is a Hershey's bar, the antenna is a thin pretzel, the back wheels are chocolate covered doughnuts, the brake lights are cherry Dum-Dums with their handles sunk into the cake, the exhaust pipe is another Twizzler, and the spoiler is a frosted graham cracker supported by wafer cookies.

I record it here for posterity, because the cake itself is already gone, down the gullets of a couple of dozen six-year-olds.

Air America radio

Saturday 27 March 2004

Air America is a liberal answer to conservative talk radio. It debuts next Wednesday on stations in New York (WLIB), Chicago (WNTD), and Los Angeles (KBLA). The showcase is Al Franken's show, The O'Franken Factor, from noon to 3:00, opposite Rush Limbaugh, with programming running all day, 6 AM to 11 PM. I wish there were an affiliate in Boston, but they'll also be streaming the shows from their website.

Promoting computer literacy through programming Python

Friday 26 March 2004

John Miller gave a presentation at PyCon 2004 entitled Promoting Computer Literacy Through Programming Python. It's an interesting topic for me. I'm getting involved in my sons' school, volunteering to teach computer topics. The presentation is in annoying .mov form (you can only go forward, and can't copy text out of it), and begins with boring statistics about newsgroups (!), but then settles into the philosophy of education, the place of programming in the subjects students learn, and so on. There are two links in the presentation (which you cannot click!):

Broken build rituals

Thursday 25 March 2004

One of the common components of software engineering culture is the shared build. A team of people work together to produce a piece of software, and on a regular basis, often daily, that software is built for the team. One of the cardinal sins in this culture is breaking the build: changing the software so that it can no longer be built. To punish the offender, and provide a bonding experience for the innocent victims on the team, a ritual develops around how to treat the offender.

At a previous startup, a totem figure would appear on the culprit's desk. At Kubi, we've taken to using ordinary caution tape to identify the problem source.

Brozilla A cubicle draped in caution tape

An additional benefit of these tribal behaviors is that it gets people talking about the process. When opinions differ on the severity of an infraction, people will talk about whether the punishment was deserved or not. Without a visible and derisive consequence, the process failure may not have been discussed further once the build was working again.

Truly random numbers

Thursday 25 March 2004

Usually when a software person talks about random numbers, they mean ones generated by a software algorithm, which means they are really talking about pseudo-random numbers. There are better (but less plentiful) sources, which are based on physical processes that produce truly random numbers. Quantum physics is behind randomnumber.info, which generates numbers using a single-photon optics rig. Another is HotBits, which relies on radioactive decay. I'm not sure how you'd put these to use in any practical way, but it's somehow comforting and empowering to know that in distant corners of the world, physics has been harnessed to give me truly random numbers at my fingertips.

Exact string matching algorithms

Monday 22 March 2004

One of the things that fascinates me about computer science is that the seemingly simple can be studied for long enough to find the non-obvious in it. Consider the problem of finding a small string somewhere inside a larger one. It's easy to do it a simple way: for every character in the larger string, see if it is an exact copy of the smaller string. Turns out, though, that people have been coming up with better and better ways to perform this simple feat, so that now there are dozens of different algorithms.

Christian Charras and Thierry Lecroq have gathered them all together, with explanations, pictures, and even Java animations of the algorithms at work: Exact String Matching Algorithms.

Cog 1.1

Sunday 21 March 2004

I made a few minor updates to cog, my code generation tool that uses Python code to generate code for any other language. Version 1.1 allows it to be used for languages without multi-line comments to hide the cog code in. The cool thing is, this was a suggestion by Greg Smith in the reader comments. If you have an idea, send it in!

GUIdebook

Saturday 20 March 2004

Marcin Wichary has created a comprehensive compendium of user interface elements over the years: GUIdebook. It's cool to see the different pieces of UI from different systems, but on the other hand, there aren't many unusual ways of making a calculator. The component icons pages is particularly compelling.

Sports Illustrated's digital workflow

Saturday 20 March 2004

A fascinating article about how Sports Illustrated uses digital photography to produce their images: Sports Illustrated's Digital Workflow. They took 16,183 shots at the Super Bowl, over a million over the course of the year. It's interesting to read the details of how they manage and process the photos.

Best quote, on the sports-specific trick of color-correcting photos:

There's only so many pro teams, and we know what color their uniforms are.

Groovy

Saturday 20 March 2004

Groovy is a new dynamic language that's borrowing heavily from Python and Ruby. It compiles to standard Java bytecodes, and so can be run on existing JVMs. It looks very interesting. This snippet in particular caught my eye:

foo = 'cheese'
sql = TestHelper.makeSql()

sql.eachRow("select * from FOOD where type=${foo}") {
    println "Gromit likes ${it.name}"
}

ArtRage

Wednesday 17 March 2004

ArtRage is a free painting program based on natural media and tools. In other words, it's designed to work and feel as much as possible like real paints, chalks, and so on. I was very impressed with it. It has one of those non-standard but intuitive interfaces where you can just start clicking around, and you'll see how stuff works. And the real-media effects are remarkable. A single stroke of oil paint:

A beautiful blue oil paint stroke

MIDI sheet music?

Tuesday 16 March 2004

I like to play the piano. Not very well, but I like to. The problem is finding sheet music on impulse. I hear a song, and would like to play it, but even if good sheet music exists for it, by the time I can get around to finding it somewhere, my interest may have wandered off to another song. Musicnotes has digital sheet music (buy and download a digital file), but their coverage isn't complete (what store's is?)

But there are tons of MIDI files out on the web. For example, Electric Light Orchestra MIDI files (today's song is Mr. Blue Sky). Some are good reproductions, some not so much. But they all are computer-readable lists of notes to play. What if I could convert a MIDI file into printed sheet music? There are MIDI disassemblers out there, but their output is hardly something you could play from.

Lilypond is a GNU music typesetter, and a very powerful one at that. It can turn music notation into a MIDI file, but what about the other way around? Has anyone heard of something like that?

CSS diagrams

Monday 15 March 2004

The thing about CSS is that it can do an awful lot of things, but most of them feel like clever tricks until you are an expert at it. Maybe that's the way all technologies are. In any case, here's another tricky CSS example: CSS Diagrams.

Mathematical background

Saturday 13 March 2004

I was a real math geek in high school, and was taught "new math" at the time, so I got a pretty good introduction to math at a theoretical level. Still, Mathematical Background by John Sowa is a good overview of math concepts. He doesn't cover the connection to computer science directly, but a lot of this stuff underlies software concepts we engineers encounter everyday.

You can get along without the math background, but it helps to have it under your belt. For example, did you know relational databases are called that because they are based on the mathematical concept of relations? See section 5.

In some places, he uses terms only in their mathematical sense, without touching on the more common computer science uses. For example, "idempotency" referring to operations, but not to functions: a function f is idempotent if f(f(x)) = f(x) for all x.

TV tropes & idioms

Saturday 13 March 2004

Speaking of conventions in movies (I mentioned a starving person seeing someone turned into a chicken in my post on Charlie Chaplin), Television Tropes, Idioms, and Devices catalogues all of the commonly-used devices in TV shows. An example:

Door Focus
When a character leaves a room and the focus stays on the door. Within seconds, the character comes charging back in for some unfinished business; usually to collect a much-needed object left behind, or to deliver a funny line. Used at least five times per Friends episode.

CSS jokes

Friday 12 March 2004

This is clearly an extremely geeky topic, but here goes. CSS Jokes:

Q: Why was IE5's 3-metre wide cell in the insane asylum smaller than IE6's 3-metre wide cell?

A: Because the width of the cell included the padding.

Overreaction?

Friday 12 March 2004

Russell Beattie had some pictures of his family on his web site. Then he got a phone threat against his son. Then he reacted, or possibly overreacted. Finally, he took down the photos.

The issue of how public to make one's family on one's web site is a tough one. I have erred on the side of privacy on this site, which fits my natural inclinations better anyway. The comments on the three posts above are all good reading on other people's reactions to the incident.

How to spot a fake programmer

Friday 5 March 2004

Julian Robichaux, concerned about know-nothings passing themselves off as programmers, gives us How to Spot a Fake Programmer:

  • tells their boss that they can't possibly start using a new language without at least 3 formal, week-long training classes and a certification under their belt
  • claims to be a master of a new language after completing 3 weeks of training and obtaining a certification

QRIO

Thursday 4 March 2004

QRIO is a remarkable consumer robot from Sony. I don't know exactly why you would want one of these things wandering around your house, but it does seem like a stunning technical achievement. Photomatt has some amazing videos.

Google search by number

Tuesday 2 March 2004

Perhaps even more impressive than Google's complete capture of the textual web search arena are its continuing efforts to make absolutely all information available through its web site. Now they give us search by number, which includes an esoteric assortment of numeric searches (vehicle identification numbers?). For example, you can search for patents by patent number: patent 6351767

Intro flash movie

Tuesday 2 March 2004

My soon-to-be twelve-year-old thought this site needed something to give it a little more pizzazz, and decided an intro flash movie was just the thing. So he whipped up a movie showing the mythic creation of this site: Intro Flash

Ned working at his laptop, creating this site

« | » Main « | »