Comments 2

My bedroom is warm enough that I can sleep on top of the duvet and stay at a comfortable temperature. I usually wake just before my 630am alarm. This alarm goes off every day at the same time, regardless of whether I consider it a work day. Most days, I acknowledge my alarm and stay in bed (OK, on the bed) until 7am. Then it’s breakfast time, and my day is in full-swing by 8am.

This is how it’s been for months. Note the lack of walking. I used to walk a lot, but walking fell out of favour with me during a spell of depression and repeated weak excuses didn’t expedite its return to my mornings. Walking in the afternoon and evening doesn’t work for me. Frankly, I’m not at a stage in my life when I enjoy walking. I’m neither an ambler or a rambler. Walking serves a purpose, it gets my heart beating faster and harder, makes me sweat and ultimately sets me up for a better start to my day.

And that’s the rub. I walk a snaky path around the local estate pavements and side roads, and have a couple of opportunities to look at the Atlantic. There is little to no traffic, and not much in the way of human interaction, especially if the sum total of quality sleep my walking buddy Jen and I have had barely scrapes into double figure hours.

My alarm went off this morning and I’d decided yesterday that I was going to walk. I woke with a headache, likely down to dehydration and some frustration hangover from the day before. Two pills and a glug of water was my solution to that. I was out walking by 650am.

There’s a house down the road that sells eggs. Rather, it used to; at some point in the past n months the occupants have changed and the egg box has gone. I noticed that renovation work on a house has completed and the builders have moved on. I noticed twenty or so other minor changes in my environment, most of which have no doubt made in the last few months. It was like returning home after an extended vacation.

Jen and I talked about pimp swaggers, dogs, lung capacity, work schedules and fifty other things that I don’t recall. I don’t think either of us slept exceptionally well, but we were out for nearly an hour. The humidity was pretty high and it made the last ten minutes of the walk unpleasant, but I have no doubt this path-pounding morning walk did us both more good than an extra hour in bed.


Comments None

July 2014 is a couple of weeks old and the June wrap-up of my involvement with cdnjs seems like a distant memory. I’ve been very busy doing stuff in the last two weeks, and occasionally thinking about my situation — both the present and the future.


I’ve talked before about ebbing and flowing phases of my daily life. I will often take an idea and run with it, sometimes to the detriment of other things happening. The last two weeks has been work-focussed in most respects. Being able to look at the contents of my ‘in’ and ‘to do’ work in a dispassionate way is something I’ve really improved at recently. This led to some small but crucial changes that have really helped me.

Back in June I decided that my work hours are 8am to 6pm, six days a week. I have lunch, I have some tea around 10am, but those ten hours for six days a week are an anchor with which I plan my days, and that seems to be working out pretty well. I no longer go to bed thinking about the things I could’ve achieved had I worked for an extra hour or so, I just mark it up as something to look at the following day. I actually sleep better as a a result of knowing that I’ve had a good day, sometimes even an enriching one.

The broader question, though, is what my work entails. What do I do? Right now, it’s computer-based work. I do that because I’m good at it. I like all of it, and I love parts of it. I fell into computing as a job because I knew how to do it and as a smart kid at school I wasn’t really challenged to do anything else. Likewise, I got into online marketing when I was a signed (read: compensated) podcast producer at Podshow/Mevio. The golden days of easy money from very basic marketing (2006 to 2008 era) are long since gone.

Careering along

Something I’ve come back to over the last 5 years or so is what I want to do, both with my job and my life outside work. Note that I sai job and not career. That era (care-era?) has also passed. Back in my Sophos days, again a job I sort of fell into when Paul snagged me an interview to get me out of Tesco, I saw people moving from company to company doing largely the same role with little or no development or improvement; they sort of clung on to whatever company would have them until they got bored, polished up their CV and moved on. I never did that. I progressed upwards within the company hierarchy, sure, and then got passed around various departments when I was no longer right for running technical support (dirty secret: regime change dictated that tech support was no longer about helping people, but about call answering rates, revenue generation and other indicators to keep the ever-growing middle management in a job).

The skills I brought to Sophos, honed at Sophos and left Sophos with have set me in good stead at Pragmatika, my own company. The revenue breakdown in my current role is split between a bunch of different jobs. Some days I do tech support, other days I get paid to write, then there are days when money comes in passively from websites and campaigns I’ve been involved in. Diversity is all well and good, and helps the world go round, but ultimately everything ends.

A useful drive in the car

Last night, I was out at Millook taking photos. I wasn’t really feeling the photography mojo (does this sound familiar?), and the photos I did take are lifeless and clichéd, but the drive back home was the important part. Having actively worked on work for many hours, I hadn’t had time to think about much else. I took a longer route home than normal because something felt different. A few minutes into the journey I’d figured out what it was.

I thought about Sasha Grey. Sasha is an actor, primarily in adult entertainment. I won’t post any links to background info, but I will your satisfy any curiosity outside of work time on a computer you control. I’ve read articles about Sasha’s pre-adult entertainment career research and development phase. She had (has?) an entry and exit strategy to get into the business, make a mark, earn the money, and get out. All things being equal, this is no different to most other business plans. I thought about Sasha Grey most of the way home, and as I pulled into the driveway I realised that I need a Sasha plan.

The Sasha Plan

In 1581 days from today I will have my 40th birthday. That’s the marker for me to be out of online marketing, with the caveat that if I’m really into it then I get to carry on. If not, I can at least say I tried, and move on to something else. Those fifteen hundred and eighty one days give me a big enough window to take a step back, an objective look at what I’m doing right and wrong, do my Sasha Grey r&d, and then go full-tilt into it for the remaining time.

I’ve weened myself off “I will do x thing by y date” resolutions in recent years. They tend not to work, either because I set unrealistic expectations, or the whole thing is so arbitrary/self-serving/etc that it’s a pointless exercise. Failure does that to me. Psychologically, it takes a toll on me each time, and removing a marker from my calendar for my own missed target does get wearing. I’ve learned that – actually – it’s totally OK to fail, and fail often (as long as it’s cheap). I’ve also learned that the type of people who say this usually have successful careers behind them and can afford to throw around this kind of advice.

Most of what I know professionally revolves around the use, abuse and re-using of computers. I’m under no illusion that when November 15th, 2018 rolls around I’ll be packing up my computer for pastures new, but having this thought process in the last 12 hours has been enough to get my thinking practically about what I actually want to do instead of working with my surroundings, as noble a thing as that might be.


Comments None

In November 2013, I took my first steps in learning version control software by pushing a commit to cdnjs, a content distribution network (CDN) for JavaScript (JS) and Cascading Style Sheet (CSS) libraries. In January 2014, I was invited to join the team as a maintainer, which I did. On June 29th, 2014 I left the project. Here’s why.


At the tail-end of 2013 I was building and optimising websites. I had a somewhat short-sighted view that placed more emphasis on website speed than its content and/or usability. Call it a phase, I picked up on it pretty quickly and took steps to knock the habit on the head.

I was using various CDNs to load a bunch of files for my websites, I have a vague memory that I was using 4 different providers at one point. I stumbled on cdnjs and it had all the libraries that I wanted to use in one place, but they were out-of-date.

This wasn’t a big deal as the nature of cdnjs is that it’s maintained by its users. The basic premise is that if there’s an existing library which is out of date (i.e., there’s a more recent version of it available to download), it can be added by way of a pull request. A pull request is essentially a proposed change from what’s currently in a given software repository.

Priming the ol’ noggin

Back in November, I had no clue what to do with version control software, let alone the intricacies of a pull request. For all my years of gathered and dispensed technical knowhow, I am not a software developer outside of websites. In the case of cdnjs, it uses git and lives on GitHub. I read some primers on how to use git, getting my head around the terminology and botching my way through some test code that, thankfully, never saw the light of day. It was ugly, and I was confused. I was, however, learning. Slowly.

I still wasn’t confident that I knew what to do, but I figured my usual approach of learning by doing was the best way of finding out. On November 21st, 2013 I raised a pull request to add ZURB Foundation 5.0.0 to cdnjs. About 24 hours later, it was merged. That was my first contribution to an open source project outside of sundry presentational changes I’ve put forward to Textpattern CMS over the years.

And so, it begins

November 21st was a big day. I made a change, and now people could start using the software that I uploaded to cdnjs. I had no part in writing the software, nor did I have any knowledge of that software library itself, either. A few days previously, I had decided that I was changing my go-to CSS and JS framework for websites from Bootstrap to Foundation, mostly because of reasons. It wasn’t that I didn’t like Bootstrap, it was just that Foundation was ticking more boxes for me.

November 21st was a big day for ZURB, too, because they released Foundation 5. They made it, I added it to cdnjs, and then I started using it from cdnjs on my own websites. In turn, many thousands of people also started using it from cdnjs. This felt good. Really good, actually.

Altruism, schmaltruism

Having access to an open source-filled CDN at no cost to me triggered something chemical in my brain, and I wanted to give something back. Over the next month or two, I would find more out-of-date or missing libraries to process and raise a pull request for each one. Initially, I was hunting for stuff that I specifically used on my websites, but this soon developed into adding new releases of widely-used libraries that I had no personal interest in. I didn’t (and still don’t) know how to write JavaScript, but this was me actively doing something that helped people who write code, along with the users of their code. Thousands of people. No salary, no reward, no obligation or expectation. Weird, huh?

In late January, I received an email from cdnjs co-founder Thomas Davis. In his words, he was debating giving me direct access to the cdnjs repository to update libraries. I figured that I’d either proven myself as competent or had become enough of a nuisance that it was easier for everyone concerned to give me a copy of the keys to the kingdom.

My reply was cautious; remember, I was still very new to this and really wasn’t ready for responsibility. What if I broke something? What if thousands of sites went down because I set off a chain reaction that I couldn’t fix? How long would it take Brisbane, Australia-based Thomas to fix an error that Cornwall, UK-based Pete has caused out of a hole in his knowledge?

Welcome aboard, Cooper

My tentative acceptance email reply explained my tricky work situation (no guaranteed time to commit, might disappear at short notice and be off-grid, etc). I resolved to only add libraries myself and not process any pull requests from other people. That way, it was low risk and I wasn’t letting anyone down by over-committing. Good. I joined cdnjs as a maintainer/collaborator on or around January 27th, 2014.

My me-only resolution lasted precisely two days. On January 29th, 2014 I merged and closed for the first time. I was working through some very heavy winter depression and for the first time in months I found a spark. I could marry my data management skills with something that gave hundreds of thousands of people a mysterious, intangible benefit: increased website speed and decreased load times.

The ball starts rolling

The novelty didn’t wear off as I was expecting it to. My slightly obsessive nature was a good fit for my new role of cdnjs librarian, and the pull requests poured in. I merged many, many requests. I added libraries on request, I found new and interesting things that expanded my knowledge of what JavaScript could do. I still couldn’t read or write it, but I was skirting around the periphery and absorbing a lot of information. I have a much wider understanding of JavaScript now.

I don’t have concrete statistics for how much disk space cdnjs took when I joined — I have a very hazy memory of it being 1.somethingGB, remember I was learning as I went — but I can tell you that it currently runs to over 3.3GB of files. A large chunk of that is due to me, rightly or wrongly. I don’t believe anything I’ve added is a flippant use of space, or a waste of time. Related to this, I don’t have any metrics for what was and wasn’t used. The sheer volume of log file data across the cdnjs servers is prohibitively large to analyse, so any usage charts would be conjecture on my part.

Points, points and more points

According to the cdnjs contributor graphs, I’m responsible for over 25 million line additions, more than three quarters of a million line deletions and 400 commits. In 5 months. Yikes. I look at these graphs and see a bunch of imaginary Internet points. I can’t cash them in or trade them for a tasty burrito, so what purpose do they serve? They’re a reminder that I agreed to be involved with something that I believe in, gave it my best shot and learned a lot from the whole process. I had to-and-fro conversations with Internet-famous luminaries, earned my first BitCoin fragments from adding auto-update information to a handful of libraries and helped push bytes through pipes on a grand scale. I regret nothing.

The beginning of the end

I have used jPlayer extensively in my website building career. I know how to script it, how to cajole it, how to build it into Textpattern, the works. I was also involved in uploading the most recent versions of jPlayer to cdnjs, by way of numerous pull requests. If your jPlayer was version 2.5.something and served from cdnjs, I was responsible for getting it there.

On April 21st, 2014 a jPlayer cross-site scripting vulnerability was announced. The jPlayer accompanying ShockWave Flash (SWF) file was the culprit. jPlayer was yanked from cdnjs. It wasn’t handled very well, and annoyed a lot of people in the crossfire. I am pretty sure this was the first time that any library was pulled from the repository due to a security alert, and thankfully it hasn’t happened since.

Let’s talk about igotstung

I tell you this because one of the people who was affected by this library being pulled was GitHub user igotstung. He or she has assigned blame for the cross-site scripting vulnerability to me. Not the actual removal of the files, mind — that was Terin from Cloudflare, they provide the CDN server infrastructure for cdnjs — but the coding in of the vulnerability.

When I raise a pull request or commit directly, I take existing files from a verifiable source and provide some kind of audit trail as to my actions. cdnjs is a peer-reviewed setup, so if someone does something a bit whacky, it’s right and proper to bring this up for discussion and possible action.

I didn’t write the software that had this vulnerability. I don’t know how to, frankly. My involvement was uploading the affected file to cdnjs before anyone knew it was susceptible to Bad Stuff. igotstung plunked the blame squarely on me, and called for my firing, along with some other comments in that thread that were subsequently deleted by Thomas for swearing and threats against me. I was chomping my breakfast cereal when all this kicked off, watching abuse being hurled my way and was frankly a bit bemused by the whole thing.

By late morning, I’d received an email from igotstung threatening legal action against me. I ignored it. Two more emails arrived in the afternoon, escalating to death threats. I ignored them, too. I processed a handful of cdnjs pull requests over the day, and made a few more direct commits as usual. I went to bed as normal.

When I woke the next morning, igotstung had emailed me again. A lot. Each commit I made triggered a bunch of emails to me, mostly comprising violent threats, swearing, occasional broken Spanish and each time the emails came from a different email address, usually a stream of gibberish at a Gmail address. I was even more bemused than the day before.

Back in April, each commit/change I made created about 4 emails. In May, it increased to a dozen for each change. In June, it tailed off and it’s back down to about 5 or so per change. Curiously, when I have a day off cdnjs, I don’t get any email. Odd.

Enough is enough

It’s tricky to filter out email when they can’t be pinned down to a certain identifier. I know all the email accounts were made with Gmail, and on the few occasions they weren’t sent via the Gmail browser interface, igotstung used Tor IP addresses to hide their tracks.

My well-known high tolerance streak ran out in early June 2014 when I informed Thomas and Ryan of my intention to leave the project at the end of the month, something which I announced publicly shortly afterwards. The emails stopped for a few days; perhaps I’d triggered some guilt or bad feelings with igotstung, maybe this was the end of it. Had I broken igotstung?


The emails kicked off again with a wish that I’d “been born ahundred years ago so you would’ve died in the gaschambers in ashwitz” (sic). Abnormal service had resumed, but whenever I took a day out from cdnjs, nothing was received.

…and that’s your lot

I’ve left cdnjs for new pastures. I had an amazing time, learned a lot, met some stellar people and have no regrets. I’m still not a developer, but my first serious involvement as a contributor to an open source project has resulted in so many good memories that I’m inclined to learn how to write code.


Comments 1

Millstones. I have them; some are personal, most professional. Today I have one less than yesterday, but there are still leftovers. I’ll tell you about the one I ticked off.

Back in 2013, or perhaps 2012, my mum told me she was researching the first world war, specifically how her town of Selby in North Yorkshire was affected by it, and how it was told through the media, primarily the Selby Times newspaper.

What began as poking around and research soon turned into a visions of a printed book. I was asked about the technicalities of publishing a book. I offered my help and knowledge-sharing, both with the technical side of digital pre-press and also production of an ebook. I don’t recall the exact date I got involved, but it was a considerable time ago. I know I was living in Cornwall, but beyond that my mind is fuzzy. It’s been a year, I’d say. Give or take.

I received Word documents and spreadsheets in email, all of which had been pared down and proofed. I started to process the info and create a style guide, choose the typeface, and so on. I’ve lost count of the number of badly-produced books that I’ve seen, and I didn’t want this to be another to add to that pile.

I had a job to do, and no defined deadline. This was a failure on my part. My mum is the best in the world, and she’s patient. She understands me (mostly). It didn’t matter that I was doing this without payment; she’d decided that proceeds were going to be donated to the British Legion, so I couldn’t in good conscious take a cut. I worked on it, and worked on other things, and did the whole dip-in, hop-out thing for a while.

Then winter arrived. Mental health issues got the better of me for what seems an eternity, and work stopped. Some time later, I got back on the horse, and carried on. I had a hard drive crash the morning of mum’s visit back in spring. Backups saved the day, but it was embarrassing; not only was I taking far too long on this project, but it was like going to a presentation and having nothing to show.

I would wake in the morning and have dark thoughts about the day. All these things that were supposed to have been done, but hadn’t been. Add in a fresh, daily helping of depression, anxiety and frustration to the mix, getting out of bed most mornings was something of a challenge.

Then I got sick. I picked up Bell’s palsy from somewhere and my face stopped working. I was prescribed steroids which started an achingly slow recovery, along with most of the side-effects listed on the paperwork. That was another month gone.

I’ve been involved in the production of numerous books before now, but this one took far longer than I had anticipated. I stopped counting at 250 hours. The duration of the project compounded the progress to an extent that I was having to redo work over and over, because it wasn’t right. That is, my work wasn’t right, my presentation wasn’t right; the content itself was fine. I estimate there have been 15 or 20 iterations of this book. The woolliness of the figures is due to my brain wanting to push them out and forget, I suspect.

Yesterday, I finalised everything and had the print-on-demand version uploaded to Lulu for sale. The ebook version has gone up today. I have a Kindle version to make later, and that’s it. I’ll be done.

Bluntly, I got this one very wrong. It’s entirely my fault. There’s no lengthy post-mortem to chew through: I screwed up, that’s it. This will happen again, I’m sure of it; I say this as a pragmatist and not a defeated, dramatic soul. I have, however, used this opportunity to assess some other millstones in my life. My discipline and motivation were both sapped by the tough winter, and it’s taken this long to figure out what’s going on.

I’m fighting urges to use solitude as a solution. Alone time is both a comfort and a complicator, especially with the unpredictability of my brain. After a particularly long work session, I drove out to new surroundings last week and took a notebook with me. Like, a paper one. And a pen. I don’t do that. Ever. Some years ago, I went through a phase of having notebooks just in case, but I was so married to my screen that they were unused. I didn’t get around to writing anything down, mostly I was out for the sake of a scene change and some mental decompression.

Millstones are really unpleasant. With the length of time I took over resolving this one, it became normal to have it hanging over me. It was always there, and it affected me far more than it should’ve. Frankly, if I’d‘ve treated it like any other work project I’d‘ve and it done and dusted within a fortnight and it’d still be 2013. Alas, it wasn’t meant to be.

Tomorrow I will wake up and will not think about overdue books. I might even have the stones to work on another millstone.


Comments None

The last few days have been challenging, rewarding and thought-provoking.

I’ll start with Saturday. I took a call from a local client, he’s from a well-known family in the village and his computer had died. I visited his house on Saturday morning, complete with my tech support toolbox and set to work diagnosing what was wrong: a dead laptop hard drive.

This is a pretty common thing for me to deal with and ordinarily a replacement would be overnighted from Amazon, and I would fit it on arrival. There is a conversation about backups – more accurately lack of a backup in most cases, sadly. In this case, I’d supplied and fitted a Time Capsule backup system a few weeks previously, having diagnosed a poorly hard drive.

The solution was a new hard drive, restore from Time Machine, perhaps re-apply the latest OS X combo update for good measure and we’re back on the air. My proposal to order a drive on Saturday for delivery and fitting Monday was eschewed in favour of my finding a local supplier of a new hard drive and fitting it the same day.

I’m totally fine with this, and it was a good opportunity to see how the local stores deal with this kind of situation. I called Blue IT in Bude. Answer phone. I called Bude Computers and spoke to a human. A replacement drive was put aside for me to collect, about 50% more expensive than Amazon would’ve been.

On the way to Bude Computers, I pulled into the trading estate where Blue IT are based. They were closed. The opening hours indicated they should have been open, but they weren’t. Having peeped through the letterbox at Blue IT, I’m not sure I’d‘ve been happy buying items from them, anyway; it looked like the dark corner of a corporate IT room that time forgot.

Anyway, onto Bude Computers. I bought the drive, had a fudged receipt (it was for an external drive by another manufacturer), and I put it down to the store owner making a quick buck on a quiet Saturday. Hard drives are usually sold as retail or OEM, the retail type usually being the more expensive option of the two. I’ve been charged an external drive retail price for an internal OEM drive. Were it not for the urgent/emergency nature of the situation, things would’ve been different.

As I drove back from Bude to Crackington, my mind was racing on thoughts of business. Could I do a better than Blue IT and Bude Computers? Possibly. I have a solid reputation locally, with plenty of repeat customers. It’s not a self-sustaining business just yet, but it’s getting there. Some marketing and the right approach on my website will help out no end.

Yesterday, Sunday, was morning technical support and afternoon photography. I haven’t used my camera in a long while, mostly because the last time I bent the pins on the card slot and that was an expensive (out of warranty) fix. About a week or so ago, I was invited to take photos of the Cracky Coohas; a local, all-girl group who were having a surf session. How could I possibly turn down the opportunity to take photos of girls in wetsuits and swimwear? Yeah, that.

In 75 minutes I took 926 photos on the beach. I took 4× 8GB CompactFlash cards with me and used them all. I didn’t bend the pins on my slot, which is some achievement considering I was swapping cards over pretty rapidly standing in the Atlantic with water lapping around my knees and £3k+/4kg+ of camera & lens in my salty hands.

Looking at the photos, I made some mistakes from lack of practise (ISO too low, rough composition on a few otherwise good shots), but the dry spell is over. I am hoping for a 2% success rate with the shots I took, and a few gems are already starting to show through the lightbox. It’s got me thinking about the sea, about photography and where they play a role in my life.

Today is Monday, and I spent an hour watching Jen have her first acupuncture treatment with Penny Matheson in Dizzard. Lots has come of this session, none of it relating to Jen being pricked with needles.

I’ve taken a liking to Dizzard since I moved to Crackington. It’s peaceful, even compared to Cracky. There are many good people there, and when the fibre broadband finally gets installed (Q4 this year is the current forecast) it’s going to be top of the list for me to live, either via self build, renovation or buying as-is.