Earlier this month I wrote an article for Everyday Designer talking about my experiences about my experience of working as both freelance and permanent web developer.
Ok after a productive start to the blog this year, i’ve failed to post since the start of the summer. I’m going to blame it mostly on my camper van, both literally spending time working on it and camping in it with my family, and also generally all my blogging effort has gone into my “camper van things” blog. I’ve had a fantastic summer, worked less than I probably should have, but now getting back to work (and saving up for some more summer adventures next year!).
So to catch up – i’m now freelancing more or less full-time back at Potato, working on some interesting stuff, notably cutting my teeth with AngularJs framework, which i’ve enjoyed so far. My initial observations are that it is significantly different to Backbone/Marionette that there is no confusion over what technology i’m using, it allows you to be productive very quickly and that it litters your markup with non-standard attributes. The latter may upset purists, but otherwise it gets the thumbs up from me. If you’re interested in learning AngularJs, a good place to start would be the tutorial.
Where exactly did June 2013 go?
Not for the first time i’ve found myself stepping back from Twitter most of this month, and when I got drawn in, I got very frustrated with scatter-gun discussions – found myself trying to explain stuff I just can’t get over in a few characters, resulting in multiple replies especially when there are several people in the discussion, so even less room for content. As someone once said – having a discussion on twitter is like trying to have a conversation through a car window as you repeatedly fly past them.
One such discussion was about recommended Content Management Systems (CMS) – I was trying to explain what my holy grail would be – a dynamic CMS (as opposed to a static site generator such as Jekll), which allows editing of content as text or markdown files or via the web, where content can be synced and versioned using GIT, but also has a “throwaway” database for search e.g. it indexes content in the background but no need to keep restoring it when content is added to live but not dev/ vice versa. I struggled to get that out in a reasonable paragraph and i’m not really started yet!
Another area to deal with is comments – comments should really be counted as valuable content on a blog, so this content should also be stored as static files under version control (to allow it to be synced with other copies of the site, rather than the comments themselves needing versioning). The problem is that 90% of any comment system is anti-spam measures and moderation. Having spam comments committed to my GIT repository is downright dirty!
One of the oldest production web applications i’ve ever built is still happily running mission-critical operations for a small distribution company. I’ll be the first to admit that it is a bit of a mess of different “eras” of code – some of it is even still running classic ASP, which is being slowly (i.e. over a period of years) but surely replaced with PHP5 code. One thing i’m sure about though is that to rebuild the system entirely using something like Django would take months, if not years. So it is is destined to stay as PHP, and therefore as long as it is running and i’m involved with it, i’ll still be writing PHP. I’m fine with this, PHP runs half the internet, was written specifically for the internet, is easily learned and is improving as a language all the time. PHP is a fully Object Orientated language these days, but judging from a recent thread on the underscore mailing list, the perception of PHP remains as warped as ever in the eyes of “proper” programmers!
I’ve managed to sort a couple of things this year that have been missing from my life – firstly, i’ve been doing a bit of mobile working from my camper van office, and secondly i’ve joined a band, after a hiatus of ten years! My last band (Braxton Hicks) was a 9-piece Acid Jazz/ Funk/ Soul band, this new band (name still undecided) is a 3-piece surf-rock trio. We’re still getting a set together, but will be looking for gigs soon!
There seems to be a trend for free services shutting down recently – following the recent-ish announcements that Posterous (a kind of blog service with strong emphasis on posting by email) is closing down, and this month Google announced they are closing Reader. It’s not surprising that a free service would shut down – they cost money to run, and as businesses start to look at ways of cutting costs, it makes sense to sacrifice free services.
I was surprised about Google Reader though – apparently the user base isn’t as big as I presumed it was, and they decided it was too niche to bother with. I’m also surprised they didn’t just roll it into google plus – surely little effort to gain thousands of much needed G+ users? Meanwhile i’ve moved over to feedly.
Currently most of my stuff is self-hosted, with the exception of comments hosted by Disqus. I really don’t want the hassle of running my own comment system, due to spam, but i’m starting to think about moving to a self-hosted system, maybe something like a self-hosted version of Disqus, that I can easily drop into different blogs? Whatever I use, it needs to have all the usual anti-spam stuff – comment spam is the bane of any aspiring blog software developers life!
I also paid up for a years membership to app.net – same as twitter, I am @rickhurst. It hasn’t become part of my daily social/workflow yet, as not enough of my regular twitter contacts are using it, but I wanted to put my money where my mouth is when I say i’d rather pay for a service than rely on annoying advertising.
I gave a talk on Backbone Marionette at the Southville JS meetup. It was a practical code based demo, I think it went OK. Either way it was a good turnout and nice to have it hosted in a pub back room, so we could continue chatting at the bar afterwards. The code of the (fairly pointless) demo app I put together in blue peter style is online here.
I also gave an ignite talk on remote working at the Anywhere Working Bristol event. That seemed to go down well and it was nice talking about non code-related stuff for once!
I was also pleased when a colleague pointed me to Poweramp for Android – I had been complaining about how most Android music players don’t support gapless playback, which is a real party-pooper when it comes to mix albums such as my favourite mix album of all time Journeys by dj 70 minutes of madness.
I spent a lot of my spare time working on my camper van blog this month, which has now been relaunched as campervanthings.com. As well as covering my own experiences with mobile working and my VW T25 camper, it is now also a general blog about camper van things (hence the new name!). I’m also tweeting separately about camper van things from @campervanthings. The campervan things blog is mainly just for fun as it’s a personal passion of mine, but i’ve been brainstorming ideas of how I could create a sideline for my business with it – set up a shop? advertising? buying another camper to hire out? – who knows!
One particular improvement to the blog is that I have removed the old lightbox plugin and replaced it with Photoswipe, a responsive image gallery/ lightbox, which make the site much more user-friendly when used on a smartphone or tablet. (Screen grab below – click through to the blog post and click on a thumbnail to try it out)
I’ve got my eye on packery for too old to skate – it currently uses Masonry, but with different length blog posts it often leaves unwanted gaps, so i’m hoping that this along with maybe some smaller blocks I can fill out the page retaining the angled content.
I am now plugged back into the matrix thanks to a contract-free Google Nexus 4. It’s a great device – I was actually on the verge of buying a contract-free iPhone 4S, but the Nexus came back into stock, and is a much higher spec device with bigger screen, for much less money. I’ve found it has helped massively with blogging as the on-screen keyboard is big enough to type fairly quickly in those “down-time” moments. I had to resort to trimming my sim card to microsim size, using a template.
I’ve been getting carried away with my Camper Van blog over the last couple of weeks, overcompensating for my lack of actual design skills by adding loads of fancy effects such as Supersized full-screen background images, and Photoswipe for responsive photogallery/lightbox.
As “on the road” is a PHP site, and I haven’t got round to setting up SASS stuff for it, I decided to use PHP minify, which lets you specify groups of assets to be combined and minified, then serves them up on the fly, using caching (filesystem or memcache) to keep it snappy. The set-up is fairly straightforward, the only thing that might trip up a novice is setting up the caching.
As a result (after a bit of refactoring to get things working after moving the js from the head to just before the closing body tag), I now have the site loading in a single js and a single css file, considerably improving the load time, and neatening up the source code. Note that these two screen grabs were taken on different internet connections so the actual load time of the assets shown isn’t a good comparison.
I haven’t posted to this blog much recently, so I thought i’d set myself a new routine of blogging at least at the end of each month to record some thoughts and links.
Firstly, as of Jan 1st i’ve been Freelance again – towards the end of last year while working full time at Potato, I got a bad case of freelancers itch, and felt that I wanted to make more time for working on other business ventures. When a three-month contract as a mobile web application developer at ISM games came up, I jumped at it. This time round i’m going to try my hardest to not end up juggling client and contract work, and to make sure that I free up time to pursue other things, either between contracts or by landing part-time contract work down the line. The important thing is that i’ve thoroughly learnt from the mistakes I made during my last stint as a freelancer!
I’m also now “getting” the whole mobile-first approach for building web apps, in part due to having to go back to my old Nokia N95 for a while when I had to give back my company Android phone when I left my day job. No, I didn’t use any web apps on the Nokia – it was just too painful to even try to get logged into gmail, but not having access to a smartphone, and not being able to use mobile-only apps such Instagram, reminded me that web apps are primarily being used on smartphones and tablets, and this trend will only increase. Getting these mobile web apps working well, and then adding in additional stuff (only where needed) for people using them on desktop is the right approach, rather than the whole “squash and hide” approach used in responsive websites to scale down from desktop to mobile.
Apart from that, i’m all about Python and Django still – The back end of the web app i’m building uses Django rest framework and I have some personal/ business projects in the pipeline using those.