Rick Hurst Web Developer in Bristol, UK

Menu

Blog

Keeping my developer mojo

cloudstermatic.jpg

I think it’s fair to say I lost my developer mojo for a while earlier this year. I don’t think it was any one particular thing, maybe a combination of feeling slightly burned out, working on a few projects where I felt restricted and frustrated by the technology, which lead me to feeling dread instead of excitement at the prospect of a new project. I started to question whether I should be a developer and whether I should start to look into a career change.

Well luckily my mojo came back a month or so later – around the time that some changes in the scope for a project led me to using my own “micro” php framework instead of a large cumbersome one, to speed up progress. The initial feeling was one of failure that I had been beaten by the mysteries and learning curve that I had been trying to overcome, but this was soon overridden by the feeling of excitement about being able to create something.

It’s fairly simple – to get development satisfaction I have to feel creative in what i’m doing, and feel like i’m learning something. Churning out website after website using a monolithic framework or CMS does not give me that satisfaction. I can’t always choose my projects, so when I find myself working on stuff that doesn’t excite me, I have to make time to work on other stuff that does, no matter how busy I am.

It’s a principle google use with their “20% time” – where employees can work on their pet projects. It’s not just to indulge people – the creative energy generated by letting geeks do their stuff spills over into the day to day work. I don’t have an employer to allow me this privilege, so I have to make time to do it myself. I’m hoping some good stuff comes out of this – but as a by-product rather than the goal.

Social media withdrawl tools part 1

I have occasional periods where for one reason or another I want to distance myself from social media for a bit. One of the things that usually stops me is the idea of missing communication aimed specifically at me. Facebook has the option to control what types of communication (e.g. a message) result in an email, and twitter has the option to send you an email when someone direct messages you, but (as far as I know) there is no direct way to be informed when you are “mentioned” on twitter.

Here is one technique to get round this – presuming you use an RSS reader of some sort (I use google reader), you can go to search.twitter.com, search for your username and then subscribe to the RSS feed for the results.

Now simply uninstall your twitter client and step away from the firehose, and if someone mentions you, you’ll know next time you read your RSS feeds. Less immediate, but that’s part of the point!

My Idea of March – a decentralised microblogging/ chat system

Chris Shiflett has suggested a blog revival, and i’m having one of those days, trapped between sorting out domestic chores and procrastination, and not being entirely productive, so what better time to blog than right now!

One of the current topics being discussed is how twitter have asked developers to stop creating new twitter clients (for the non-technical a “twitter client” is a program or “app” such as tweetdeck that lets you use twitter on your computer or phone without visiting the twitter website). Apart from being an annoyance to people who want to create new clients, many developers including myself are starting to read between the lines, that this is a sign of the corporate machinery clanking into action to control how twitter is used, so they can more efficiently monetise it.

I think this is kind of inevitable – i’ve never seen a service adopted by the masses so quickly, and most long term users will remember when twitter struggled to scale as it suddenly became a network of multi-millions rather than a few hundred or a few thousand.Any social network system like this needs a critical mass of users to make it useful – but looking at my own needs, that critical mass consists of a couple of hundred of people who are mostly friends and colleagues in the web/ digital media industries. I don’t use the “trending” stuff and i’m not interested in following celebrities, so a critical mass for me would be for all or most of those people to adopt another system. Yesterday there were mumblings about identi.ca, and sure enough you’ll see that i’ve reserved my username (after some signup confusion and accidentally signing up to a mailing list instead).

Identi.ca is an open source solution and I look forward to seeing what develops with it, but I can’t help feeling that the real solution (especially for the technically inclined) is a decentralised system, just like blogs have always been – you host your blog either on your own site, or using a service such as blogger, and people consume them directly or via RSS readers. This is another example of geek-led innovation – the geeks were doing it first, the mainstream followed later.

I’ve had a quick look around for a decentralised micro-blog system, and it seems there are a few already out there, but before I look closer to see if any of them would fit my needs, here’s how I envisage it working:-

  • You self-host a micro-blog on your site, it’s just like a blog, but each post has a 140 character limit
  • The micro-blog has an RSS feed, a variant that can optionally include extra info such as “in reply to” and “location”
  • You use a self-hosted micro-blog aggregator to follow other people’s micro-blogs (this could of course include a twitter stream, using RSS not their restrictive API)
  • The aggregator could be on your site, or even running locally on your machine, and of course you could build ANY DAMN CLIENT YOU LIKE to view, interact with, and post to your micro-blog
  • You could hook into most of the existing services for things like link shortening, image hosting etc.
  • Private messaging would need some thought, but it’s essentially like having a contact form on your website (and the same spam considerations).
  • Popularity contest “follower” stats would be optional – it would actually be pretty difficult to work out how many people are following you, other than analysing RSS stats, which can be misleading.
  • Global search would be tricky without a central database, but I rarely use that.
  • No central point of failure means the platform would be very resilient, and there would be no massive server-farm or staff to fund.
  • No owner means the users run it, people may develop services around it to make money, but there would be no central owner
  • The core tech should be really, really simple – the basic service should need no integration with services or API’s, or software installation requirements which may scare people off.

So, once the geeks have invented the platform, there would be a similar barrier of entry to participating as there is to starting a blog – you would either need to install it, roll your own, or sign up with one of the hosted services I can imagine popping up a few months later. Therefore mainstream adoption would be much, much slower and because of the way I want to use a service like this, that isn’t a bad thing.

Looking at my twitter profile, I currently follow 372 people, a number that i’d like to get down, but social etiquette dictates that I only unfollow people if they get ridiculously noisy or off-topic. I bet if I analysed how many people I regularly interact with or find unmissably interesting I would get that number down to less than 100. If I ever get round to building it, I wonder if I could persuade 100 geeks to try it? Of course as mentioned earlier, I could build an aggregator to follow peoples twitter streams via RSS, so I don’t necessarily have to have other people adopt the platform immediately, so maybe that’s where I will start – I wonder if scraping RSS feeds counts as use of the twitter API?

archived comments

Some great ideas here Rick. After another fail whale this evening decentralized seems like a good idea.

Joe Leech 2011-03-16 22:08:33

The de-centralized nature of XMPP would work really well as a solid back end for a new service such as this. It already supports (via the pubsub mech) the idea of posts as well as private messages and has the advantage of support for private as well as public multi user chats. All running on privately or publicly owned servers communicating with each other using an open source protocol. Sounds ideal!

There’s also the additional advantage that XMPP is real time so no polling.

You just need to design the experience to feel less like “IM” and more like twitter which would be achievable.

Stefan 2011-05-25 11:17:10

A few gotchas when your Drupal site is being deployed behind caching servers and proxy_pass

I recently launched a Drupal based site that forms part of the website for a global company (being a freelancer working through a design agency with an NDA, I can’t talk about it any more than that, or stick it on my portfolio unfortunately!). I though i’d make a few notes about some of the issues I had to overcome.

The site itself is hosted on a dedicated VPS, but served to the world through akamai caching servers, which means that everything is cached by default. Therefore in this set-up, the CMS is only available at a different URL, where caching is bypassed. Gotcha no.1 is that cookies set and read via PHP do not work in this scenario*. Fortunately Javascript cookies can still be used.

In addition to the caching, the site is served up as part of a much bigger site /deep/down/in/the/url/structure, so proxy_pass is used (before caching) to rewrite the paths. Gotcha no.2 is that base_path() in drupal picks up the path of the origin server, so I had to add a condition like this in my settings.php (excuse wrapping, really must sort this site out for code samples):-


if($_SERVER['HTTP_X_FORWARDED_HOST'] !=''){
$base_url = 'http://'.$_SERVER['HTTP_X_FORWARDED_HOST'].'/path/to/my/proxied/site';
}


The clue to gotcha number 3 is in that last example. $_SERVER[‘HTTP_HOST’] reports the host of the origin server, rather than the public host, so if it is used anywhere in your code, it may cause issues. I ended up adding a function getHost() that I use to return the appropriate host, depending on where the site is being viewed (once again excuse formatting):-


function getHost(){
$host = $_SERVER['HTTP_HOST'];
if(isset($_SERVER['HTTP_X_FORWARDED_HOST'])){
$host = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
return $host;
}


Gotcha No.4 was image paths in optimised css – both the Drupal-provided CSS caching and some external stuff I had using minify – these both rewrote the image paths to use those from the origin server. This meant that CSS applied images worked in the non-cached editing environment but not on live. I haven’t come up with a solution for that one yet, other then to leave some of the stylesheets non-minified.

* maybe there is a solution to this, but assume in this case there is little or no scope to request server config changes.

Freelance vs Permanent a few years on

I love having this blog to remind me where I was at and what I was thinking a few years back. Just under four years ago I announced I was going freelance, and I checked in again about a month later, and then a year later, but haven’t spoken much about it on this blog since. It’s been an interesting ride to say the least so I thought it might be time to write down a few words about the highs and lows.

To put you firmly in the picture of the freelance web developer mindset i’m writing this while I should be working – this causes me anxiety for two reasons: firstly, a task I am supposed to be working on, already overdue, will become more overdue. Secondly, any time spent on this blog post is time spent not earning money. Another way of looking at it is that while i’m blogging i’m working on marketing, so maybe that negates the second point somewhat, but not the first.

Highs

  • The satisfaction of working for yourself – I’ve got the skills to pay the bills! Whatever doubts and problems i’ve had along the way, i’m making a living using skills i’ve built up over the years, and I can’t dispute the sense of satisfaction you get from that.
  • Flexibility and Freedom – I enjoy not having to ask permission if I need to leave early or start late, especially as I have a child.
  • The Money – Freelance work has the potential to pay well.
  • Work / Life Balance – when I can make it work

Lows

  • The loneliness of working by yourself – Not so much in a social sense, but more the responsibility of playing every role in a one-man band – being the account handler, the book keeper, new business development manager, customer services, and not to mention occasionally writing some code.
  • Flexibility and Freedom – sure I don’t have to ask permission if I want to start early, leave late or take some time off, but websites don’t build themselves and when work stacks up, (which it does constantly) I end up working very long hours.
  • The Money – Not always as lucrative as you’d imagine – I’ll expand on this.
  • Work / Life balance – when it goes wrong

The things I miss about permanent

Some of these points will vary depending on the employer, but one of the things I miss is the investment and support that an employer can bring – paying for me to attend conferences and time to learn new skills, the camaraderie with co-workers and the skills you pick up from co-workers. Then there’s the regular pay-cheque, which brings me to..

Money

The other big consideration with freelance is the regularity of pay – you might be set to receive a big payment, but what if it doesn’t turn up for six months? Another consideration is how much you expect to earn. People are always shy to talk about what they earn, and that includes me. Whenever a client asks me to quote day rates I can picture the cogs turning in their minds as they come up with an ad-hoc calculation of what they think I am earning. The truth is that it doesn’t always work out like you would imagine.

Much of the time I put in way more time than was originally quoted for, and natural gaps between productive work, meetings, holiday, illness, pitching for projects, unpaid maintenance, support, bookkeeping, procrastination etc. all conspire to even out what could be lucrative earnings into very average earnings. I never really know what i’m earning until after the year has passed and I do the calculations for tax returns. The carrot on the stick for a freelancer is always those potential earnings though – whereas with a permanent job your salary is capped (but guaranteed), there is always potential to earn more with freelance. However, my goal with freelance was always to earn a modest salary but take more time off. I’m still working on the second bit.

So would I ever consider a permanent role?

I’ve thought about this and have come to the conclusion that i’m probably unemployable. That last sentence isn’t going to sound too good on a CV is it! The reason I say this is that what I strive for in my freelance life I would also be looking for in a permanent role, and when I summarise what i’m looking for it sounds like a list of demands from a petulant celebrity:-

  • Flexibility/ Freedom with work hours/ days/ location
  • Good Salary – at least on par with a reasonable freelance year, when holiday etc. accounted for.
  • Some profit related incentive to keep working when the going gets tough (shares/ profit share/ bonus)
  • Training/ Conference budget

I think one thing that would clinch it though is the opportunity to work somewhere exciting, maybe abroad in the future – (mountain view sounds fun!), or working as part of a specialist team that would allow me to take things to the next level professionally.

The other thing that would possibly convince me to go permanent would be the opportunity to get my foot in the door of a company or organisation that would lead me back to my first choice of career in environmental science/ renewable energy – that’s another blog post though!

archived comments

Subscription business model! – it’s the way forward (and you get time off!).

http://www.ldexterldesign.co.uk/2010/07/part-1-how-to-freelance-successfully/

Best,

ldexterldesign 2011-03-04 04:34:22

What I did and didn’t do in 2010 and Plans for 2011

It would be rubbish to stop a tradition after only two years, so following on from my posts in 2009 and 2010, here is a retrospective for 2010 and my plans for 2011. I’m changing the format this time, by dividing into “achieved”, “carried over”, “ditched” and “new”.

Achieved

  • Attend at least one web conference – I had an extremely busy year, so didn’t get to any of the generic web conferences, but couldn’t turn down the international Plone conference, as it was happening in my own city. Although it was specific to a particular open source web content management system, the talks contained enough generic web technology goodness to keep me geeked up to overflowing.
  • Get further than “hello world” with Django – Having collaborated on a django project, i’ve got further than this now, and i’m also using it for some tools used for managing data and assets for Kudos/ Lightplanet
  • Use and understand some technologies that i’ve been ignoring – I’m going to claim that as achieved, on the basis of the points above – i’ve learned plenty about Django, and python in general. This bullet point will always be carried over though, as there is always something new to learn.
  • More on-site freelancing for agencies – It’s always tricky finding a balance with this – I did a fair amount of on-site work, but it often got tricky trying to balance my ongoing client work, with the requirement to be on-site somewhere. I’m still open to this, but the other project work needs to take priority, and as such i’ve started renting a desk in a shared office again.
  • Keep Trading and survive the recession – No shortage of work again, so thanks to everyone who gave me work, but i’ll keep my fingers crossed and carry this one over again..

Carried Over

  • Launch a web app – so close on this one, but the manic run up to xmas and self-enforced work-free xmas holidays stopped me releasing my pet project, working title: Eat Static CMS. The name, some may have guessed is a tribute to a 90’s techno outfit, but also refers to the fact that the app uses text files rather than a database. It’s a basic blogging engine with niche appeal, I will make it available as a beta ASAP this year, as soon as i’ve tidied it up.
  • Relaunch Too Old To Skate – The site is still in limbo, and still reflects how little i’ve skated again, which once again I intend to change
  • Attend at least one BarCamp – the Bathcamp BarCamp clashed with Plone conference this year, so I didn’t go, but want to get to more grass-roots events this year.
  • Better Customer Service (By saying “No” sometimes) – I wanted to put this on the achieved list, but looking back I took on too much again towards the end of the year, and customer service suffered as a result, so once again i’ll try to find the balance in 2011

Ditched

  • Get to grips with Plone 3 skinning – Plone has moved on and so have I, but this doesn’t mean i’ve given up on Plone, but I don’t plan to do any Plone 3 work. Plone 4 skinning/ theming is still on my list, but that’s a whole new technology, and a technology that can be used independently of Plone.
  • Put up a proper portfolio – I just can’t imagine having the time to do this – I think potential clients can find out whether I have the skills and experience they need by looking at this blog and my linked in profile. As i’m more of a programmer than a designer, a visual portfolio is less important to me. Maybe if I run out of work i’ll rethink this one?
  • Fix on a PHP framework – until someone (me?) builds a PHP framework that is basically identical to Django, with it’s production-ready admin forms and API as standard, i’ll just use whatever seems right at the time, or no framework at all.

New

  • Buy a new Bass Guitar and play the hell out of it – I horrified some of my older friends by selling my one remaining bass last year. I sold it as I had completely stopped playing, and having it hanging on the wall just seemed a waste. Most people i’ve befriended in the last 10 years don’t know I ever played. Playing bass in bands used to be an important part of my life – I’ve actually been playing bass for over 20 years and was once pretty good (if I say so myself!). I sense a mid-life crisis coming on in the next couple of years, so I need to get back in practice for when I inevitably decide to form another band!
  • More “work from anywhere” adventures – I spent 6 weeks touring in Europe with my wife and kid this summer, working from my laptop to earn money as I went. It was brilliant, so hopefully more of these adventures, the same or different in 2011
  • More blogging! – including some personal blogging. I think i’ll need to divide this site into “babble” and “techobabble” – not everyone who reads this site looking for a CSS hack will want to read my self-indulgent drivel and not everyone who reads the site wanting to know how I really feel about the experimental bass playing style of jaco pastorious wants to read about the new python module i’ve started using, so i’ll provide the opportunity to follow from both a techie and non-techie viewpoint, although it will all still be one blog. Looking back through the archives of this blog, i’ve been doing this over the years anyway, going through phases of techie and non-techie content.
archived comments

What about skating the s**t out of Kennington and drinking beers in London with your mate a bit more…?Henry Sanchez 2011-02-01 17:50:52

So what is it that I do, exactly?

different stuff that Rick Hurst does - freelance web developer, olivewood, kudos, lightplanet, foundry

If you ask any of my family or friends what it is that I do for a living, you will most likely get, at worst, a blank look, or, at best, maybe “web designer?”, “computer programmer?”, or maybe just “something to do with computers?”. It doesn’t help that my linked in profile has me claiming to be doing at least three different jobs at a time, and that I seemed to be involved with a number of different companies. I think possibly even those that work with me aren’t entirely sure what it is that I do most of the time! I thought i’d clarify what i’m up to at the moment, and how things have evolved over the last few years.

I am a freelance web developer

Primarily I make my living as a freelance web developer. This means that I spend most of my time building websites. By “building” a website I mean taking it from an idea to a finished website – planning, designing, templating, coding and uploading to a web server so that it is live on the internet. As well as web “sites”, I build web “applications”. These are computer programs that people interact with through a web browser. A web browser is the computer program that you use to look at websites e.g. internet explorer (the blue E), firefox (the fox wrapped around the world) or maybe safari (the compass). As well as looking at websites on the internet, you may be using a web browser to use web applications in your workplace.

But am I a designer?

I occasionally design websites, but it isn’t my specialism. If budget allows I prefer to hire a really good designer to come up with the design concepts. I know lots of good designers. I take their design concepts and run with it to put all the technical stuff in place to take it from an idea to an actual website. When I work for a design agency, I am hired always for my technical skills, never for my design skills – let’s face facts, I think there’s a reason for that! Most of the work on my “portfolio” wasn’t designed by me – I usually just did the technical bits.

Do I do any computer programming that isn’t related to web sites or web applications?

Increasingly more. I seem to be doing more and more data crunching these days, involving writing scripts that move files around on servers and extracting data from different places and putting things in databases. I would call that programming. Most of this type of programming is actually using skills I learned while building web sites and web applications, but some of the things i’ve built aren’t web sites or web applications at all.

So am I actually freelance, or do I work for a company?

By freelance, I mean that I work for myself, but companies and organisations employ me on a freelance basis. Therefore sometimes I may appear to be working for several companies at once. Sometimes I work directly for my own clients, other times transparently as an additional resource for a design or digital media agency. Either way, I invoice for the work I do on either a fixed price or a “time and materials” basis, and this is how I make a living.

What is Olivewood then?

In 2007 I co-formed a company called Olivewood Data Technologies Ltd, and all my freelance work is invoiced through Olivewood. Olivewood is co-owned by a client and friend, and we set it up primarily as a vehicle for consulting and development services, but also as a legal entity to own the IP for a number of niche eCommerce web applications that we plan to sell to other companies. At one point we thought Olivewood might be a digital media agency, but now we are pretty sure it is a software consultancy. [Update 2014 – Olivewood is now a supplier of high power LED lighting specialising in lighting for cold storage warehouses – how things change!]

And what about Foundry?

In May 2010 I sat on the watershed balcony with fellow freelancers Dan Fairs and Dan Hilton and talked about teaming up to be able to take on and pitch for projects bigger than we could handle as individual freelancers. We came up with the name Foundry, and shortly after collaborated on a successful project together. We all still work as freelancers, but hope to spend more time working together under the Foundry banner in 2011 and beyond. The challenge is moving the focus from looking after our own interests and incomes to working together, and to do that we need a big project that would keep us all too busy to take on other freelance work.

Will I fix your computer?

No I flippin’ wont! Have you tried switching it off and on again?

Redesigned Site for Kudos Business Technologies

Kudos Business Technologies | LED Lighting and Sustainable Technology for Business

A couple of years ago I created a website for Kudos Business technologies. The site has been fairly dormant for a few years, but as I am now “involved” with Kudos (more on that at a later date), recently I decided to redesign it and rebuild with wordpress 3, as the bespoke CMS I put in place before using using cake PHP wasn’t nearly as user friendly as the tried and tested wordpress. I’m really pleased with the result, both from a technical and aesthetic point of view.

I’m looking forward to expanding this site – the products database on the Kudos site is now quite out of date, and there is a much larger range of (mostly LED lighting) products over at the Kudos retail site. The Lightplanet store is hosted on a 3rd Party system which doesn’t have a decent product export api, so I’ve actually written a screen scraper to extract data from the lightplanet site to use in our own database. This will allow us to collate more technical data for the products, which can be used on the kudos site. Phase II is to create a comprehensive Products information site from this data, including an API to allow us to integrate with 3rd parties.

[update 2014 – links removed as these sites no longer exist]