Archive for the 'Misc' Category

Dedicated Server Configuration in L4D2 (or how isotoma play zombies)

Here at isotoma, we’re partial to a few evenings spent giggling like maniacs and coming up with inventive ways to kill as many zombies as possible.
Nothing quite like arguing with a coworker whether an aerial kill with a frying pan is better than a survivor steered into a convenient pool of spit.

Naturally, our game of choice is the rather good Left 4 Dead 2.

However, our experience of the L4D2 lobby system has been variable, with some servers being slow, or configured weirdly. The usual answer for this is to run a dedicated server, as has been done since time untold (Quake).

In L4D2, the tools to do this aren’t immediately obvious, and have a nasty habit of changing from patch to patch.
This is a quick note to show the current method that we have found works.
I won’t cover how to install and set up the server, there’s plenty of guides out there to do that, this is how to configure it, and how to start a game on that server.

Server Configuration

In server.cfg, do this (replace things in [] with a value, including the brackets themselves):

hostname “[SERVERNAME]”
sv_region 3
sv_search_key “[AUNIQUEKEY]”
rcon_password "rcon"
sv_lan 0
sv_allow_lobby_connect_only 0

The important part of this is the sv_search_key setting. This should be a unique key (a steam account name is a reasonable bet), and something that you can type into the game console. Do not attempt to set the Steam group settings that you can find documented elsewhere. This will break the search key, and mean you then cannot reliably connect to this exact server.

Run the server with a line similar to:

./srcds_run l4d2 -autoupdate +ip [SERVERIP] +hostport [PORT] +exec server.cfg

SERVERIP should be the public ip of the server machine
PORT should be the port to run the server on (27203 is our favourite)

Once this is done, you should see some nice console lines scrolling by and your server is now up. The search_key setting means that only people with that key will be able to find and connect to the server using the lobby system. You will be able to connect directly using the server ip and port if necessary.

Connecting

In the game, go to Settings > Keyboard Settings and enable the ‘Developer Console’

To start a lobby game:
From main game screen
Bring down console (~ key, usually next to 1 on a keyboard)
Type: sv_search_key [AUNIQUEKEY]
(This should be the sv_search_key you set above)
Create a game with friends
Do not change the server choice (dedicated, best available etc), leave it as it appears.
You can change game settings, maps etc.
Play

To connect directly:
Bring down console (~ key, usually next to 1 on a keyboard)
Type: connect [server ip]:[port]
This will drop you straight into the server, from where you can invite people to join you.

This is all a bit fiddly, but it works for us. I hope it helps someone who was as equally as lost as me to get this going.

–t

Mixed metaphors and malapropisms from the mire of many meetings

Most of us find ourselves stuck in long boring meetings or conference calls more often than we care to remember. For a while now, I’ve found some respite in my habit of collecting some of the more hilarious manglings of the English language you find in such situations. I particularly love it when phrases end up meaning the opposite of what the speaker thinks they do. Here’s a selection from the past year:

  • Getting “buy-off” on specifications (probably thinking of buy-in or sign-off)
  • An item being “delegated to the bottom” of a menu (meaning relegated)
  • “visa versa”, used to mean something like “for example” (confused between vice versa and vis-à-vis)
  • “The train is already out of the tracks” (I think you meant to say station)
  • Extolling the close, mutually beneficial relationship between their organisation and ours as “incestuous and symbiotic”
  • “Begs the question” used synonymously with “Raises the question”

And some from emails:

  • “By all intensive purposes, I think I have the account setup and everything ready to go.”
  • “These are often required and might shoot you into a foot”
  • “I wonder if he’s been unendated with calls or e mails?”
  • (From a Kenyan security newsletter) “Wait until the crowd has disbursed”

Feel free to add more in the comments!

Good Spam

Following on from this bright idea to use a spamming tool to create a blog from an Open University course feed, the OU asked us to build a plugin for WordPress MU that will automatically create a bunch of blogs from Open University feeds. We also built a WordPress widget, to implement another bright idea, that can then deliver the blog entries for a course in periodic chunks.

So you can consume the course in your feed-reader at a pace that suits. This should be released soon, meanwhile, the testing is very educational.

Every day this week I’ve been mostly learning about James Clerk Maxwell.

On what to do with downtime

There’s a fascinating post over at TCUK today about agencies building their own applications. We even get a mention in the intro with reference to Forkd. The comments get pretty heated too, with some people claiming agencies that have the time to do such things are over staffed while others are worrying about how to fit internal developments alongside client work.

So, given we’re mentioned, how do we feel about it?

It’s always going to be hard getting the balance of client work and your own projects right. We started work on Forkd in summer 2005 and launched it in early 2008. In that time the world and his wife had built a food social networking site and we were on the back foot right from launch. Keeping a focus on internal development ideas while working with clients work is always going to be a killer.

That said we have more in the pipeline and aren’t going to stop…

The reasons (at least for us) are threefold. First up, what better shop front is there than something that you made for yourselves? A real case of putting your money where your mouth is; new customers can see exactly what you could be making for them.

Secondly, scaling a technical agency is hard. You only have the person hour to sell, and growth only comes through selling more person hours. That is, unless you can “productise” some of your own work. And what better than productising something that you and your team enjoy making and using?

Third – it’s always best to learn new technology on something that isn’t so important that your business depends on it. That latest cut of your favourite app server from svn might look like it provides the killer feature (or bug fix) you need, but do you really want to try it on your current big client project?

And to those that claim agencies must be over staffed if they can do work like this… We all know that the entire team will have downtime whether it’s explicit or not (and all of you with “100%” utilisation just have a miserable staff hiding their downtime at the water cooler or on facebook). A shared goal to aim at during that downtime makes the downtime explicit and supported, which makes a whole let of sense to me, anyway.

And hey, who wouldn’t like to be the next Skinny Corp?

Search vs. URL

Watching the TV last night I saw an advert for EMA (Education Maintenance Allowance) which instead of giving a URL suggested that the viewer “search for EMA online”. This is the first time I’ve seen this type of advertising in the UK, although strangely only last week the article about search terms taking over from URLs in Japan over at cabel.name was doing the rounds. Searching for EMA across Google (first both paid and natural), Yahoo! (first paid, second natural) and Live (first paid, third natural) seems like this works in this instance, but I can’t help but fear the torrent of spam that will start to follow major ad campaigns that feature particular terms.

As Cabel says in his article this change seems inevitable for all the reasons that he lists, but it sure is going to make management of search placement a lot more complex over the next few years.

Could not read chunk delimiter

I nearly cried. I went to svn up in a local check out of one of the projects I’m working on, knowing that I was a good few days behind and instead of getting the usual stream of files I got an error message:

Could not read chunk delimiter

I logged on to the server and ran svnadmin verify /path/to/repo and got a different error message:

Decompression of svndiff data failed

Much googling later and I found fsfsverify.py – a script that repairs broken fsfs-type svn repositories. The author (jszakmeister) doesn’t allow comments on the page of his blog that hosts the script, so this is a public thanks for really really saving my bacon!

Favourite Firefox plugins

It’s worth choosing carefully which extensions you install, since too many of them will definitely slow down Firefox and use up memory. Here are the ones I rely on every day:
Firebug. Simply the most indispensible tool for the web developer. One of those rare applications that you love more every time you use it.
FireFTP. Not only will I never need a standalone FTP application anymore, but this actually outperforms any I’ve ever used.
Tab Mix Plus, mainly for the Session Manager. I typically have 3-4 FF windows open, one for each project or aspect of a project, and many tabs in each. It’s imperative that I retain this from one day to the next. Session Manager can reload the last session, or the one before that, or save any number of sessions to a particular name.
Web Developer toolbar. Before Firebug, this would’ve been #1. A lot of its functionality is supplanted by Firebug, but it still has many useful tools and some handy keyboard shortcuts, e.g. Ctrl-Shift-S Toggle CSS, Ctrl-Shift-E Edit CSS and Ctrl-Shift-A Validate HTML. It’s also great for evaluating accessibility.
Netvouz buttons. This is my online bookmark manager. For why I use it instead of Del.icio.us, see my comment (the 5th one) on this review.
Pearl Crescent Page Saver Basic. I need it for one simple reason only: making snapshots of web pages longer than the screen. The basic (free) version creates a PNG on the desktop; the pro version will copy the snapshot to the clipboard.
ColorZilla. It has a lot of functionality that I don’t use, but I find it the quickest way to read colour values off web pages. (I’d need Photoshop open otherwise.)
What are yours, and why?

Firefox keywords (more)

Andy mentioned how useful Firefox keywords are for Trac. Remember a quick way to create your own shortcuts is to right-click on any search form and click on “Add a keyword for this search…” Or even quicker, download this handy set that I adapted from Lifehacker’s. Here’s how to install it:

  • Save the link to your desktop
  • In Firefox, from the Bookmarks menu, choose “Organize Bookmarks.”
  • From the Bookmarks Manager File menu, choose Import. Choose “Import Bookmarks from File.” Browse to and open the file you just saved.

Continue reading to see the list of searches.

Continue reading ‘Firefox keywords (more)’

Firefox keywords and Trac

Going firmly in the ‘you learn something new every day’ bracket… Karen just pointed the office in the direction of Mozilla keywords. Combined with Trac they mean you can type things like trac 705 into the Firefox location bar and get transported to ticket 705 on your trac instance. Enormously useful when people keep mentioning “#705″ in IRC rather than pasting the link.

  • Add a new bookmark to your Firefox bookmarks for (say) https://projects.isotoma.com/forkd/ticket/%s
  • Give it a keyword (in my case tforkd)
  • Type tforkd 705 into your Firefox location bar
  • Voila!

Astroturf must die

Astroturfing attempt (by a charity, even) unmasked on MetaFilter. Merciless. This comment (by a MeFi moderator), addressed to the guilty company, gives a nice plain-English explanation of how bad things got, and why behaviour like this does not fly:

For those of us who have been interacting and working with web communities for the greater part of a decade, I’m dismayed that people who are newer to the playing field see this as just another way to game the web to hype themselves. There’s much more to it than that, on all sides.

There’s also a forensic summary of the affair on the MeFi wiki.

Marketers should not underestimate members’ protectiveness of their community. Nor how badly practices like this can backfire.