This is part of my blog, which I have long since stopped maintaining. The page has been preserved in case its content is of any interest. Please go back to the homepage to see the current contents of this site.
Glittering skyscraper spires tower over the city of Manama, Bahrain’s capital – and only – city. Each lit up at night with a thousand twinkling lights, they are monuments to technology and to money, each one the home some giant financial mega-corporation.
But yet in the streets below, a very different city lives. A city of densely packed buildings, looming over the streets that get narrower and narrower as you venture onward. Every building is a shop, most more than one, and flanked by market stalls. Jewellery, clothing, carpets and all manner of things are waved at you as you pass, in the hope of making a customer of you.
Above head-height, some buildings are intact enough to be homes, their air conditioning units dripping warm water down into the streets. But others are abandoned, even ruined. Nothing gets fixed here; people just work around its broken-ness.
In each shop window are plastered layers of ‘room to rent’ signs, each one marked ‘Kerala only’, ‘Filipino only’ or one of a dozen other permutations, pasted up by apartment-owners desperate to find a tenant with whom they have something in common against the city’s multicultural morass of people.
And most of all there’s the smells, and the contrast between them. Good and bad, they assault you at every turn. There are places here for every culture on the planet, from the Italian restaurants and Irish bars of the tourist areas to grimy Chinese takeaways and run-down Pakistani restaurants that cater only to their ethnicity of choice. And as soon as three restaurant-smells in a row lull you into a false sense of security, an open dumpster full of rotting vegetables is always waiting.
Between its glittering mega-corp spires in which the lucky few work, and the ant’s nest of twisting streets and cheap phone unlocking shops for the rest, Manama is twenty years of dubious technological progress away from becoming the epitome of near-future Cyberpunk dystopia.
And for that, I adore it.
Back here again. Jubail is beginning to feel like a second home, we slip back into life here so easily. We remember what channels are on the TV, what to order for lunch to minimise the amount of it that’s stale. Out on the range, they remember our tea and coffee preferences, and we have our own mugs. I’ve given up wondering if each trip will be our last, saying goodbye as if we would never return. I guess our real final trip will sneak up on us in the end, never letting us know that’s what it was until long after we’ve returned home.
For years I’ve travelled around with wildly varying hairstyles across my various forms of ID, from my passport photo taken with barely any hair in 2005 to more recent shoulder-length versions. I’m surprised I’ve made it this far without being questioned by anybody, but I imagined the first query would come from a passport checker in a booth somewhere, probably on re-entering Britain, who I’d be able to have a chat with and explain the haircuts.
As it turns out, the first person to question it was a Marine. With an AK47. Who didn’t speak English.
The vast majority of user-reported bugs and requested features on “a thousand words” have now been sorted out. As requested by my co-conspirator Eric, we now have an ‘adult content’ filter based on a date of birth field in users’ profiles, and a ‘report’ button to bring problematic stories and pictures to the attention of the moderators. There’s also a DeviantArt-style “request critique” option to let users know what kind of comments you’re looking for.
Timestamps have been fixed, “no stars yet” ratings introduced, and text field policies such as “mustn’t be empty” have been added across the site. A few rendering issues in IE have been sorted out, so it now looks much the same across all platforms.
The biggest change is unfortunately something most of you will never see – the moderator console. Picture submissions and reported stories/pictures now sit in queues that can be dealt with by moderators. An item entering a queue triggers an e-mail to all mods, who are invited to review it and make changes as appropriate. Once changes are made, the affected users are then e-mailed to let them know what happened (and in the case of reported items, to give them a chance to challenge it).
There’s one major feature request that’s not yet been implemented: file uploads. Once in the system this would allow users to submit pictures from their hard drives rather than from the web by URL, and would allow moderators to copy URL-linked pictures to the site to avoid hotlinking. (At present we don’t hotlink, but we do therefore have to copy pictures to the site manually using FTP.) It could also allow users to use a non-Gravatar picture for their profile.
Depending on how things go, that may or may not be ready by tomorrow night. On Saturday morning I jet off to sunny Saudi Arabia, so any changes not made by then are going to remain unmade for a while. From that point it’s in Eric’s capable hands as to whether she wants to release the site or not. Even if the site does advance to release status, I’m still taking bug reports (they’ll sit in my inbox until I get back), so keep on letting me know what’s broken and what you’d like to see added!
“a thousand words” has now reached a stage where every feature that I give a damn about is implemented. Thus, we’re opening it up to a limited beta test to iron out the wrinkles and get a list of any features potential users would like to see us launch with. If you’re bored or simply have a love of breaking other people’s shit, head along to http://athousandwords.org.uk and see what hell you can raise. As the Big Red Box Text warns you, really don’t submit any work of fiction you care about, just in case some kind soul finds an SQL injection vulnerability and trashes the database.
Since last time I bored the hell out of you all, voting and commenting has been implemented, registration has been fixed, filtering HTML tags from submissions has been added, as has a word count and the picture selector on story submission. There’s been a bunch of behind-the-scenes tweaks to improve security too.
The one feature that Eric definitely wants is a way to mark stories according to their content. We could do this in several ways – I would prefer, if anything, to just have a “not for kids” option on each post and a Date of Birth field associated with user accounts, so we can hide stories as required. Other options include a range of ratings (U, PG, 12, 15, 18…) or tags for certain content (violence, sex, language) so people can avoid whatever they’re picky about.
This probably ought to come with a Report button so that users can report incorrectly rated stories, and I would add a similar feature to report pictures. (Picture submissions are moderated, so Goatse isn’t going to make it through anyway, but the mod team might miss subtler things like licencing terms and copyright infringement.)
At that point, all that’s left on my list is the admin interface and anything that users suggest during this beta. Hopefully we’ll be ready to launch by the time I depart for sandier shores at the end of the week!
A few days’ laziness (by which I mean a few days’ Starcraft) have passed with not much work being done on “a thousand words”. That came to an end tonight, with a productive evening resulting in a working profile system so that users can now add and display personal information, change their registered e-mail address and password, etc.
There’s now a database backend for the voting and commenting systems, which will be complemented by their GUI pages tomorrow night.
Once that’s done, that’s the last of the main functions out of the way and we’re basically down to tweaks. I think we ought to, in no particular order:
Decide on what formatting users can add to stories, and filter for it
Add a word count, and possibly limit submissions to e.g. 600-1400 words
Add a means of reporting stories and pictures for e.g. copyright issues
Add a means of rating stories, so users can mark them as containing sex, violence etc.
Create an admin interface, so we don’t just have to run the site with raw SQL queries
Add ranks, etc. (incentives for achieving high Total Stars)
jQuery up some of the main bits to improve user experience
Implement the scrolling list of pictures for users to select when creating a new story
At that point, I think it should be ready for open beta. Hopefully we can get it all done within a week, before I depart for internet-less shores!
Another day, another bunch of functionality added to a thousand words. With the main public-facing interfaces largely complete, I have moved on to the guts of the site’s user interaction. The site now has working, but ugly, implementations of:
E-mail address / password authentication, with cookie support based on a secret phrase generated at registration.
Registration itself, including the setting of a display name (users authenticate with their e-mail address, so we need something friendlier to display in the UI). Accounts are created in an unactivated state, and an e-mail is sent allowing the user to use their secret phrase to activate the account (GETted via a “click here to activate!” URL).
Picture submission, which adds the submission to a ‘queue’ table. In time there will be an admin interface for moving items from the queue to the real pictures table, i.e. promoting a suggested picture to “picture of the week” status.
Story submission, which adds the story to the live site and takes you there after submission. There’s currently no edit capability, and the picture that the story is based on must be manually specified by ID number. (The latter will become a scrollable jQuery list of all pictures.)
A story edit/delete interface is my next task, and once that’s done, the core functionality (excluding any user profile-related code) will be largely finished. After that there’ll be a period of testing and improving the interfaces of the new functions, before I put a call out for a couple of willing guinea pigs to try and break the site for me! If anyone out there is expecting to be really bored sometime this week, let me know!
With the main browsing UI for a thousand words up and running, it’s time to bore the world with more pointless trivia before moving on. Today: design sketches!
Pretty much every software project I undertake these days begins with a sketch of the user interface and an initial structure for the database. Labouring under the cruel ‘no whiteboard’ conditions at home (maybe I should get one?), I drew these out on paper. Passing the UI sketch over to Eric after about 5 minutes’ work, she described it as “awesome”. I think that’s the first time that’s ever happened; the general response at work is along the lines of “but where are you going to put giant-ugly-element-X that I’ve just thought of and wasn’t in the spec?”. So that was that, and I’ve coded it up pretty much as it was on paper.
The database hasn’t changed much from the original design yet, but it will have to soon – as designed, the vote (‘stars’) system doesn’t record each user’s vote on each story, so it can’t support users changing their vote. Sometime during development I’ll have to devote a few hours to figure out the best way of handling it, though that probably comes down to a few minutes as someone on Stack Overflow has inevitably asked about it already.
Next up on a thousand words is coding the first few forms that will allow users to register and log in, submit photos and submit stories. That should be done within the next few days, and will allow me to play with actually changing the contents of the database, rather than just showing views of it.
Somehow unable to cope with actually having free time of an evening, I have taken on yet another project which will doubtless push me deeper into the dark, untamed wilds of the internet, the land stalked only by the mysterious beast known as the “web developer”.
- Users submit photos or other images that they find interesting
- Every week (or other suitable period of time), one of these is chosen by the site staff
- Users then write short stories, of around 1000 words, inspired by the picture
- Users rate, comment etc. on each other’s stories
I’ll be coding up this site in my spare time over the next few weeks, and you can check out my current progress on the live site at a thousand words. Currently, the database design is done and I’m partway through the UI of what will be the main page. My todo list is roughly:
- Finish the main page and story page UIs.
- Add bare-bones pages for all the GET/POST functions, e.g. registering accounts, submitting stories, submitting pictures.
- Test all the functions.
- Work on their UIs.
- Start closed beta testing for anyone interested.
- Liberally apply jQuery to improve user experience.
- Add commenting, possibly via DISQUS.
- Add proper user profiles, gravatar support etc.
- Get everyone I can find to try and break it.
- Release! Open the flood-gates, and despair at the dribble I receive.
As I go I’ll be posting updates and hopefully-interesting insights here, and you can always check the site at athousandwords.org.uk to see how I’m getting on.
On Sunday, Britain’s Defence Secretary Liam Fox called for the upcoming Medal of Honor game to be banned by retailers (BBC). Apparently he finds it “hard to believe any citizen of our country would wish to buy such a thoroughly un-British game”, which shows quite a remarkable lack of understanding of the people he is supposed to represent. And since when has there been an expectation that American games should be “British” anyway?
Apparently it is “shocking that someone would think it acceptable to recreate the acts of the Taliban against British soldiers”. Well, in real life, maybe. But this is a game, and an 18-rated one at that, so it is played by adults that are fully capable of distinguishing between fiction and reality.
And yes, you can play as the Taliban. It’s called multiplayer. Would Mr Fox prefer that the multiplayer was Americans shooting Americans? Because that’s just as morally dubious, and also kind of dumb. No, one team plays the good guys, one team plays the bad guys. That’s the way these things work. I don’t recall politicians losing their shit about Counterstrike because zomg half the players are being terrorists! How many games have there been where you can play as a Nazi soldier in multiplayer?
I wonder if the Defence Secretary ever got the chance to play Cops and Robbers as a kid, because, you know it’s no different. One team plays the good guys, one team plays the bad guys, that’s how it works. Cops and Robbers doesn’t glorify violent crime, just as Medal of Honor doesn’t glorify the Afghan insurgency.
So Mr Fox, it would be appreciated if you could please go back to getting our real soldiers some MRAPs and some more helicopters and guns that work, and leave the rest of us to enjoy our videogames. Thank you!
The day began with mist rolling in over the sea, but before long it turned to morning drizzle and on into a rainy afternoon; big, lazy raindrops falling in patches from the sky. Then as evening came the mist rolled in once more, cloaking everything in dampness and white. Here by the shores of the English Channel, this is how autumn begins.
Though it will return in patches over the coming month, brief flickers and shadows of July’s heat, the summer that was is now gone. It was a summer of travel and of dodging the rain, a summer of remembering the past and of making plans for the future. It held what might be my last RABIES, what may be my last summer in Galicia, and what almost certainly will be my last summer as an unmarried man.
So now, as the light dims and dies for another year, bring on harvest and Hallowe’en, bring on the howling winds and driving rain, bring on coats and inside-out umbrellas and mugs of warm cider by the fire. Soon it will be summer once more, and everything will be different.