Home

Thank god

Posted by Simon on November 05, 2008 at 12:19 AM

Tags: (none)

That's all I have to say.

Vuze (Azureus) search template for The Pirate Bay (TPB)

Posted by Simon on October 31, 2008 at 05:55 PM

Tags: bittorrent, code

Vuze provides a built-in search function to make it easier to find bittorrent files that you want to download. And, it's extensible, so you can add new search "templates" for torrent sites beyond the ones that they support by default.

There's a Pirate Bay template floating around but it doesn't work any more, so I made up my own. And here it is:

Download The Pirate Bay (TPB) search template for Vuze.

To install this sucker:

  1. Download it (duh)
  2. Do a search in Vuze
  3. On the right, it says "Sites" "All" and then a few options, and then "Add/Edit". Click Add/Edit.
  4. Now near the bottom click "Import a new template"
  5. Browse to tpb.vuze.

Alternatively, you might be able to just double-click the file....

Good advice from Futurama

Posted by Simon on October 30, 2008 at 12:47 AM

Tags: tv

Futurama, possibly one of the best TV shows ever made, say some people. And full of good advice for every day situations too.

  • You were doing well until everyone died
  • Don't do anything that affects anything. Unless it turns out that you were supposed to do it; in which case, for the love of God, don't not do it!
  • Bodies are for hookers and fat people.
  • The Dave Matthews Band doesn't rock.
  • If you want a box hurled into the sun, you've got to do it yourself.

I was going to make up a sort of "All I need to know I learned in Kindergarten" kind of poster, but I need more quotes so I'll just have to re-watch more Futurama. So much good TV & Movies to watch, so little time...

A bit of torrent #6: Three Businessmen

Posted by Simon on October 23, 2008 at 11:53 PM

Tags: bittorrent, film

This week on A bit of torrent ...

Three Businessmen (1998)

...a surreal film called Three Businessmen. You may not know that you're going to like this movie. You may not thank me for making you watch this movie. But ultimately, your mind will be expanded and you will have a bit, just a bit, more sympathy for the common business-person.

Basically, you've got two businessmen, pictured, thrown together in a sort of haphazard fashion, and they go trekking across the universe (sort of) in search of a bite to eat. On the way, they have many adventures, bond, and talk a lot of silly business speak. Etc.

(Eventually there is in fact a third.)

OK, there's no plot, virtually, and no action, no violence, no sex, no nudity, no guns, no special effects, hardly any budget. But on the other hand. It's by Alan Cox, who you just might remember from Repo Man (he's also the actor on the right). And it rewards multiple viewings. And it's a bit trippy. I liked it. Will you?

Download Three Businessmen (1998) torrent from The Pirate Bay now.

Till next time: bye bye.

Apple are idiots

Posted by Simon on October 17, 2008 at 07:22 PM

Tags: code

I just tried to open my old XCode project for FractalTrees X in XCode. No dice—XCode doesn't even recognize the "pbproj" extension any more, and that's only from 2002... Then I try to open my NIB at least? And it's totally toast. Nothing. Won't open. Won't upgrade in ibtool. Nothing.

How to program a computer, for children ... II

Posted by Simon on October 16, 2008 at 02:28 AM

Tags: code, links

A while ago I wrote "How to program a computer, for children". I was actually inspired by Ming's efforts along the same lines. I just read it and decided to take a slightly different tack, doing it all with math (since programming is all math anyway).

Incidentally... why has a rather bizarre system called Shoes which is apparently supposed to teach children to program but I suspect might frighten them instead. For adults, you have surely read his guide to ruby ... right?!?!?!

And here we go.

Programming a computer is a lot like writing instructions for someone really, really stupid. Imagine a person who knows nothing. They don't know how to walk, talk, read, or write. In fact, the only thing that they know to do at all is simple arithmetic. They can add, subtract, multiply, and divide any number at all. But that's all. They can't do anything else without being told how to do it in the form of math.

So, to get a computer to do something, you must turn it into math. Let's say you want to get a computer to go around the room. First you have to explain what "go" means in terms of math. Then what "around" means... in terms of math. And what is "a room" ... that's not math yet, so computers don't know what it is.

Well, let's start with "go". Let's give it a try:

How to "go":
1. increase the total number of footsteps that you have ever taken in your life, by 1.

See how I turned that into math? That's how computers think. Unfortunately, computers don't know what feet are either. But that's OK. For now, we'll assume that someone else has already built a foot for our computer, and when we tell it to increase by 1, it will know what to do. In computer language, this would be:

totalNumberOfSteps += 1

Now it's not completely true that computers can only do math. They can also repeat the same thing over and over again, like a mindless machine. It's called a "loop". If we just take one step, that's not really "going" very far. Instead let's have the computer "go" further.

How to "go":
1. totalNumberOfSteps += 1
2. do that over and over again

Since the computer is mindless, it will do this forever, so we can rewrite this into computer language like this:

1. totalNumberOfSteps += 1
2. repeat forever

OK, so now the computer goes. But will it ever stop? I don't know... if it has an atomic power plant, it might be millions of years before it stops. And in that time, it will grind its way through even the thickest of reinforced concrete walls. And it will never go "around" the room because it can only go forward.

So maybe we ought to give the computer a way to measure how far it's moved. Let's say it's got a little measuring wheel that touches the floor. Whenever it takes a step, the wheel clicks around a little more. In fact, it's just like an odometer on a car, that tells you how far the car has ever gone.

That's all fine, but how can the computer know if it moved? Remember it can only do math and repeat things. Well, the guy who made the odometer gives us two number:

odometerReadingBeforeTheStep
odometerReadingAfterTheStep

Clearly, if the "After" number is more than the "before" number, then we moved forward without hitting a wall. If not, we're stuck. We can use some fancy math to write this down:

odometerReadingAfterTheStep > odometerReadingBeforeTheStep

That just means that the number of the left is bigger (>) than the number of the right.

OK... so does that help us? How do we fit that into steps 1 and 2? Another little trick that computers can pull is to check some math before they take a step. So they can (a) do math (b) repeat things (c) check math.

It works like this:

if 1 == 1 then oneIsEqualToOne += 1

That's a pretty stupid example, but you know, 1 is "equal to" (==) 1, in math, that's true. So, oneIsEqualToOne will be put up by one number.

We can use that for our robot to. Can you see how yet?

1. totalNumberOfSteps += 1
2. repeat if ...

If what? Remember the odometer?

1. totalNumberOfSteps += 1
2. repeat if odometerReadingAfterTheStep > odometerReadingBeforeTheStep


Pretty simple. Add a step, and then do it again if the odometer shows you moved forward. If it doesn't, the computer just stops, because it has no more instructions. That's called "halting". When the program halts, you check it's progress. In this case, it will have walked into a wall. And then stopped. Always. That may not sound like much, but we're halfway to getting around the room.

My Sharp Aquos TV runs linux

Posted by Simon on October 15, 2008 at 11:51 PM

Tags: links, unix

I was reading the manual for my HDTV (I know, who the hell does that?) when I noticed a GPL license notice and acknowledgment for among other things, "linux kernel". Wild.

Here's a link to the mandatory software download page.

Did some fixing of the site, and got some comments!

Posted by Simon on October 14, 2008 at 01:49 AM

Tags: meta

Well I just cleaned up some bugs in the site, mainly in the static content area (so stuff in the Software and Content sections works now!!!)

Also I got some comments. For some reason I was scared of having comments on the site back in the day, but now... whatever. So I have some comments about good old FractalTreesX here and here.

Now I just need to restore all my old tags... and fix the previous/next navigation system so it's more prominent... and see if my google rank recovers...

Useful software: PDFCrack, Map.Hamilton iMapper, and Skim for PDF annotation

Posted by Simon on September 27, 2008 at 10:31 PM

Tags: links

Some miscellaneous useful software.

"Forget" your PDF password: use open-source PDFCrack. Installs easily on Mac command line (use gmake).

Looking for high-quality maps and "satellite" imagery of Hamilton? Try Map.Hamilton's iMapper. The interface takes a few minutes of experimentation to figure out, and then it's cool. Make sure you switch to Aerial Viewer (latest year) to get their ground imagery, which I think is actually generated by airplanes. It's quite a bit higher resolution than Google Earth has.

Want to annotate your PDF files? Try Skim. Seems potentially easier than using OmniGraffle... (and cheaper...)

Cool URIs should never change ... & site updates

Posted by Simon on September 15, 2008 at 01:36 AM

Tags: meta

I'm a terrible person. When I upgraded to Rails I totally broke a zillion URIs on this site, in particular most of the weblog links. I also probably lost a lot of google juice in the process. Well, now I have restored all of the weblog archive links in accordance with Cool URIs don't change (and I should practice what I preach...)

Incidentally I also made a number of other long-waiting fixes to the site, like installing the correct google analytics, fixing the top navigation links, adding a sidebar on the front page, speeding up the front page (somewhat.. still wrestling with that one). I still need to fix the tag browser so that it's as good as it used to be. And some day maybe I'll convert all of my old content over to some new CMS (well, I probably will never do that actually...)

"It should be required reading" is for idiots

Posted by Simon on September 14, 2008 at 11:16 PM

Tags: (none)

Number of books that "should be required reading": 855,000.*

I hate it when people say that something should be required reading. Do you think that your pet crap is something that everyone cares about? I don't give a shit about your agenda.

Here's my list of what should be required reading:

  • Parts, at least, of the Bible, so that you can see how odd and contradictory it is. The gospels are good though
  • A bit of Shakespeare
  • Well, that's about it. So long suckers.

* according to Google

Best movie links (...the answer is Citizen Kane)

Posted by Simon on September 13, 2008 at 06:53 PM

Tags: tv

I just went for a walk in the rain. It was nice and mellow. Nothing with me, no keys, no wallet, and best of all, no cellphone.

Anyway, here's some nice links to lists of all time greatest movies.

The mother of all lists of course is the IMDB Top 250. IMDB has been around forever! ...it's been on the web since 1993 which is like before the web even existed. Basically any movie on this list is worth watching. And it's the popular choices, as opposed to the critics, so they aren't just chosen for originality or historical significance (like some of the below) but rather because they're good to watch.

For the "critics choices" you can use the Best of Rotten Tomatoes. Rotten Tomatoes has to be one of the worst named websites of all time. But no matter. The problem with the all time list is that it includes movies that are loved by critics but aren't necessarily very watchable. However, they have a useful feature which is to see the top movies by year. For example here is the top 10 for 1969 (I've seen 5 of the 10 so far...). It's a cool way to explore cinematic history.

For more critic's lists, try the British Film Institute top 45 list. And here's more detail on their top 10. And then there's the American Film Institute top 100 (linking to wikipedia because the AFI site requires a stupid login).

And finally here are a few more from random publications:

Well, that's enough of that. It's interesting to see the differences in the list. Is the best movie of all time The Godfather? Casablanca? Citizen Kane? Or as IMDB users would have it, Shawshank? (I don't think so...). Forget about the latest releases. Watch the classics.

My eHarmony Procedure

Posted by Simon on September 01, 2008 at 01:26 AM

Tags: theories

Yes, I use eHarmony. I have my match distance set to something like 200km so I get about 5-8 matches a day. I try to sift through them pretty quickly to separate the wheat from the chaff. Here's my current procedure:

  1. First pass is to eliminate people who are definitely not an option. Starting with the most recent match, I command-click (middle click) to open in a new window and then I look at the small photo:
    1. If they closed me, I close them, don't bother looking at photo or description.
    2. If there's no small photo, I close. It's not worth the hassle to request photos. A picture is worth 1000 words.
    3. If it looks like I wouldn't like them, I close without reading anything.
    4. If they look potentially interesting, I don't do anything (so they stay in the queue).
  2. If I closed in the above action, I switch back to the original tab, because eHarmony is too slow in closing, and also it doesn't return you to the right place in your list if you go back. Once I'm done going through everyone, I close all the tabs, reload the main page, and get ready for the 2nd pass.
  3. Now I'm on the second pass. All of the women left have passed the first sight test. Now I look at the photo details. I find it's very important for me that there's both a closeup face shot and a shot from father back so you can see what they look at. I include these in my profile. Without both, I close. If I don't like what I see (and this can be facial expressions, the context, as well as more normal attractiveness levels) I close without reading anything.
  4. OK, finally, after doing the above step for everyone, the people who are left are worth reading about. In fact, at this point I only really feel the need to skim what they wrote because as I said, your character is written all over your face and the context of the photos. So I usually contact anyone who's made it this far.

So there you are. I do this in phases, because it's annoying to be really interested in someone, and then the next 5 people are horrible. So, I save myself the pain by going in passes and only increasing how much I care after I've eliminated the uninteresting people already. After all I need to manage my own sense of involvement or I'll just get tired of it.

I actually at one point wrote a pretty nifty greasemonkey script for firefox to add various close buttons at the top of the page to make it easier to close people. But it made me nervous. A couple of times I clicked the close button when I meant to click something else. Also, I just don't like Firefox—prefer Camino. So, no more of that.

unflac.sh - Convert FLAC files into 320 kbps MP3 files

Posted by Simon on August 17, 2008 at 01:19 AM

Tags: (none)

Convert FLAC files into 320 kbps MP3 files. Someone might find this useful. I call it unflac.sh. It will take every .flac file in the current directory and convert it to MP3 using lame's "insane" preset (which shows what the lame people think about mp3...)


#!/bin/tcsh

# Deal with FLAC, CUE file to convert to high-quality MP3 with LAME

# Split a foo.cue / foo.flac combo (e.g. from EAC) into separate flac files
####cuebreakpoints *.cue | shnsplit -o flac *.flac

# convert flac to MP3
foreach f (*.flac)
flac -c -d "$f" | lame —preset insane - "${f}.mp3"
end

# Re-add the tags to the separate files
cuetag.sh *.cue *.mp3

You'll need to have flac and lame installed. It also tries to restore tags using cue but that doesn't seem to work. So sorry.

Why would I do this? Basically, because:

  • my MP3 player (N95) doesn't support FLAC
  • and doesn't have the room for it anyway
  • and iTunes doesn't support FLAC either (stupid apple...)

Some day when I have a player that does, I'll probably switch to all FLAC, or apple lossless or whatever, but in the meantime 320 MP3s from lame are pretty good. I won't say I can't hear the difference because I haven't tried REALLY HARD, but for the listening I'm doing I can't hear the difference...

the ultimate cut out book

Posted by Simon on August 11, 2008 at 01:02 AM

Tags: (none)

You have probably seen the book with a space cut out to hide a knife, a gun, another book... but what about a house?

(actually, hiding a book inside a book... that's a cool idea...)

Anyway, that's Olafur Eliasson has done. He cut a house into a book. There's no text. Just the house. And it's in negative space. Here's what it looks like:

Your House

Wild. I found this in grafik magazine. No website, but a real paper work of art.

Eliasson is just too cool. Have a look at what he does with white lego bricks... and just generally feast your eyes on his works.

Jesse Rodgers's blog

Posted by Simon on August 06, 2008 at 01:09 AM

Tags: links

Who You Calling A Jesse?

He is apparently

Trying to sort the brilliant ideas from the lesser ones.

Unfortunately, he is not very successful. But he is trying.

He also uses SimpleLog, the best Ruby on Rails blog out there that doesn't work under Rails 2.0, has been abandoned by its author, but still works great for me.

Because I can

Posted by Simon on August 06, 2008 at 01:06 AM

Tags: (none)

Open Source Software for Mac. Lots of Good Stuff. Very nice.

The Loudness War

Posted by Simon on August 02, 2008 at 10:41 PM

Tags: music, tech

What the hell is the Loudness War? It's music business, baby. Put it this way. Everything is getting LOUDER.

IF YOU'RE LOUD YOU GET NOTICED PEOPLE READ YOU FIRST BUT EVERYTHING STARTS TO SOUND THE SAME.

That's just a simple "visualization" of what the loudness war is doing to music (recorded music anyway).

You could perhaps lay the blame on 5-CD changers. If you had one back in the 90s, you probably noticed that whenever it switches discs, you had to adjust the volume. And then MP3 players didn't help, although now the software will automatically adjust the loudness of tracks to match each other. And car CD players, where everything has to be loud to even hear it. But really, it's the fault of computers, and in particular a device called a digital compressor.

Basically here's the problem in a nutshell. Music has variations in volume, between the quiet parts and the loud parts. If you're in a movie theatre, concert hall, or at home with a good stereo, this is exciting, it's dynamics. The music can start out quiet, and then build up and then reach out and grab you by the throat in the exciting bits. This is GOOD.

But psychological studies have shown that people subconsciously think that louder is better, and the problem comes in when you are moving from one song to another. If you go from a loud song to one that starts out really quiet, your subconscious brain is going to tell you that the quality of music just went down, and you're going to hit the skip button or change radio stations.

So the producers use the compressor to "compress" (yeah, that's why it's called a compressor...) the dynamic range so that the difference between the quiet parts and the loud parts is minute. Basically, they make everything LOUD.

A few years ago Rolling Stone had an article called The Death of High Fidelity, it's about the Loudness War, and you can see a sort-of good video about it on YouTube

There also a a great article from IEEE Spectrum magazine: Tearing Down the Wall of Noise. Good reading.

All in all these stories demonstrate without a grain of doubt that (a) the Loudness War is real and (b) it's causing damage to the music. Constantly loud music makes you tired and ultimately isn't satisfying or good. The subconscious thing is temporary, but the damage to the music is permanent.

What can you do about it? Buy music that isn't compressed, for starters. Some artists are fighting back, like Norah Jones with Not Too Late and Dylan's Modern Times. Or, just buy OLD albums, like CDs from the 80s, the time before compressors existed. Or buy vinyl, which for physical reasons doesn't really allow compression, but to me, having to go back to old tech like that is just silly. The music industry needs to fix this on the new technology. Even if they can crank up the volume, they shouldn't turn it into pure noise.

PS: Seems that you can use "Average RMS Power" to get a rough idea of the dynamic range of a tune. And you can measure that using various tools, e.g. Amadeus Pro (Analyze > Waveform Statistics). Here are some values from my library:

  • Norah Jones, Feels Like Home, Sunrise: -13.5 dB .... that's not great but it's not as bad as it could be ... I don't really listen to this much any more though, and I think it's partly because it's tiring to listen to.
  • Decca Georg Solti Nibelung, Walkure Act I: -25 dB... I have no trouble with ear fatigue listenging to this one.
  • Beatles, Revolver, Taxman (no idea what edition): -16 dB ... I find it a bit loud, but I guess partly that's intentional?
  • Cowboy Junkies, Trinity Sessions, Blue Moon: -21 dB .... what can I say? niiiiice.

OK, so I guess pretty much everything in my collection is OK at least. Probably because I delete anything that has crap dynamics. For comparison here's some stuff I wouldn't listen to.

  • Coldplay, Viva la Vida:-12.3 dB ... well, it could be worse.... a bit... this would be a lot better with better dynamics.
  • Rihanna, Disturbia: -11 dB ... just looking at the waveform for this makes my ears hurt in advance.

Yeah, those are fairly hard to listen to.

Someone ought to make an average RMS database.

Azureus's stunning visualizations (Vuze)

Posted by Simon on July 18, 2008 at 07:51 PM

Tags: graphics, tech

In order to get around Bell Sympatico's bittorrent throttling I recently switched to Azureus (aka Vuze). If you switch to the "classic" UI mode, it has some stunning visualizations of what's happening with your torrents.

The main screen contains a bit more information than you might need, but if you play with the columns that are visible (right click on the headers) you can get something like this:

Azureus main screen

What you've got there is downloading torrents at the top and finished ones at the bottom. Green happy faces are currently in progress. Gray ones are queued. In the bottom right corner you can see that my total download speed is 311 kilobytes per second, and total upload is 50kB/s (I'm on ADSL).

Azureus peers

Suppose I want to zoom in on one particular torrent — double click on it. This shows each of the peers I'm connected to. What pieces of the file do they have? How far complete are they in total? Bittorrent downloads files in chunks and it does the chunks randomly, not from start to end, so this information can be interesting.

Azureus Pieces

The above shows me EVEN MORE details if I really want it (OK, some of this stuff is really excessive). It shows which of the pieces I've got (blue) and which ones are downloading (in red). Just in case you wanted to know...

Azureus swarm

Swarm (above) is an actual animation of the pieces of the file as each of your peers around the edges send the bits to you in the middle. And it also shows the reverse as well. And the pie charts show how much of the torrent each peer has. Wild stuff.

So, that's if you want to know what's happening with one particular torrent. But what if you want to know about your overall connection with all the different peers and torrents? Well, Azureus gives loads of graphs and charts for that as well.

This one is your overall bandwidth monitor:

Azureus activity

Nice. I love staring at this one. It's a really good example about how to cleanly show multiple related variables in a time-based chart (aka histogram). For the top one, the blue filled area is your download speed. Really interesting is the gray line, which is the average download speed of the SWARM. In other words, what is your average peer getting? If you're below this line, then you're getting screwed — or there's something wrong with your configuration. If you're above it, you're doing well. It's a good way to get a quick fix on the health of your downloads as compared to other users. It also makes it really easy to see if you're being rate-limited by your ISP.

On the bottom half, you can see that I've enabled Auto-Speed and it's automatically cranking the max upload speed up and down based on measuring my bandwidth and other factors that I'm not too clear on.

There's other visualizations but those are my favourites. Some of them aren't really documented and I don't really understand exactly what they mean (transfers and vivaldi for example). Still, obviously one of the azureus open source developers is a data viz keener and s/he's done some fine work.

Hacking the java compiler: using anonymous subclasses as closures

Posted by Simon on July 10, 2008 at 11:17 PM

Tags: code, tech

In Java, closures/first-order functions are not a language feature. However, as everyone knows, you can effectively get a first-order function by using an anonymous subclass instead. Something like this:


class MyClosure {
void run() {} // override this
}
void doSomethingClosureLike() {
MyClosure closure = new MyClosure() { void run() { System.out.println("We're inside a closure!"); }};
runTheClosure(closure);
}
void runTheClosure(MyClosure closure) {
closure.run();
}
// will print We're inside a closure!

Anyway, it's simple enough, you pass the class instead of the function and there's a little extra verbage but it works!

Also you get closure-like functionality, because inside run() you can access variables from outwhere where you created it. E.g.:


void doSomethingCooler() {
final String myString = "Foo!";
MyClosure closure = new MyClosure() { void run() { System.out.println("The string is: " + myString); }};
runTheClosure(closure);
}
// will print The string is: Foo!

You can also access global variables that change over time, and the closure will use whatever is the current value WHEN THE CLOSURE RUNS.

There's just one small annoying thing, which is this particularly annoying compiler message:

local variable (WHATEVER) is accessed from within inner class; needs to be declared final

If you were do change myString to not be final, you'd get that error. Bummer. You could make myString a global variable and that would work, but that's stupid. There is a better way. Try this:

void doSomethingCooler() {
String myString = "Foo!";
final String myStringFinal = myString;
myString.concat(" Bar!");
  MyClosure closure = new MyClosure() { void run() { System.out.println("The string is:" + myStringFinal); }};
 runTheClosure(closure);
}
// will print Foo! Bar!

Now you can even change myString after you assign myStringFinal, because Java, although they say it doesn't use pointers, really does use pointers. I.e. it passes by reference. So, myStringFinal is actually just a reference to myString, and keeps pointing to it even when you change the contents of myString.

You can CHANGE it (like using concat()) but you CAN'T reassign it. That will break the pointers. It makes sense if you think about it—myString will have a new memory address, and myStringFinal will still be pointing to the old memory address (and the old string value). So, this won't work:

myString = "won't work"; // breaks myStringFinal

You can use this technique with any object (but not primitives like int).

ALL NEW "Simon Says" content RIGHT HERE

Posted by Simon on July 10, 2008 at 02:52 PM

Tags: art, links, meta, tech

Wow, WYM Editor is so cool that I can just like type in a new blog post whenever I want to. Wild!

So anyway, I've been saving up a whole load of links and stuff for months until I had this new site all sorted out. So here's something.

Hmm... where did my "stuff to blog about" folder go?

Oh, here's an awesome one. Nikkei Electronics Teardown Squad. These guys kick ass. Watch as they take apart a MacBook Air and declare "No Waste Outside, Nothing but Waste Inside".

About 30 screws were used to attach the keyboard alone. "The total number of screws in the MacBook Air was several times the number used in a PC we make," one of the engineers said.

Burn, baby, burn!

OK, here's another one from the files. Nathan Fawkes Art. He's part of a network of film animators and illustrators and concept artists who all have their stuff up on blogspot.

And I'd like to remind myself particularly about this post about science fiction.

Restoring the old posts

Posted by Simon on July 07, 2008 at 12:35 AM

Tags: code, tech

OK, here's a test of how WYMeditor works, because I'm going to try to copy/paste some code in here. I just had a little foray into my past with XSLT. I had 344 old blog posts (starting year 2000!) to convert from XML to SQL. Nothing better than XSL for the job! Here it is.

NB: I haven't restored images as of this writing.


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="no" omit-xml-declaration="yes" encoding="ASCII"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ- </xsl:variable>
<xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz-_</xsl:variable>
<xsl:variable name="allowed_letters">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_ </xsl:variable>
<xsl:template match="/">
<xsl:text> USE `sw-blog-dev`;
</xsl:text>
<xsl:apply-templates select="weblog/entry"/>
</xsl:template>
<xsl:template match="entry">
<xsl:text>INSERT INTO `sw-blog-dev`.`posts` (`author_id`,`created_at`,`modified_at`,`permalink`,`title`,`synd_title`,`summary`,`body_raw`,`extended_raw`,`body`,`extended`,`is_active`,`custom_field_1`,`custom_field_2`,`custom_field_3`,`body_searchable`,`extended_searchable`,`text_filter`,`comment_status`) VALUES
</xsl:text>
<xsl:text> (2,</xsl:text> <!— author_id —>
<xsl:text>'</xsl:text><xsl:apply-templates select="date"/><xsl:text> 12:00:00',</xsl:text> <!— created_at —>
<xsl:text>'</xsl:text><xsl:apply-templates select="date"/><xsl:text> 12:00:00',</xsl:text> <!— modified_at —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="PERMALINK" select="title"/><xsl:text>',</xsl:text><!— permalink —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="XHTML" select="title/text()"/><xsl:text>',</xsl:text><!— title —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="SYND_TITLE" select="content"/><xsl:text>',</xsl:text><!— synd_title —>
<xsl:text>'',</xsl:text><!— summary —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="XHTML" select="content"/><xsl:text>',</xsl:text><!— body_raw —>
<xsl:text>'',</xsl:text><!— extended_raw —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="XHTML" select="content"/><xsl:text>',</xsl:text><!— body —>
<xsl:text>'',</xsl:text><!— extended —>
<xsl:text>1,</xsl:text><!— is_active —>
<xsl:text>'',</xsl:text> <!— custom_field_1 —>
<xsl:text>'',</xsl:text> <!— custom_field_2 —>
<xsl:text>'',</xsl:text> <!— custom_field_3 —>
<xsl:text>'</xsl:text><xsl:apply-templates mode="TEXT_ONLY" select="content"/><xsl:text>',</xsl:text><!— body_searchable —>
<xsl:text>'',</xsl:text><!— extended_searchable —>
<xsl:text>'markdown',</xsl:text><!— text_filter —>
<xsl:text>1);
</xsl:text><!— comment_status —>
</xsl:template>
<!— must remember to backslash all single quotes —>
<xsl:template match="date">
<xsl:value-of select="translate(.,'/','-')" />
</xsl:template>
<xsl:template mode="PERMALINK" match="title">
<xsl:value-of select="substring(
translate(
translate(., translate(., $allowed_letters, ''), ''),
$ucletters,
$lcletters
),
0,42)"/>
</xsl:template>
<xsl:template mode="SYND_TITLE" match="content">
<xsl:call-template name="escapesinglequotes">
<xsl:with-param name="arg1"><xsl:value-of select="normalize-space( substring(.,0,42) )"/></xsl:with-param>
</xsl:call-template>
<xsl:text>...</xsl:text>
</xsl:template>
<xsl:template mode="TEXT_ONLY" match="content">
<xsl:call-template name="escapesinglequotes">
<xsl:with-param name="arg1"><xsl:value-of select="normalize-space(.)"/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template mode="XHTML" match="content">
<xsl:apply-templates mode="XHTML"/>
</xsl:template>
<xsl:template mode="XHTML" match="node()|@*">
<xsl:copy>
<xsl:apply-templates mode="XHTML" select="@*"/>
<xsl:apply-templates mode="XHTML"/>
</xsl:copy>
</xsl:template>
<xsl:template mode="XHTML" match="text()">
<xsl:call-template name="escapesinglequotes">
<xsl:with-param name="arg1"><xsl:value-of select="normalize-space(.)"/></xsl:with-param>
</xsl:call-template>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template mode="XHTML" match="@*">
<xsl:attribute name="{name()}">
<xsl:call-template name="escapesinglequotes">
<xsl:with-param name="arg1"><xsl:value-of select="normalize-space(.)"/></xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</xsl:template>
<xsl:template name="escapesinglequotes">
<xsl:param name="arg1"/>
<xsl:variable name="apostrophe">'</xsl:variable>
<xsl:choose>
<!— this string has at least on single quote —>
<xsl:when test="contains($arg1, $apostrophe)">
<xsl:if test="string-length(normalize-space(substring-before($arg1, $apostrophe))) > 0"><xsl:value-of select="substring-before($arg1, $apostrophe)" disable-output-escaping="yes"/>\'</xsl:if>
<xsl:call-template name="escapesinglequotes">
<xsl:with-param name="arg1"><xsl:value-of select="substring-after($arg1, $apostrophe)" disable-output-escaping="yes"/></xsl:with-param>
</xsl:call-template>
</xsl:when>
<!— no quotes found in string, just print it —>
<xsl:when test="string-length(normalize-space($arg1)) > 0"><xsl:value-of select="normalize-space($arg1)"/></xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

Niiiiiiice.

Blogging on Rails

Posted by Simon on July 07, 2008 at 12:00 AM

Tags: meta, rails, tech

Hi there.

Well, I'm back. I was running this site on really ancient technology — AxKit — so 2001. Now I'm running it on modern technology, i.e. Rails 2. And doesn't it rock. Now I have a cool GUI editor to type into, I have easy programming in ruby, and I have of course polished both my design and my CSS/XHTML skillz considerably in the mean time, hopefully making this all easier to look at and navigate.

So I'm running on SimpleLog here, but it's not "stock". Oh no. Stock SimpleLog right doesn't run on Rails 2, but this one does. Also, I made it even MORE simple than it used to be:

  • Support Rails 2.0 (no need to freeze an old rails)
  • no themes—annoying to use anyway, and no one was publishing themes either
  • replaced the editor/preview panel with WYM on Rails, which is by FAR the best WYSIWYG / GUI editor I've ever found, and the end of a long search for me

...and so on.

IPTables unix/linux firewall, simple commands

Posted by Simon on April 02, 2007 at 09:56 PM

Tags: unix

Since all the iptables documentation out there is super complicated, here's something really simple.

To see all of the ports that are open, run:


       sudo iptables —list
      

To add a new rule (to open a new port, e.g. 8080):


       sudo iptables -A tcp_in -p tcp -d my.hostname.com —destination-port 8080 -j allowed
      

That's assuming you have a chain called "tcp_in" of course...

And to delete a rule, run iptables —list, count the number of the rule (the index #) and then:


       sudo iptables -D tcp_in [index]
      

Simple enough....

The Quick and Easy Guide to moving your project from CVS to Subversion

Posted by Simon on March 05, 2007 at 12:00 PM

Tags: code, unix

So you want to use SVN? Fine, it's easy to move a project from one to the other.

Get cvs2svn

Go to a checked out copy of your cvs project and run cvs admin -kb filename on any binary files.

Commit to CVS.

Assuming that you've got a simple CVS project with no branches that you want to keep, do this:

./cvs2svn-1.5.1/cvs2svn —trunk-only -s project-name /path/to/cvsrepository/project-name mv project-name /path/to/svnrepository/ 

Tinselman

Posted by Simon on February 25, 2007 at 12:00 PM

Tags: links

Tinselman is the very amusing blog of the co-creator of Myst, Robyn Miller. It's a bit iffy on a daily basis ... and very eclectic. A bit like this blog, but better.

He's got this ongoing thread about the Republic of Tinselman, which appears to be something dating back to some attempt to create a fake republic on Wikipedia, or something, but whatever. It's just stuff.

He also seems to be a big fan of Walt Disney . To be particular, Walt Disney, and Disneyland. Not necessarily the Disney company or the movies per se. In fact, thinking about it, or maybe I read this somewhere. Anyway, that he wanted Myst to be a bit like Disneyland, which I think it is.

It's worth noting that Robyn Miller is the one who did the music for Myst and Riven, and he left after Riven. It's a bit obvious looking at any of the sequels after that the original spirit isn't there. With his brother Rand, he also did pre-Myst stuff like Cosmic Osmo, which was pretty cool and all done in the absolutely brilliant and amazing but now-forgotten HyperCard . In fact, did you know that the original Myst for Mac was written and deployed in Hypercard? Amazing but true.

Actually, that reminds me of a story, which is that back when Myst was first released I was working at this rather unusual place called the Southam InfoLab . Anyway, I was mainly a HyperCard hacker and pretty damned good at it if I may say so. And I managed to hack into Myst and actually look at the source code running it. HyperCard is an interpreted language, the language is called HyperTalk, and there was no compiler for it. So, they implemented this fiendishly complex system for preventing you from breaking into debug mode and viewing the code, but I managed to hack it. I don't remember doing much with it though, because the source code for Myst was way over my head at the time.

Anyway. Robyn is clearly a very interesting an unusual person. I think it would be very interesting to meet him and peer into his brain some day. Once you get past the "oh my god he's the guy who made Myst" thing then his blog seems to be quite interesting.

A bit of torrent #5: Police Squad!

Posted by Simon on December 03, 2006 at 12:00 PM

Tags: bittorrent, tv

police squad

My name is Lieutenant Frank Drebin, Police Squad, a division of the Police Department. I just got a call from headquarters. Someone killed off a cop series in the prime of its life, and we couldn't find the body. Fortunately some new evidence turned up, and it looked like we might have found the body and it's killer.

And so begins this week's episode of A Bit of Torrent , a weekly (almost) feature of Simon Says where we highlight the absolute latest in downloadable content. This week in the crosshairs: Police Squad!

If you've ever seen Leslie Nielsen or any of the Naked Gun movies, you know what to look for. You know what I mean. Exactly. It's basically six mini-Naked Gun movies in a row.

Download Police Squad (complete) on The Pirate Bay .

Sadly, the show was cancelled before its time. Cigarette? Yes. I know.

an unusual Mac OS X graphics bug

Posted by Simon on November 28, 2006 at 12:00 PM

Tags: graphics, mac

When I first saw this, I thought, hey cool! Then I took a screenshot and when it came through in the screenshot, that was even cooler. It's not often you get something like this. Memory corruption, maybe, not terminal, and not detected by the graphics software. My laptop gets hot sometimes, maybe the memory got corrupted that way? It happened on wake from sleep. Anyway, voila.

graphics bug

It sort of went away when it redrew areas of the screen but not completely, so I restarted.

New features on the blog: pagination, save to digg, del.icio.us

Posted by Simon on November 17, 2006 at 12:00 PM

Tags: meta

I just added two new features. First, now you can finally page through the posts 15 at a time (or whatever # it's set to show on the front page), using the "Previous Page" and "Next Page" links at the bottom. Second, you can save a specific post to Digg or delicious by just clicking on the appropriate little icon in the meta-data at the top of the post. As if anyone would want to do that. I don't, but I saw it on a bunch of other blogs so I thought I'd do it to.

I guess in theory you could use digg to discuss the post, if everyone used digg.

Some fun with Saxite, a logo, my first "font"

Posted by Simon on October 21, 2006 at 12:00 PM

Tags: art, meta

So Saxite is the new name for my siteware project. For those of you not paying attention, it's all written in XSLT and XML and it runs on AxKit.

I decided to make an icon so I came up with this icon, below.

Like it? I was inspired by a recent issue of Computer Arts Projects (one of the fantastic UK graphic design magazines that my local Indigo store carries) that was all about fonts, to do some of my own font work. So, I had a visual idea of what I wanted the logo to look like, with the X as a white space in the middle, and then I looked for a font on my system that was very blocky and thick and wound up with Arial Black. "ITE" on Arial Black are very generic, but I really didn't think that the S worked at all for me, and the A didn't fit, and the X I didn't like either (not wide enough).

saxite icon

So I started with the A. I actually did the A from scratch, not even bother to look at the Arial A. It's more like half of an A anyway. Next I got the X in the shape I wanted, and filled in the negative space on the right side with the I. Getting the hole in the A to look right was tricky, right now it's actually a white copy of the shape of the A!

Oh yeah, and check out the arrow in the A too :-) (it's pointing right). And check out the angle bracket on the right side of the X :-)

saxite icon

I spent by far the most time on the "S". I didn't like the original Arial S and wanted to replace it the most since it's by far the most identifiable letter of the ones I used. Also it didn't look blocky and aggressive enough in my opinion. There was quite a bit of variation in the width of stroke which I didn't like, so I drew my own "S" over top of it with a more even stroke (drawn with beziers). I also didn't like the flat ends so I switched over to ends on 45-degree angles. Getting it to balance was interesting ... the bottom end of the S actually extends out beyond the curve above it, while the top end is shorter than the curve below it. Weird.

I actually tried out another one which was even more streamlined, with the top and bottom strokes ending totally horizontally (like in the Star Wars logo) but that looked too, I don't know, sci-fi?

Finally I added the hole to the right of the X, before the I. And then I redrew the rest of the letters by hand so that they would all flow together. Now there's no Arial Black left at all.

Oh yeah, and post-processing in Photoshop to give it that 3d look.

The "quest for colour"

Posted by Simon on October 20, 2006 at 12:00 PM

Tags: art

Although I love graphic design, I've never been able to get the hang of colour. I usually work in black and white. My colour palettes usually suck. The colours on this site are nice but that's a very lengthy evolution and they could still be better.

Now if I ever need a colour palette I'll just go to this flickr set by lunaryuna called quest for colour . It's bloody brilliant.

Here's a random sample, just reload to see another 4, or click through for higher-rez versions...

4 random x user_set 47745789@N00 371908 m

A bit of torrent #4: The Fast Show

Posted by Simon on October 02, 2006 at 12:00 PM

Tags: bittorrent, tv

This week on "a bit of torrent" ...

fast show

Aren't british comedies brilliant? Bittorrent — isn't that brilliant? I mean, downloading TV over the internet — what will they think of next? It's fantastic. The Fast Show, isn't it great? It's a bunch of sketches but before they wear out, they start the next one. And all the sketches are brilliant. Well, not all of them, the one with the thief wasn't so good, but then they get him off the set and on to the next one. Brilliant!

Meanwhile.... nothing will ever touch the true genius of "A bit of Fry and Laurie" — seriously, don't even go there — but The Fast Show gets pretty close at times. It's called the fast show because (a revolution in comedy at the time) the sketches are short and sweet. No lengthy build-ups here. Good ones come back in the next episodes, and they have a series of really hilarious steadies like the "brilliant" guy, who thinks everything is great, even the Nazis; Ted and Ralph, who aren't really funny, and a soccer newscaster who always goes off on a tangent about "boys in the park, jumpers for goalposts, eh?"

fast show

Most of the best characters are played by Paul Whitehouse so it's weird that I've never heard of him before. He's a bit of a chameleon. He appears in two of the attached pictures but every time, it's a different voice, a completely different look, different body language. He hasn't been in a lot of movies but even so I'd not be sure that I'd spot him.

Anyway, definitely a top pick. Here are some links. There are 3 seasons. There's also some specials out there somewhere.

TorrentSpy :

UPDATE: ... but don't bother with season three. It's a dog.

tags tags tags

Posted by Simon on September 12, 2006 at 12:00 PM

Tags: meta

I just spent a whole bunch of time sorting my tags. Because I have the best tag browser ever and so I'm having some fun going through and tagging my content and making my tags better now. For example, I had no rhyme or reason for uppercase, some were mixed-case, some were uppercase, some were lowercase. I decided to make them all lowercase.

So, a bunch of tags were renamed which will break links but too bad, backwards-compatibility is for losers. Also, I don't think people have really linked to my tags yet. But they will....

Anyway, I also added some new tags and went back and tagged a bunch more old posts too. Have a look at original/prediction (my "original work" making predictions about the future). Or how about computer/wi-fi (lots of developing world stuff in there...). Or how about just meta (navel gazing fun). Yum.

dailykos uses my graphic as the "open thread" image

Posted by Simon on September 10, 2006 at 12:00 PM

Tags: art, meta

I came up with this image yesterday when I was thinking about Disney's role in the fantasyland movie that ABC just broadcast (Disney owns ABC and apparently backed the film).

Disney Politics Logo Hack - colour

To be honest, I just like the colours. I always thought this was a cool logo. But anyways, no more Mr. Nice Guy or whatever. I had a look at the font on their original logo and it looks to me like Rockwell Light so I had a go in PhotoShop and changed "Pictures" to "Politics". Now Disney can put this up on the front of all their political propaganda pieces.

It didn't make much of a splash when I posted it in my diary so I figured it wasn't that good, but I guess that there really isn't any proper correlation between Recommendations and actual merit on DKos—at least in the "long tail" of non-superstar diarists. I think that has something to do with their horrible, horrible tagging browser.

Even better tag browser!

Posted by Simon on September 06, 2006 at 12:00 PM

Tags: meta

Well now I've got an even better tag browser . In fact I think it's the coolest tag browser ever. It's better than the flickr tag browser and the technorati tag browser and amazingly, even then del.icio.us tag browser . And what is delicious for if not tag browsing. Well.

Anyway, I used a sort of crazy CSS-float-left thing to make the big and small boxes all go inline together. It would have made more sense to use inline-block but it's not supported in Mozilla yet (weird).

Also, you will note that this new browser really brings out the awesomeness of my two-level tagging scheme because now for the first time you can see how the levels work. And I'm discovering that maybe I have some duplication oops, and I'm also completely inconsistent in how I capitalize. Hmm. I might edit my tags (I suppose that's bad for google though, oh well).

Anyway, the big names in the filled-in boxes are the "categories" and the names in the small white boxes are the "tags"... some day I might allow to view just the tags but I'm not quite sure what that would mean.

Note to self: I should add some category browser on the left side there.

Linkdump: cousin Suzanne, "Me", Excel little graphs, The Grooming of the Woodside Man

Posted by Simon on August 28, 2006 at 12:00 PM

Tags: art, graphics, links, tv, unix

A bunch of links and things.

Ahree Lee created (or is creating?) an amazing short film. Starting in 2001 she started to take a picture of herself, every day, in the same pose. As of 2004, she created a short film called Me in which the images are flashed at you at the rate of about one week per second. If you want to download the film, you can use mplayer (like I did...) with something like this from your unix shell. (Note that the rtsp URL might change, you can get it from AtomFilms web page / View Source.) (Also note that I had to insert a backslash in front of the exclamation mark, probably inserted by atomfilms to foil script kiddies trying to use this method.) I think you could do some cool analysis of the images over time.

mplayer -dumpfile out.rm -dumpstream 'rtsp://shockreal.edgestreams.net/real.atomshockwave-secure_!/me_300.rm?auth=caEascHb6b7dRbpdudXcLbKdibBaHbDbbdP-be81D5-cOW-REAwJrGowGoHn3wlB&aifp=123&span=10800' 
suzanne thomas

My cousin Suzanne Thoma finally has a website. She still sings but mostly she's now a freelance graphic designer. My opinion: website needs some work. I'm not sure that my parents would be able to navigate it.

How to create little bar charts inside the cells of an Excel spreadsheet looks useful and pretty easy to do. Generally speaking Excel's graphing sucks, and it looks like the Excel 12 graphs aren't going to get any better. Apple's iWord graphs are somewhat better but not perfect and some important graph types are missing.

Finally, let's hear it for art: The Grooming of the Woodside Man V1 by Simon Donikian and The Grooming of the Woodside Man V4 .

Enough for now...

I can't get enough of ravenblack quizzes!

Posted by Simon on August 19, 2006 at 12:00 PM

Tags: links, meta

I just can't get enough of these ravenblack.net quizzes! They're so awesome! The author is a genius!

Wait, the author is also really weird and has a RavenBlog !

While I'm here and screwing around, here's a Googlewhack: aquaplane wimax

Also, I'm redoing some fundamental bits of the XSLT that runs my site, so things might be a bit haywire for a few days.

Some links between Republicans and Vets for Freedom

Posted by Simon on August 16, 2006 at 12:00 PM

Tags: infographics

I was just reading this article on The Vets for Freedom faux grassroots movement . If there's one think that I don't like, it's astroturfing. See why at wikipedia . Especially political astroturfing, the worst kind.

The web of connections in the article is pretty confusing so I came up with this information graphic to try to untangle it a bit.

Some links between Republicans and Swift Vets and Vets for Freedom

I have large versions in Some links between Republicans and Swift Vets and Vets for Freedom (PDF) suitable for printing at any size, and also bitmaps in PNG , and JPEG .

Keep an eye on this page and / or the blog generally, as I may update the infographic if more information becomes available.

It's licensed under creative commons CC-BY-SA , so if you want the original file (in OmniGraffle ) let me know.

I cross-posted this on sbwoodside's diary on DailyKos . If you want to comment, you can do so there (or just email me).

nifty animated information graphic

Posted by Simon on August 11, 2006 at 12:00 PM

Tags: links

Imagining the Tenth Dimension is a cool, flash-animated information graphic. Unlike a lot of flash graphics, this one really needs to be animated, the movement really adds to the explanation power of the graphic.

After watching it, you're supposed to understand why "String Theory" has ten dimensions and what they are. In theory, anyway.

Customizing CSS with the Sympa Mailing List manager .. and CFH 416

Posted by Simon on August 01, 2006 at 12:00 PM

Tags: meta

I recently decided to customize the CSS style sheets on my Sympa mailing list manager -based semacode.org forums . It wasn't quite as easy as I think it should have been. The "instructions" in the Sympa docs are not exactly friendly. However after puzzling through it myself I found that it wasn't too hard. Here are the notes I made in the process.

set css_path in robot.conf e.g. css_path /var/www/lists.semacode.org/css #filesystem path css_url http://lists.semacode.org/css/ #fully-qualified URL! then set chmod the css directory, chmod a+rw so that sympa can change it then on "skins admin" page do "install static css" (static = not generated on the fly by tt2, I think) it will install style.css and some other .css files in the css directory then set the css directory back to whatever permissions you want it to have then modify the "static" css files however you like 

...and there you have it. So far I haven't done much, just a little bit on the archives view . Ultimately I hope to steal all the good looks from projects like phpbb and others.

Also my next appearance on Call for Help should be in episode #416, whenever that airs.

Two-level tags

Posted by Simon on June 24, 2006 at 12:00 PM

Tags: meta

I've thought before about putting in a two-level tagging system on my blog. I guess that it comes from that I'm dissatisfied with "tags" per se. They're just not rich enough. With a simple tagging system, it's hard to organize your tags into groups, for example, which to me is a big problem.

I'm not the only one to do something about this: see also tag bundles on del.icio.us , and also "meta tags" (which are tags about tags I guess).

I think that the common "solution" is to give mix tags together, so if you're talking about developing software on OS X you'd tag with "development", "software" and "OS X". But that's an implicit, not an explicit relationship. Also, designing a tag browser that lets you see which articles are tagged with all three of those tags is a hassle. Finally, there's no sense of hierarchy.

On the other hand, going to hard in the other direction (totally formal hierarchies) is also not viable in my opinion because it's too much work. You can get stuck with a specific hierarchy that doesn't always work (like in a library catalogue), or you can get confused by deranged mazes of hierarchical relationships (like Wikipedia's categories ).

This is a problem in software development too. I remember when working at Apple. NextStep always had a single-level namespace, which meant that each and every library and application class had to have a unique name. This is a really big hassle and so people wound up prefixing their class names with two uppercase letters in order to prevent collisions. So NSThis and NSThat were the names for "NextStep" classes (provided by the system), and your own app would be MAThis and MAThat (for "My App" ...). Then of course what if two people choose the same prefix. Or what if the name of the app changes, and your prefix becomes historical and a little spurious. (Like in OS X, all of the system classes still start with NS...)

Apple introduced a two-level namespace at some point in 2001 I think, which made the problem go away (although the NS prefix remains). I think that two-level systems are good. People can remember two levels of hierarchy very easily, it's a sort of natural relationship (like having a filesystem with files and folders but no sub-folders ... wouldn't that be simple??).

So I decided to put into place a two-level tagging system here in my blog. The "top level" tag is the category and the "second level" tag is the tag . Top level categories include links , original , and a big one: dev (for software development). You can see all the categories by clicking "Browse all tags" at the top to take you to the categories and tags browser .

There's a couple more things I want to do. One is to integrate the rest of the site into the system, so that any of the pages on the site can be tagged and included in an overall tags-based browser for the site.

Also I need to improve the UE a bit ... one thing is to have the ability to see a list of each category and its sub-tags. Also, I need a page-overflow paging type system to deal with huge pages like the one for the "dev" tag.

Can you still hear?

Posted by Simon on June 20, 2006 at 12:00 PM

Tags: links

Here's a flash app that you can test your hearing , how high it goes at higher frequencies. Best to start at the top and then notice when you can start to hear something. For me, it's 18 000 Hz which is pretty good considering how bloody old I'm getting. How about you?

This all came from a shopkeeper in england who used high frequency sound to repel teens . Fascinating and clever idea.

Oh by the way, you need a decent set of speakers or headphones to do this, otherwise you can blame your crappy speakers :-)

Videos from JavaOne SF 2006

Posted by Simon on June 04, 2006 at 12:00 PM

Tags: (none)

/shared/saxinc/movie.xml href=/weblog/media/2006/20060518-paul-yerba.3gp

What have we here? You guessed, some cheesy grainy videos from San Francisco. Let's start with the big one. It's Paul. Yup. And he's not aware he's being filmed. Hmm. Then, he realizes he's being filmed, and so he insults me.

/shared/saxinc/movie.xml href=/weblog/media/2006/20060519-sea-lions2.3gp

Next I give you ... what was that?

/shared/saxinc/movie.xml href=/weblog/media/2006/20060519-sea-lions3.3gp

Oh, it was a sea lion. Yawn.

Please note: Many crappier videos were deleted in the making of this blog.

A bit of torrent #3: SNL best of Will Ferrell

Posted by Simon on May 22, 2006 at 12:00 PM

Tags: bittorrent, tv

will ferrell

I've been watching a lot of torrents lately and frankly, a lot of it has been crap. Like this "Around the world in 80 treasures" show where the host is just insufferable (deleted). Also I've been watching these SNL best of shows and they're pretty good. This one is the best so far.

Go and grab the torrent from The Pirate Bay or view the IMDB page . Until next week, enjoy your A bit of torrent !

Fake or real?

Posted by Simon on May 21, 2006 at 12:00 PM

Tags: graphics

Can you tell the difference any more?

man

Go to the source to find out.

I got 400 spam mails yesterday

Posted by Simon on May 20, 2006 at 12:00 PM

Tags: meta

Does that seem like a lot to you? It seems like a lot to me.

Possible circumvention method for Apple's new iTunes 6 Music Store DRM

Posted by Simon on May 19, 2006 at 12:00 PM

Tags: theories

jhymn icon

Apple uses a form of DRM with the iTunes Music Store . While I love iTMS, I can't stand the DRM. The files come down as .m4p files which are AAC with an Apple DRM system called Fairplay .

Now with iTunes prior to version 6.0 there was a great program called JHymn which would strip the DRM from all your iTMS song automagically. Cool! It was built on reverse-engineering work by DVD John and enhanced by other people. Unfortunately, Apple messed around with FairPlay in iTunes 6.0 and JHymn no longer decrypts it.

But wait—says I—I have an old Airport Express and it plays my encrypted music just fine! It was made a long time before iTunes 6.0 came out. Is it possible that the music is being transmitted over the WiFi connection unencrypted?

The AirPort Express contains a little computer that can translate mp3, AAC, and AIFF files into an analog output. I know that it only supports certain formats, because I have audio files in other formats that iTunes will play on my computer but not on my stereo. That means that the Express must contain hardware/software that understands AAC. But it would only understand the old Fairplay, not the new one.

That means that iTunes 6.0 is taking out the new DRM before it sends it over the air to the express. And that means it should be possible to write a program that finds that stream of unencryted data and read it back into an unencrypted AAC.

Useful resources for Ultimate (the disc sport...)

Posted by Simon on May 09, 2006 at 12:00 PM

Tags: (none)