2016 – Wasn’t to bad

2016 wasn’t too bad for me, considering that a few years ago around this time I had just got out of hospital, I had blood clots in my legs and a kidney that hardly worked.

2016 started with me getting 2 Ionic freelance projects. I’ve always wanted to go 100% freelance specialising in Ionic mobile development. So getting 2 projects at the start of 2016 was a great start.

Unfortunately the bad side of freelancing soon followed after these two projects finished. Late paying clients, and no other work on the horizon meant that my freelancing ‘dream’ soon died as I had bills to pay and no income.

So I went back to contracting. I spent about 4-6 weeks in mid-2016 looking for a new contract, eventually I got a new contract in central London, but unfortunately it was a terrible contract and I left 4 days after starting.

The people I was working for were working in a terrible way, they had all their developers in one small room, with Project Managers asking for updates every 5 mins. There was no sprint planning or anything in the way of good development practices. I had a bad feeling about the place after one day, so I was glad to be out of there as soon as I could.

This did mean I still had a few more weeks without being paid. Thankfully some of the late payments from my freelance work came through so that helped.

Eventually I got a new contract working for a great company, building their new Angular based website. As part of the team we managed to get the new version of the site out, but then went straight into a long cycle of bug fixing.

Generally bug fixing can be fun, it’s a challenge to find the cause of the problem, then working on a way to fix the issue. But 5 months of solid bug fixing meant I wanted to look for something new.

So now I’m working on a large Angular 1.5 project for a well known brand, when the site’s live I’ll be posting who they are. This is my first project using the new Angular 1.5 components based approach, which I really like. Being able to moduralise everything, making everything a separate component is a challenge to get started (especially unit testing components), but once past this using components seems like it is the best way to build apps. Lookign forward to getting into Angular 2 very soon.


So 2016 was alright, a couple of hickups with late payments and taking on a terrible contract, but the end of the year has got a lot better.

My plans for 2017 are continue on this large contract (which should take me to mid-2017) I’m also planning to build a Ionic 2 app as a side-project in order to learn Angular 2 and hopefully get some Ionic work towards the end of the year.

Progressive Web Apps and the enterprise

I’ve recently been watching talks from Google’s PWA Summit while watching the various videos I could really see how Progressive Web Apps (PWAs) can really help in an enterprise arena.

For example a few months ago I was working on contract at the UK Houses of Parliament, for a team that built apps using web technology. We started building mobile apps using jQuery mobile, Bootstrap and eventually Ionic all great technologies (though Ionic is my personal favourite). While we could easily develop these apps it was the building and releasing the apps where we encountered problems.

The main cause of the problems was IT security. As you would expect security there was very tight, this also included IT security. So having access to tools like NPM or GitHub was restricted, both tools that modern web developers take for granted. We even had to download the Ionic framework ZIP folder in order to create a Ionic site/app.

So in order to release an app we uploaded the ‘site’ to an external host (a mission in itself). Then when a user went to the site they were told that they could add a link to the this mobile site on their phones home screen. Using the fantastic AddToHome JavaScript library. Then when the user clicked on the newly created icon the mobile site opened in a full screen browser.

For offline support we used appCache and if we wanted to record offline data we used localStorage, though it does have limited amount of space.

Now after reading about Progressive Web Apps, I can see where they would be extremely useful in situations where teams don’t have access to the modern build tools or app framework tools that are now common place in the web.

For the apps we built at the House’s of Parliament, Progressive Web Apps would be so useful. Using service works for offline support, IndexDB for data storage, push notification and the install on home screen features that are part of PWA are all features that we used at Parliament. And being able to release apps without having to build them or release through the apps stores, both of which access to them could be blocked due to the security settings.

When I told the team at Parliament about PWAs they were really excited. I for one look forward to seeing what they make with them.

I really think that Progressive Web Apps are a fantastic technology and I really look forward to working with them.

Side projects or part-time freelance work

I’ve been thinking about part-time freelance projects vs side project, and the pros and cons for each.

If you have a full-time job or contract you’ll only have a few ‘spare’ (if that’s actually a thing) hours. So is it better to get a freelance project or spend the time working on your own projects.

If you have a freelance project you are getting paid, which is a plus. It also may building a project using a new technology that you want to get into, for example building a native iOS app or a WordPress theme, which is a great way to get into a new arena. But you are building a project for a client who has their own deadlines and plans for the project. So there is extra pressure to get work done. Those days when you get back from a long day at work, and you know you have to star your second job. You’ll have emails from clients asking how projects are going or asking for amends to the project.

With side projects you do get the freedom to use a new technology you want to get into. You are the client, so you guide the project any amends are your ideas, you decide how the project will go. Once your side project is live you can show others and use it as a way to show your skills in a new technology. The main drawback for side projects is when building them you are not being paid, you may find that progress on the project slowly gets slower and slower until the project comes to a halt. While with a paying project you’ll keep working on the project so you can get paid once it is complete.

Looking into this I’ve found some interesting articles, including this one on the Todoist blog about keeping your side project moving forward. In this article it lists some amazing projects that started as side projects including Gmail, Github and Buffer all very successful projects.

So where do I stand on this? Well I’m currently leaning to the side projects. Because I’d prefer to work with a technology that I want to get further into. I’m sometime a bit lazy so those days I get back from work I may not want to work on a project. It’s a tricky one…..


Getting Sh*t Done

For the last few months I’ve been trying to get on with GTD, I’ve read the book, watched videos on it, read hundreds of blog posts about it, but I still can’t seem to get into it to using it everyday.

Like a lot of freelancers/contractors I have tons of ideas like, creating apps, learning new technologies as well as all the day to day tasks you have like getting the car cleaned, finding a gardener etc. 

I also want a way to create tasks for each thing I need to do as I’m coding. I like the idea of braking down a piece of functionality I have to add to an app into small tasks. So I want a lot from a task management system.

I’m currently using Todoist as my task management app and it’s great and very flexible. But getting things done does not seem to be happening. So I’m currently going through a reevaluation of how I use GTD and Todoist. I’m going to create a project that will contain the 3 goals I have for the upcoming week. Also I’m going to create time slots in my calendar for when I’m going to work on something. 

I do think that having due dates is a waste of time because if you miss one then every time you look at your task app it like its nagging you about something you might not have the time to get done that day. 

So to recap I want a way of 

  • Keeping track of things I need to do that day
  • Get moving on projects I have for both myself and clients
  • Write tasks I need to do as writing code
  • Remember the things I need to do around the house
  • Odd jobs that need to be done, calls to make, emails to read 
  • Working towards main goals

I do expect that the problem is not so much GTD but how I’m using it. I think more research and trial and error is needed.

Job Hunting as a Contractor

I’m currently in the middle of job hunting for a new full-time contract, which is itself a full time job.

When you are between contracts you think ‘ah, I will spend the time doing things you meant to get done around the house’ but in fact you send all your time job hunting and these jobs around the house don’t get done.

The reasons that job hunting is like a full time job are, one you spend a good part of your day on the phone talking to agencies. Some of them want to discuss a role they have with you, to see if you are suitable. Some just want to see what you have done, what type of roles you are looking for incase something comes in and they know that you are able to do this role and they can put you forward for it. Sometimes they are just trying to find out who you use to work for or who you’ve been speaking to in order to see if they can also contact the client and see if they can get someone in there.

Generally agencies are ok to work with, you need them as much as they need you. So having a good relationship with the agencies is important in contracting.

After your CV has been sent to a client, they have reviewed it and you manage to get to the next stage. There are generally two types of next stage, either the ‘technical test’ or the ‘telephone’ interview. These two types of first stages in the interview processes are a lot more popular in the contracting industry now, than they were a few years ago. I think this is due to so many unqualified contractors getting through to a face to face interview. Whether this is due to them lieing on their CV (something I just done understand, if you haven’t got experience in something don’t lie about, either don’t appy for roles that require a certain skill or spend time building something open source to show you know it).

Anyway the technical test, this is usually when you are given a problem to solve and you need to write some code in order to provide a solution to the problem. Now agencies aways send you this test, and they usually say ‘it shouldn’t take longer than (insert small time period here)’. This is fine, but they are not developers and so they are probably not thinking about all the things that you are, how best to structure your code, how to show best practices, what approach will you take, are there issues like cross browser support you need to consider, is the problem to make something responsive? If so what screen sizes should you test against. If you have to access an API, what about checking for access to the API, what if no data comes back. There are a lot of things to consider when writing a solution to a technical test.

While doing this test you are probably still getting telephone calls from other agencies and you have to schedule the time to get the test done. This usually means, getting away from the family, finding some space on your own and focusing. While always remembering the famous last words of the agency ‘it should only take a few hours, can you get it done this evening’.

If you aren’t given a test, but instead get a telephone interview. This is so the client can ask you a few technical questions to make sure you know what you are talking about. And they can see/hear that you know something about a technology they use. Telephone interviews also have their problems. First of all if you have a bad connection (thanks Vodafone) it doesn’t sound to good if you keep going ‘can you repeat that please’. Second if you speak at the same time as the interviewer, you get this awkward pause where you both wait for the other to start talking again. So the flow of the conversation can get broken, but when there is a good flow to the conversation then the interview is (hopefully) going well. If you can clearly explain how a technology works or what work you have done and what problems you’ve solved then it shows you know what you are talking about.

With conversations with agencies, sending off applications to job sites, technical tests and telephone interviews job hunting is indeed a job in itself. You are basically becoming a salesman for your contracting services. So all you web developers out there who never wanted to be in sales, unfortunately you will be when job hunting.