Wiki Wonder

I love wikis for workplace documentation. For anyone who doesn’t know, a wiki is a web page with an “edit” button, so you can change the content of it if you have something to add or something is out of date or missing. Wikipedia is the obvious example.

So why is it, whenever I set up a wiki, I spend the next six months fielding requests from people for me to add things to it for them?

Textpattern To Serendipity

I’m planning on migrating this site to a new platform soon, I’ve been looking around for an alternative to textpattern. Textpattern has been great but I’ve kind of outgrown it. Its easy to use but a bit “fluffy” and it eats my code excerpts which is really annoying.

I’ve picked serendipity as my intended target, its very modular and uses smarty for templating which I like and am familiar with. And if its good enough for sara and davey then I expect I will get along with it just fine.

Meeting Serendipity

So I installed Serendipity, nice easy installer, and started to look in the admin panel. There was a button for “Import Data” … you say what kind of blog platform you are coming from, and enter your database credentials and it attempts to import your old data. So I kind of tapped in my details.

Literally five seconds later I was looking at a blog with my entire history in it. Its got comments, posts, categories and users. I’m blown away, its utterly fantastic.

Finishing touches

The import didn’t cover stuff like images, which will need a whole series of conversions and text replacement on the posts to get sorted, and it seems to have chewed on some HTML entities. Also textpattern uses a post body with an optional excerpt and serendipity uses post body with optional extended body which has done some weird things to the import. It doesn’t help that I did use excerpts for a while in textpattern and then stopped after complaints from people reading on feed readers.

I’m also procrastinating over a theme for the new site … obviously it will involve a very empty stylesheet and at least two shades of pink but I’m not quite there with it yet. Once I’ve converted my content then I’ll just stop fiddling and use what I’ve got I think. I’ll also post the conversion scripts once I’ve finished with them.

Finally I will have to put together a bunch of HTTP 301’s since serendipity won’t support having article titles as the only thing after the domain name on the URL. I’ll keep you posted :)

grep: unknown directories method

The title of the post is the error message I got when attempting to grep a directory containing a file whose name started with a hyphen ( – ).

What has happened is that grep interprets hypens as switches, as if the idea was to convey options to use. This gave me a problem as I realised the file shouldn’t have been placed there in the first place and subversion was unable to remove it.

The Double-Hyphen Trick

The resolution is to pass two hyphens to the command, I didn’t know this before but this means “enough of the options, here’s the list to operate on”, or words to that effect. I used them to remove the file in question


svn rm -- \-*

Hopefully I’ll remember to look here next time I see this error message … but maybe not. So long as I don’t find myself on Google again

Cleaning up Windows Line Endings in Vim

I have a file which has been edited in windows with an incorrect setting. All the lines have


^M

At the end of each line.

To search for these in Vim, you can type ctrl+v (to mean “take my next key combination literally”) then ctrl+m. To clean up my file I used:


:% s/^M$//

Where the ^M is typed using Ctrl+V, Ctrl+M. I’ve recorded it as a macro as I seem to be fixing the same thing a lot these days. Hope that helps someone!

Social Networking Sites Are Pointless

Social networking seems to be the buzzword of the moment, MySpace and Beebo are apparently a bit last year and now its Facebook, Flickr and Twitter. Call me old-fashioned, but I don’t really “get” it. I mean, its not that I don’t have friends. I do, lots of them. So many in fact that they all go months and months without hearing from me as I find it so hard to keep up with them all! My friends are (almost without exception) internet-enabled so they should fit well onto the social networking model. Some of them are people I only know through the internet, but that doesn’t seem to change my persective.

Its not that I’m actively avoiding these things. Here are links to my accounts on:

I have the accounts, but I don’t really know what to do with them. The most useful so far has been del.icio.us, which I use to keep hold of bookmarks between multiple locations but not to share stuff really1. I think I “get” LinkedIn; I try to keep up with colleagues that I respect and would work with again on there, and in fact have actually used it today to check if I’m linked to someone, which is nice. Flickr is fine, I put my friend’s wedding photos there for her, but I’m not raving about it. Facebook has landed in my offline friendship group recently and I’m still waiting for the penny to drop about why people seem to be losing whole swathes of their lives to it. I’m on there, but if I haven’t seen you for years and/or your number isn’t in my mobile phone, then I’m not adding you as friend because clearly you’re not! And as for twitter … this is just a mystery.

So has the world gone mad or am I simply missing the point, like people who read websites in real life rather than on feed readers? Your thoughts please!

1 Also I used its API to write a game earlier in the year.

Seeing stderr from PHP exec()

Today I was using the PHP command exec() in a script, which runs whatever you pass to it as it you had typed it on the command line. Its possible to check both the output of the command and the return value, which I did since I wasn’t getting the results I expected.

When you look at the output of the exec call, it isn’t the same as what you would see on the screen when typing the command. PHP returns you the content from stdout, but if anything goes wrong it will go to stderr which PHP doesn’t provide.

Redirect stdout to stderr

To get around this problem I altered my call from this:


exec ('unzip '.escapeshellarg($filename));

to this:


exec('unzip '.escapeshellarg($filename).' 2>&1);

This collection of characters tacked on the end of the code tells the system to send output 2 (stderr) to the address of output 1 (stdout). And the upshot is that I started to see the error messages being returned by the unzip program.

Postscript

Not really relevant to my point but probably useful for reference – the actual problem was that unzip was returning 50 as its return value. This apparently means the disk is full, which it wasn’t.

What had happened was that I was unzipping a file in another directory and unzip was trying to place the contents into my current working directory rather than the one with the zip file in! I used the -d switch to unzip to direct the inflated files to the right place and this worked a treat.

Open Office Font Shortcuts

When typing a long document the other day with sore hands, I looked up the keyboard shortcuts for applying headings in Open Office. Here’s a quick few:

._ Font Shortcut
Heading1 Ctrl + 1
Heading2 Ctrl + 2
Heading3 Ctrl + 3
Body Text Ctrl + 0

Bash Idle Timeout

I’ve set an idle timeout on the development server at work in an attempt to cut down the number of sessions that have been left logged in on unattended PCs. It was really easy to set up!

You can set this in /etc/profile but I realised that ours just includes a file /etc/bash.bashrc so I added my line to that:


# set the idle timeout - logs you out after an hour
TMOUT=3600

New sessions logged in after this will automatically log themselves out after one hour of continuous inactivity.

New Look Google Analytics: The Dashboard

Google Analytics have been migrating their users to a new interface over the last few weeks. I like analytics (something to do with an unhealthy fetish for statistics I think) so I’ve been pretty impatient waiting for my mail to come through. Anyway its here and I’ve been migrated – woohoo!

I thought it would be cool to blog about some of the functionality that is available in analytics … until I sat down to do it and realised what a very long blog post that would be. So here’s the first installment.

The dashboard

The first thing you see when you view a site’s stats in analytics is the dahsboard, and its quite a change:

The strangest thing I find about this is the changed date range – I’m accustomed to seeing my site stats on a per-week basis rather than the four weeks that it now seems to like to show. Its cool though and gives a better overall picture of what is happening, especially for people like me that often only drop in and even then not necessarily weekly!

There are so many options from this screen that I’m literally going to mention a few and save the rest for another day, making this my new mini series of blog posts1. To start with lets take a look under that temptingly clickable date range:

You can use either of these interfaces to pick your date range, which is really nice. The timeline one has grabbable side controls, so you can slide or stretch that range as you like.

Also note the compare control on the right hand side of the box … I used this with a week’s date range selected, and it projects last weeks data onto this weeks (although both date ranges can be altered) – look!

Its a nice touch and each point on that graph is hoverable, showing the exact number that has been plotted. Its possible to display all sorts of metrics against time from this one screen, look at that “visit” button on the top right?

Hidden in there is a treasure trove of options just waiting for you to drop in and get new perspectives on your traffic trends:

This simple section of the new interface kept me entertained for quite a while (although as I said, I do like statistics so am easily entertained by this type of thing), its slick and its easy to use and the flash does add a lot. I’ve found its buggy under Linux, although that might be more to do with the flash implementation than anything else, however it is a bit disappointing. I managed to borrow the MacBook though and that was much more stable (and hence the screenshots are raken in safari!).

I do like the new interface and I’ll be writing more about some other aspects of it in the future, if there’s anything you have found particularly useful or would like to know more about, add a comment and let me know.

Gender and the Tech Community

I could post a whole page of links on this subject, I’m a woman in IT and its not easy. The women I know in the area will already have read all of them anyway, so there’s little value in that.

This one is for the guys. If you only read one of the why-don’t-women-join-tech-groups articles, read this one. Please?

http://www.devchix.com/2007/06/09/let