Skip to content

Instantly share code, notes, and snippets.

@mildlydiverting
Last active January 19, 2022 18:55
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mildlydiverting/46a6402a152ca74ca1cc to your computer and use it in GitHub Desktop.
Save mildlydiverting/46a6402a152ca74ca1cc to your computer and use it in GitHub Desktop.

Kim's Very Long and Boring Email Text File about File Versioning and Servers.

Hello all.

This is A Very Long and Boring Email Text File about File Versioning and Servers.

Please feel free to point and laugh, but this is all stuff that I've learnt the hard way, and that we should start to do as we get bigger. It doesn't take long for all this to become a habit; something you don't even think about doing. When it's working properly, it offloads a load of organisational stuff from your brain, too - which is nice, and what computers should help you do.

I've also tried to explain why you should do things like this: I always find it easier to blindly follow rules if I know there's a good reason behind them.

Other people may have their own systems, so we may end up in a holy war about a few things, but I wanted to get this out of my head. My way isn't any more rightererer, but I've thought it out and finessed it over 20 years (!) of computer. On the whole, I'd rather not endlessly argue semantics, but some people love that shit, right?

Also, as they say on b3ta, apologies for length.

Why Having A System Is Good, And Not Just Pointlessly Anal

Think about your hard drive. You know where to find stuff, right? But I bet there are a couple of folders that are.... well, if there was a little folder with 'here be dragons' on it, that would be the icon, right?

If someone else were to go in to your hard drive to find a file... could they? For that matter, say I got hit by a bus, and you absolutely HAD to find that picture of a kitten for a presentation on my mac... Could you?

If you work somewhere that's just got its first shared server - or even just a shared DropBox folder - that means you have a big fat shared harddrive for all of you.

Now imagine my here-be-dragons folder meets your here-be-dragons folder in a dark alley and has vigourous and slightly yowly congress, and produces a litter of tiny mongrel subfolders, all unalike. Now try and find the cute kitten pic in that lot.

Yeah.

This is why we all have to pretend to be librarians when we use the server. It is very dull, but a little bit of time and effort in naming files and saving them in the right place stops those moments when you're working at midnight and need to find a really important budget and it all goes wrong because someone saved it as 'trousers are funneh.doc' in a folder called 'gerald' in the place where all the MP3s are.

I used to hate doing this kind of stuff, but over time I've found having a system I stick to really helps - because I can just look at filenames and know what's what.

Everything about this isn't about making me happy - it's about being digitally polite to everyone in the company, and your clients, and about adding meaning and value to your stuff.

Also, Librarians are HOT.

So... here goes. SFW Sexy Librarian Cosplay time!

Naming Files

Don't use punctuation in file names other than - _ or occasionally .

Punctuation marks in file names mean things to the computer that aren't the same thing they mean to you. Different OSes choke on different punctuation marks, so it might be fine for you, but crash someone else's machine (particularly web servers). Especially, AVOID &ampersands, /slashes, :colons and @atsigns, as they have reserved meanings in many file systems, and someone accessing the server from a PC may not be able to see them.

I will allow you to use spaces in normal files that aren't going to be on a website, but they slightly worry me.

(Ideally) Only use lower case letters in a file name.

Macs sometimes consider ThisFileName and thisfilename to be different, but most other computers think they're the same - so you might accidentally overwrite an important file.

Web addresses also translate uppercase to lowercase, so MyAWeSoMeWebsITEfile.jpg is the same as myawsomewebsitefile.jpg - EVEN IF YOU AND YOUR MAC THINK THEY'RE DIFFERENT.

If it's for the web, don't use spaces

Ever seen one of those URLS that%20looks%20a%20bit%20like%20this? The %20s are spaces that have been 'escaped' by the browser - turned in to a special code so they don't break the internet. Don't use spaces. use_underscores_perhaps - and lowercase only.

Do Dates Backwards, eg 2010-12-04

If you have a bunch of files with the same name, but dates done as year-month-day at the end they'll sort in date order in your filesystem. If you do 12 August 2010, they'll sort with all the 12ths of the month next to each other, then with the months in alphabetical order. Not as useful!

Besides, as @chutzimir pointed out in a comment, that's actually the correct way to write dates according to ISO 8601 and not in fact backwards at all, no matter what you might think. Although I think for bonus points we should stop to consider a world where everyone writes dates on the sides of angry cats.

Use Version Numbers

Have you made changes to the file? Then increment the version number. You can also apend your initials, or increment a date on a file. There's more about versioning files below - some simple rules that will help.

Start the filename with a project code

It's useful to get in to the habit of using project codes to refer to things. If you've got a whole load of files in a mess somewhere - you can tell what project each one is part of, or refers to. Also really polite if you send it outside the company - your client can tell it's to do with project SHARK, for instance.

Use Meaningful filenames, go from broad - specific

If it's a budget, use the word budget. If it's a functional spec, use that. If it's an RFP Response, use that. If it's an image of a certain size, maybe put the pixel dimensions in the filename.

Go from the broad to the specific in order - so project details first, then specific document, then version of document

That way, you don't have to read the whole filename to get the gist of what it is quickly, and you don't have to spend your life opening and closing files to work out what they are.

If you send a file to someone, they'll know what it is in their untidy mess of files too - and it will be easier to search for, too.

Corollary: good file names can get that job you've always wanted!

This is particularly important for CVs. If you've ever been on the recieving end of a lot of job applications, you'll be familiar with a folder that looks something like this:

01.pdf
CV.doc
CV.pdf
cv.doc
jakeizawesomLOL.doc
final FINAL FINAL (1) Cv.pdf
MYCV.doc

NONE OF YOU. I WILL HIRE NONE OF YOU, BECAUSE YOU MADE ME OPEN YOUR CV FIFTEEN TIMES TO WORK OUT WHOSE IT WAS AND WHAT THE FUCK IT WAS IN CONNECTION WITH. That's nearly as bad as the time someone posted me their CV with a packet of polos in the envelope and it got crushed and caused an anthrax security alert in the BBC Post room. NO YOU DID NOT GET THE JOB, and those nice men with automatic rifles and gas masks are not from BBC HR.

Consider instead the more elegant CV - Joe Awesome - 2015-07-22.pdf

PDFs are usually more useful than .doc files, too - because these days, random doc files are a really common vector for unpleasant viruses. I mean, yeah, so are PDFs, but the opportunity for incompetence or just plain ignorance is a bit lower. Don't die of ignorance, folks. Or using contaminated masonry tools.

Flag Secret or Confidential files in the file name

If it's a file that mustn't go outside the company, make sure it's obvious from the file name. Put INTERNAL or CONFIDENTIAL in the name.

I mean, when you get your intern to clean up your files, they'll totally read those first, but you're keeping an eye on them, right?

Use file extensions.

Macs let you save files without the .doc or similar on the end. Major ballache for PC users, that one. Always add the extension if you're on a mac (there's a tickbox when you save the file, and in your Finder Preferences, go to the advanced tab and select 'always show file extensions'.

Put all of these rules together!

eg

shark - internal budget - v0.1 2010-12-07 KP.xls

A first pass at a budget for project shark, that shouldn't be sent outside the company. Kim made it on 7th December.

shark - budget for lovelyclient - v1.xls

A later version of the budget, that's ready to go to the client, lovelyclient.

shark - rfp response - v2.3.doc

A document for Project Shark, that's an RFP response. This is the third set of amends to a file that's been to the client twice.

shark_cards_closeup_150x101.jpg

A picture for the website. It's a closeup of some cards from project shark, and it's 150 by 101 pixels in size.

Subject Lines For Email And Basecamp

Just like file names, good email subject lines mean that you can easily search or sort your inbox, and they really help the person you're sending mail to - it's kind of polite. They should be just as useful to a recipient outside the company as within.

My preference is roughly

Name of Project - area of project - specifics of mail

eg

SHARK - Postcards - File for proofreading by 5pm on Tuesday 2nd

You almost don't need to write the email for that one! Like file names, go from wide to more specific as you progress. Sometimes you won't need a full three part thing, but it's still useful to have the code at the front. If it's not a project, take a guess at a sensible thing to start with.

The principle - make it easy for someone to scan a big jumbled inbox of emails to find the right one, or make them appear in a sensible order if they sort by subject line.

If it turns out that you really don't need to do anything other than writing a subject line, consider adding (NNTR) or (EOM) to signal that there's no need to reply, or the end of message if that's all you needed to send. Or even consider using slack.

99u have collated some useful email etiquette tips for the super busy (I don't approve of emotive subject lines, however!). You might also want to read http://five.sentenc.es or Channel4/PeopleWhoDo's Email Manifesto for more tips

It's useful to apply the same principles to Basecamp Posts, too - they end up as emails, and it's horrible trying to find things in there. In basecamp you should also assign a message to a category when you write it.Try and standardise categories in basecamp so they agree with your top level server folders, too. That would make me really happy.

Versioning Files

Consider: video-final-reallyFINAL-finecut-needsamends-FINAL.mp4

Is that an approved video? Is the one you can send to the client? What's IN it? Can you remember, two years later when you've got an urgent request when the person who made it has left the company? For that matter, which project was it from?

Yeah. That guy? Don't be that guy.

Firstly - putting FINAL in any filename is basically asking the gods of work to curse you. It will never, ever be the final version. You will look like a tit.

Think instead - major and minor versions. Major versions are ones that are 'done' in some way - perhaps they're the one that's sent to a client. Minor ones are fixes and changes. Here's how it works

version number - what happend to the file

v0.1 - first pass, draft file
v0.2 - changes to that file - a minor version
v0.3 KP - more minor changes, by Kim
v1 - Major release version - probably sent to the client
v1.1 - small changes again
v2 - a new version is sent to the client

Worried you might get many more changes? Think about doing minor minor changes, eg

v0.3.1 KP - Kim proofreads a version
v0.3.2 SS - Sophie proofreads the version kim Proofread

If you deliver a batch of files to a client for a milestone, it might be worth saving copies in to their own folder - eg 'delivery to c4 2010-12-07/(files here)' - so you have a permanent record of the versions sent. That makes it easier to create a zip file too.

If you're working on a major document, make sure the version details are captured inside the document itself, close to the top of the document: and make sure the number in the file name and the number inside the document agree. For things like Funcitonal Specifications, this becomes a special little document history table that records changes to the document.

(Yes, sometimes it's actually a good thing to write functional specs. INORITE?)

Also - turn on track changes. If you can see the changes, that's great - and it means you can compare documents in word if versions get out of sync with each other.

Note - for code or websites, you'll hopefully be keeping files in something like Subversion, Git or Mercurial. These are special systems called CVS - code versioning systems - that handle file versioning for you, so you don't need to add version details - but they involve using the command line/special software and that's a whole different email.

Dropbox will save versions of your files, but you need to have a paid account to access them. This has got me out of holes a couple of times.

In Basecamp, it's possible to reupload new versions of files under the 'files' tab. Sometimes it does this automagically if you upload a file to the same message thread, but it seems a bit unreliable and I've never figured out its internal rules.

Generally, I treat a message thread on Basecamp like a folder: if I've done a new minor version, I'll add it in a comment on the original thread. If it's a big important change, I'll add it as a new message thread (sometimes including a URL to the old one.) This means that you don't get hundreds of messages with roughly the same content when searching in basecamp, too.

Working On A Server

Generally, working directly on the server as if it were your local HDD is a bad idea. If anything happens to disrupt your connection (eg, wifi goes down, as it does about 40 times a day), you can loose masses of work.

Also - if two people have the same file open at the same time, all MANNER of bad can happen.

Generally - open a file from the server, and immediately save-as it locally to your harddrive, and increment the version number as you do this. When you've done all your changes, copy your new version back in to the right place on the server.

The principle is: The server contains nice, clean master documents, and your local drive is your 'scratch'. The process of opening and saving files is when you do your librarianship to keep everything nice for everyone.

Saving Things To The Correct Folder

I'm always working on the best folder structure for project folders on the server - like the suggested file naming process, the idea is to make folders meaningful and consistent, so if you're new to a project, or looking back on it months and months later you can find stuff by reading the names of the folders. You don't have to remember - the file system remembers what's what for you, and acts as its own index.

If you're being super awesome, the top level folders should correspond to the categories you set up in basecamp for the project, too...

More thinking to be done here. But here are some examples

Complex version - this is really detailed and contains more folders than you'll probably need. It's for a big project.

PROJECT CODE - project name
    archive
        audio
        papers
        video
    assets - incoming
        audio
        client brief
        client documents and guidelines
        code
        fonts
        games
        images
        logos
        video
    audio
    code
    design
        flash
        illustrations
        images
        logos
        motion graphics
        page design psds
    documentation - editorial
        editorial specification
        handover document
        internal brief
        post project review
        rfp response
    documentation - technical
        functional specification
        migration specification
        personae
        technical specification
        testing reports
        user journeys
        wireframes and site maps
    final delivery - for client
        final audio
        final code
        final design
        final documentation
            music cues
            p as c
            production bible
            technical documentation
                functional spec
                migration spec
                technical spec
        final video
    finance and contracts
        budgets
            additional budgets
            budget and overages summary
            final approved budget
            working budgets
        cash flow
        contracts
            contributors
            production
            suppliers - companies
            suppliers - freelancers
            talent
        cost monitors
        cost reports
        credit card
        floats
        heads of agreement
        insurance
        invoices
            supplier invoices recieved
        petty cash
        purchase orders
            outstanding purchace order log
        quotes
        scope of work
        staffing
            new starter forms
            staff contracts
    marketing and pr
        ads
        artists press shots
        copy
        press clippings
        promo images and video
        screenshots
        stats and metrics
    post production
        credits
        edit schedule
        facility quotes
        schedule of deliverables
    presentations
    programme as complete
    project management
        clearances
            archive
            music
            stills
        contact list
        contributors
            audience
            guests
        feedback
        health and safety
            production risk assessments
            suppliers health and safety
        locations
            venues
        meetings
        ob
        release forms
            contributors
            location
        schedule
            call sheets
            final approved schedule
        transport
    research
        articles
        questions
        scripts
    scripts
    video
        edits
        final copies
        rushes
        viewing copies

A Personal / Freelance business filing system

personal filing structure
    personal-documents
    personal-projects
    presentations
        yyyy-mm-dd client topic
    templates
    work-admin
        accounts
            YY-YY
        bankstatements
            YY-YY
        cashflow
        expenses
            YY-YY
        expenses-receipts
            YY-YY
        invoices
            YY-YY
        legal
            client
                contract
                proposal
                statementofwork
        taxreturn
            YY-YY
    work-projects
        _client
            project
        archive
            client
                project
        pipeline
            client
                pitch
    work-reference
        project name

I sometimes use underscores to force a folder to sort to the top in mac Finder. It's a useful way of flagging my 'live' working folders, too.

Closing Down A Project

When you've finished a thing, and it's all done and dusted, spend an hour creating yourself a little timecapsule. Copy key files in to their own little archive. Consider including things like:

  • A final project report with facts and figures
  • Screenshots and links to reviews, good mentions on social media etc
  • A record of any social media accounts you set up, software licenses you bought etc
  • a contacts list
  • A document with usage / rights notes: does stuff need to be cleared? Does it need to be taken down after 6 months? Does the client need to approve stuff?
  • Key publicity images and screenshots, at the highest resolution you have them
  • A small selection of clips that can be sent out to people /reused
  • Original, editable versions of any logos (yours, the clients)

Then, in 3 years time, when something happens, you don't have to trawl through 3 years of accumulated cruft to find the info.

Try and find a secure way to store the various passwords, though, and remember not to retain user data (that's against the Data Protection Act)

Ends, For Now

Kim Plowright @mildlydiverting

@chutzimir
Copy link

The date section can benefit from a reference to ISO 8601, to indicate there are people who do not consider it "reverse" 😄 .

ISO 8601

@mildlydiverting
Copy link
Author

The date section can benefit from a reference to ISO 8601, to indicate there are people who do not consider it "reverse" 😄 .

Oh lordy lordy, I need to include a joke about writing it on angry cats, too. Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment