After much thought, I’ve changed Hello Calm’s license to Attribution Non-commercial Share Alike. In plain English, this means you can do what you like with it, for free, as long as you’re not charging anybody. You can now download it free of charge from Bandcamp or Last.fm. Share and enjoy!
Hello Calm is now officially available
Just in time for the release of Get Lamp, my first album, Hello Calm, is now available. Thankyou AdamF for your sounds, Aiko Frikki for your visions, and Nina for your patience.
Token woman
There’s a scene in the British movie Magicians where one of the judges at a magic contest says he has to pick a female act to be one of the winners, and even though he doesn’t like the one female act who actually showed up, he therefore has to pick her in order to be politically correct. This scene always makes me uncomfortable, mostly because a magician friend of mine assures me that this kind of thing really happens.
The problem is, of course, that women are underrepresented in the world of magic, as everywhere else. It seems like someone decided the solution was to force people in positions of authority — by which I mean male judges — to pick some women to artificially get ahead because they’re women. This only further demoralises them by pointing out they didn’t get ahead on their own talent and merit, while simultaneously annoying the often more talented men, making them resent political correctness.
Perhaps a better approach would be to encourage women to aim higher, to teach us that we can indeed attain dream jobs. Maybe then there’d be more talented women to choose from in the first place. That has to be done at an earlier age, though, by parents encouraging their daughters, and I guess it risks setting your daughter up for a fall. I suspect it still needs to be done, however, to make true progress. Curiously, no one seems to have similar reservations with their sons, even though most of them also won’t win magic contests.
To paraphrase Sturgeon’s Law, in any given field, most people are somewhere between talentless and mediocre, whereas only a few are actually good. So if there’s only one person to choose from in a particular marginalised group (say, women) within the main group (say, magicians in this example), then statistically they’re not likely to be very good. Similarly, most of the men aren’t very good either, but there’s so many of them that there’s bound to be a good one somewhere.
So once women are encouraged to aim our sights higher, and also to be the editors, judges, A&R people and others in charge of gatekeeping, there should finally be an equilibrium where there are just as many women as men who are actually doing these things well. This would be a much better scenario than being resented and either turned down because we’re women or chosen because we’re women, with our abilities being an afterthought either way.
New album preview: Hello Calm
To celebrate our ninth anniversary, and the summer solstice, I’m giving you a sneak peek of my upcoming new album, Hello Calm, over at last.fm. It’s mostly ambient and ambient techno in the style of Brian Eno, Vangelis and Aphex Twin, with some more up front techno tracks towards the end. Expect it to be available to buy very soon.
Many of these pieces of music feature in Jason Scott’s upcoming documentary Get Lamp, which I’d heartily recommend to any computer geeks such as myself, and anyone into the history of computer games.
Composing music is a rewarding hobby. I hope you enjoy listening to this album as much as I enjoyed making it. Thanks for listening!
Sprucing up dialogue
I’ve just spent what must have been about two hours or so rewriting scene five of Angel. I find it easier to focus on one change at a time, so today I was mostly rewriting the dialogue between Kaitlyn and Angel, to make Kaitlyn speak in a way more consistent with her Southern US upbringing. Far too much of my “research” in this area has consisted of watching Deadwood and True Blood a while back.
Also, taking advice from How to Write a Damn Good Novel, I’m making the dialogue less direct and more interesting. People don’t directly answer questions so much now, they joke and flirt a bit more. Judging by the best rejection letter I got, this is where I should be focusing the most anyway.
One way of looking at this is the more dull I become, sitting in front of my old, refurbished iMac, using vi in Terminal.app, spending hours upon hours rewriting the same scenes, the cooler my characters become, seeming more witty and spontaneous. That’s the great thing about fiction: you can get your characters to “spontaneously” say things you spent hours or weeks dreaming up.
Great Scott!
I got to meet Jason Scott today, which was great fun. We somehow managed to cram about three hours’ worth of conversation into about two hours. For those who don’t know, Jason Scott’s a digital archivist and the director of documentaries about geeky topics such as BBSes and text adventure games. Those who know me will already know how excited I am to have done my bit to help make Get Lamp what it is, however small my contribution may have been. It’s great to finally see such topics get the coverage they deserve. I was positively beaming when I first saw the PAX East mix of Get Lamp, and heard my music in it, and I was beaming just as much today having met such an interesting character.
Jack Rickard said something in BBS: The Documentary about how he writes that I think coincidentally gets across what’s so inspiring about how Scott presents hacker topics compared to most other hackers: he does’t just care about the dry facts of the technology, but also how that technology affects people. How specific communications technology, for instance, helped out people oppressed in totalitarian countries, people recovering from alcohol addiction, gay people, and others who needed to talk to someone else in their community but couldn’t otherwise. Similarly, Get Lamp shows how blind people playing text adventure games can roleplay being sighted, as Debee Norling put it. He really sheds a light on how hackers can help people in general, and for that I think he’s providing a valuable service.
Review: Get Lamp (PAX East mix)
I’ve been looking forward to watching Get Lamp since I bought Jason Scott’s first film, the aptly named BBS: The Documentary. After finally watching the PAX East edit of this second outing, I can confirm it shares all the qualities that made his first film so good.
Like its predecessor, Get Lamp documents one of the bygone eras of hacker culture. This time, it’s the story of text adventure games, from the original Colossal Cave Adventure, through to the golden era of Infocom’s heyday, to the present state of homebrew, self–published interactive fiction on the Internet. Like before, passionate people talk about the thing they’re passionate about. Get Lamp also includes interviews with many former Infocom employees, and a surprising cameo by John Romero of Id Software, who reminisces about how he had to cycle to college uphill both ways just to watch someone else play Colossal Cave Adventure.
After seeing Get Lamp, I come away feeling nostalgic, reminiscing about a time when very clever people did amazing things with a limited new technology. Mostly, though, I feel sad that such an interesting tradition is now only being carried on by a handful of dedicated fanatics, who still continue the flame long after all the companies have folded.
This is essential viewing for anyone interested in the history of computer games, hacker culture, or the (still largely unfulfilled) possibilities of the gaming medium. It’s highly recommended viewing for any computer geek. And this isn’t even the full version of the film. Scott is nothing if not comprehensive, his documentaries often seeming more like a TV series than a single film. The hacker community is lucky to have someone like him singlehandedly recording its exploits so thoroughly.
As a disclaimer, I should point out my conflict of interest with this review: I wrote most of the music in this documentary. However, these truly are my thoughts regarding this film. Its awesome soundtrack is just the icing on the cake.
Free e-books for everyone
I think it’s important to set yourself highly ambitous goals, reasons to wake up each morning. Even if you don’t reach them, there’s a good saying that goes “it’s better to aim for the stars and reach the moon than to aim for the trees and hit the ground.” (There seem to be a few variations, but the gist seems to be an inspiring message about compensating for inevitable setbacks with highly ambitious goals.)
It’s with this kind of mentality in mind that one of the many goals I’ve set myself is to help make free e-books available to everyone with an Internet connection. Michael Hart’s Project Gutenberg has done 90% of this already, offering over thirty thousand different e-books to anyone who wants them, for free.
The only problem with Project Gutenberg is that it’s based upon the design principle of making whatever’s easiest to make, not whatever’s easiest for consumers to use. I’ve recently written an essay about success which touches upon why user-centered design is an excellent design philosophy, and why people shouldn’t take it for granted that something’s been done right the first time. People who know me can attest to how much I rave about the Apple iPod, Really Useful Boxes and Dyson vacuum cleaners. I’m sure if I ever get to use an Aeron chair, I’ll rave about that too.
So in between my day job, composing music and writing essays and stories, and editing a book, I’ve taken it upon myself to write a new website for Project Gutenberg from the ground up. (Don’t worry, Michael Hart’s encouraging me.) As a project, it’s a nice balance between what I’m good at (making websites) and disciplines I’m not yet familiar with (such as organising vast sums of information — as part of this project, I ended up converting Melvil Dewey’s classification system into a machine readable format). I’d put this on the back burner the last few months, but a few things are spurring me on to give it a bit more focus right now.
Today I finally got PDF support working in a rudimentary way. One of the aspects of Gutenberg’s system which I’m trying to improve is the conversion of formats. It’s being done by hand. Using off-the-shelf libraries such as TCPDF, and the Creole PHP static class I’m writing — and use on this website — I’ve managed to get to the stage where volunteers only need to format a book once, in a Wiki-like markup language, and the website will do all the rest automatically, converting it into nice, clean XHTML and now PDF too.
I’ll keep you posted with any further development. In the meantime, feel free to check out the site.
Geolocation
There are several reasons why you may want to guess which country each of your readers is in. If you run a global online store with regional variations, you could use this information to whisk your reader away to her closest franchise.
There are a few websites where you can get a database that lists which IP address block is likely to be in which country. One such site is hostip.info, which has a hacker-friendly license. (That’s hacker as in Richard Stallman, not hacker as in Kevin Mitnick.) Their database is great, but as is the case with most hackers’ projects, the documentation’s a little thin.
Thankfully, it’s pretty simple to pick up. To save you all of half an hour, here’s a simple program to show you the basics:
<?php if (isset($_POST['ip_address'])) { $IPAddress = $_POST['ip_address']; } else { $IPAddress = ($_SERVER['REMOTE_ADDR']); } // Split up the IP address string into an array of four numbers $IPAddressParts = explode('.', $IPAddress); $db = mysql_connect('localhost', 'username', 'password'); mysql_select_db('hostip'); $query = "SELECT cityByCountry.name AS city_name, cityByCountry.lat AS latitude, cityByCountry.lng AS longitude, cityByCountry.state AS state_name, countries.name AS country_name, countries.code AS country_code FROM ip4_{$IPAddressParts[0]} LEFT JOIN countries ON ip4_{$IPAddressParts[0]}.country = countries.id LEFT JOIN cityByCountry ON ip4_{$IPAddressParts[0]}.city = cityByCountry.city WHERE b={$IPAddressParts[1]} AND c={$IPAddressParts[2]}"; $result = mysql_query($query, $db); $row = mysql_fetch_assoc($result); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Where am I?</title> <meta name="description" content=""> <link rel="stylesheet" type="text/css" media="screen" href="screen.css"> </head> <body> <form method="post"> <input type="text" name="ip_address" id="ip_address" value="<?php echo $IPAddress; ?>" /> <input type="submit" value="Where am I?" /> </form> <table> <tr> <th>IP address</th> <td><?php echo $IPAddress; ?></td> </tr> <tr> <th>City</th> <td><?php echo urldecode($row['city_name']); ?></td> </tr> <tr> <th>State</th> <td><?php echo urldecode($row['state_name']); ?></td> </tr> <tr> <th>Country</th> <td><?php echo urldecode($row['country_name']); ?></td> </tr> <tr> <th>Country code</th> <td><?php echo $row['country_code']; ?></td> </tr> <tr> <th>Latitude</th> <td><?php echo $row['latitude']; ?></td> </tr> <tr> <th>Longitude</th> <td><?php echo $row['longitude']; ?></td> </tr> </table> </body> </html>
Styling HTML tables
Just a quick note on styling odd and even rows in HTML tables: until CSS3 is finalised and implemented, there’s no semantic, W3C-approved way of styling alternate rows in HTML tables yet. In the meantime, you may be tempted to use a bitwise operation in PHP to do this. Don’t. By placing two extra lines of jQuery in your JavaScript file that’s called in from every page, you can avoid the redundancy of copypasta, keeping your code clean and probably shaving a few precious milliseconds off execution time to boot. Remember, hackers count starting at 0 and mere mortals count starting at 1, so you may want to swap around the phrases “odd” and “even” like this:
$('tr:even').addClass('odd'); $('tr:odd').addClass('even');