As an organiser you should know exactly where you are going on the day and what you need. Namebadges (sticky labels and pen if nothing else) will be needed at registration, if you have tickets and need to tick people off then rope in lots of volunteers (it sounds like a lot but 3-5% of your total attendee count is ideal) and brief them, and spread out across as much space as you have so you can parallelise as much as possible – registration is always chaos because of course everyone shows up at once and causes a backlog! Continue reading
Author Archives:
Printable PDF Handouts from OpenOffice Impress
I’m an ubuntu user, and it turns out that there’s a clever package called cups-pdf which installs a pretend printer, and anything you could print, you can turn into a PDF. Brilliant. I installed it with aptitude and instantly I had a printer named “PDF” which printed to a /home/lorna/PDF directory.
Did I mention I love ubuntu?
I also wanted to add a cover page to my document, before I sent the whole thing to the printers in a PDF file for them to print and bind. For this I simply created an OpenOffice document and used the usual export to PDF. By the magic of twitter, I got some great advice from EmmaJane and installed the package PDFShuffler which enabled me to combine the two documents and save the result as a PDF.
By the magic of open source, I have beautiful handouts :) Printing in Linux really has come a long way, I can’t thank the developers and maintainers of all those libraries enough – all I did was install two packages!
Tips for Event Hosting: Preparation
Working with Web Services – Froscon 2010
Thanks to the PHP room organisers for accepting me as a speaker and to Sebastian for twisting my arm in the first place – it’s a fun event!
One-Step Symlink Switch
When I deploy an application, which is almost invariably a PHP application, I like to put a whole new version of the code alongside the existing one that is in use, and when everything is in place, simply switch between the two. As an added bonus, if the sky falls in when the new version goes live, the previous version is uploaded and ready to be put back into service. In order to be able to do this, I have my document root pointing at a symlink, let’s say it is called “current”. (disclaimer: I have no knowledge of non-linux operating systems, this post is linux-specific)
When it is time to deploy, I place the new code onto the server, and create two new symlinks, one called “previous” which points to the same location as the “current” symlink does (bear with me) and one called “next” which points to the location of the new code. To deploy, all I need is this:
mv -fT next current
The f forces mv to overwrite the target if needs be, and the T directs mv to consider the second argument as a normal file, rather than as a directory to copy in to. The neat thing about doing it this way is that it happens in a single move, no weird results for people who manage to hit your site while you are typing the new symlink command or during the code updating. It is also just as simple to roll back from this, since you have a symlink pointing to the previously used code version.
I thought I’d share this snippet as it is a handy inclusion in deployment scripts/strategies. What are your tips for managing code deployment?
Geeks Can Write
CodeigniterCon 2010
I saw two talks, both of which were actually really good, which is pretty impressive when you’re going on stage to a rather fed up audience! Kudos to Kevin Prince and Joel Gascoigne for their talks. By this time we did get an announcement about what times the other talks would happen and I snuck out for lunch and cups of tea.
When I popped back (I assume there was a long lunch as I didn’t get there until almost 4 and still caught the last two talks) I saw Adam Griffiths and Phil Sturgeon round off the day with their talks, and I must admit that I think the talk content was spot on, although the speakers were mostly pretty inexperienced, they all had some great thoughts to share and I did get some technical content from it (and a list of new friends, thanks Phil!)
I had been looking forward to the conference social but after hanging about in a strange city on my own waiting for a promised tweet of time and location, I bailed. The people I met at cicon were a nice crowd and I’m sure it would have been fun but I got some other stuff done instead which was also useful.
In summary: nice people, useful content. worst event I think I’ve ever been to (sorry guys).
I tweeted about my disappointment and got a couple of people asking me what my advice is for events organisers. I’ve now done a few technical events and will wrap up my advice into a post (now I’ve outlined it, probably more than one post!) so look out for that over the next few weeks.
(as a total aside but kind of for the record, for an event with 40 ish people, I was disappointed to be the only woman there)
Leeds PHP User Group
Meetings are the third Monday of the month, so the next one is 16th August where we’ll have Ben Waine speak about Xdebug. If you’re within commute of Leeds, then you should definitely head along there one month, look forward to seeing you!!
3 Top Tips for Database Naming
Singular and Plural
This goes for table names, and also for the names of join tables. If you call your tables “user” and “group” then you probably want your linking tables to be “user_group”. If you go for plurals (my personal favourite) then be consistent over whether the linking tables are called “user_groups” or “users_groups”.
ID Columns
I’ve seen two main variations on the column names for primary keys, one is to call them all simply “id”, and the other is to name them after their table name such as “user_id” or “group_id”. It doesn’t really matter but my recommendation is for the latter – that way, the user_id column in any other table clearly joins on to the user_id column in the users table, making it easy to read and understand.
Case and Capitalisation
Due to my EXtreme DOuble CApitalitis, I prefer everything to be lower case, but the key is consistency, so that it is easy for developers to get used to the patterns in the database setup and to develop against your schema without having to refer back to it all the time.
Consistency is Key
In general, I like database schemas which are predictable and well-laid-out. Although I have my own preferred conventions, I don’t mind what is used so long as it is predominantly in step with itself – this makes my life as a developer so much easier! What’s your top tip for sane database naming conventions? Leave a comment and let me know!
Migrating Github Contributors to an Organization
In fact, all I had to do was update my upstream remote on my local repo – I set this up following the excellent github forking instructions when I first forked the repo. All I did then was to check my remotes:
git remote
This showed my remotes with the “upstream” pointing to the old repo. So I copied the URL of the organization repo, removed the old version and added a new upstream:
git remote rm upstream
git remote add upstream git://github.com/joindin/joind.in.git
Everything now behaves as before while handling the new central repo for the project – hopefully this helps others with projects moving from user accounts to organizations (or organisations, as I keep typing, British spellings as always!)