Freelance Podcasts

I’ve been looking for more podcasts to listen to especially freelancing podcasts. Some of the ones I’ve found include:

I’ve also gotten into watch some freelancers vlogs on YouTube. I started watching more and more after Steve Folland from Being Freelance started one, which lead to finding others to watch.

Currently I’m watching:

While all these vlogs are great to watch, there are a lot of designer ones out there, but not so many by freelance developer ones. I suppose no one wants to watch someone coding with their headphones on.

 

Plans for 30 Day Writing Challenge

It’s nearly April which means two things, 1 it’s getting near my birthday and 2 its the start of another 30 Day Writing Challenge which I took part in last year.

The idea, started by Marc Jenkins, is simple write online everyday throughout April. It sounds a simple challenge, but as I found out last year, it can be difficult to find ideas of what to write every day.

So this year I’m going for more of a theme on which to base my posts on. For this year I’m going to write about learning Node throughout April.

I’ve been thinking about learning Node for the last few weeks/months, but never sat down to really learn it, to build a project using Node or how it works in detail. As it is one of the things I want to start doing in 2017 it seems like an idea opportunity to both learn it and write about it at the same time.

The benefits of writing about what you learn is that it helps galvanise your understanding of a topic. If you’re ideas are mislead hopefully someone reading your post will be able to correct you. By being part of a challenge like the 30 Day Challenge, where you are held accountable for posting every day, means that you have to do what you’ve said you’ll do.

Nice ngClass tip

This is a useful thing I found while working on a Angular project, making a small note here in case I come across the need for something like this again.

I’m working on a project where I have to loop through a list of items and display them in a table. Pretty straight forward stuff. One requirement is that if a row contains an item with a certain name, then a Class needs to be added to this row so the front-end developer can style this row differently.

After doing some research into this I found out that using ngClass this is really easy to do.

Using ngRepeat I looped through the data creating the table, then on each row using ngClass you can check the matching value like this:

Ng-class=“{‘className’: value === ‘titleToMatch’}

What’s happening here is if the value matches the titleToMatch then the className is applied to the row.

Ng-class is really flexibile and it’s well worth looking into what you can do with it.

Creating a Definition of Done

Today in our project planning sessions we discussed the idea of a Definition of Done. Now this is the first agile project I’ve worked on where we’ve actually defined what we, as a team, think a definition of done is.

As a developer I can really see the benefit that having a DoD set out from the beginning has. It gives us a checklist to go through when we have finished a task so we know that we can ‘officially’ say it’s done.

I think for 2 main reasons why the DoD is important for a developer, one that I can be happy to say that I have done/finished a tasks when I have met all the criteria that the DoD has set out. The second reason I think having a DoD is important for developers is that the quality of the project stays at a higher level as the project goes along.

If your Definition of Done says that a task can only be finish if it has 100% code coverage and has been checked over by a designer to make sure the work matches what they have designed. Then the quality of the project remains at a consistant high level, because you can’t say something is finished until all the quality checks have been made.

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.

Review of my first AngularZone meetup
It was my first time at the new SkillsMatter premises and wow that place is amazing. It’s over 2 levels, level 1 has a large meeting room ideal for large meet-up groups and mini single track conferences. While on the lower level there is a slightly small room ideal for smaller second track sessions or large training sessions. There is also a few smaller training rooms. In the middle of all these lower rooms is a bar, table tennis and seats ideal for the social side of meet-ups.
The AngularZone meet-up had 3 talks, one by the main organiser on AngularZone all about the new features in Angular 2.1 (yep we’re on version 2.1 already, (Angular releases are like buses you wait ages for one to come then 2 come along at the same, we’ll nearly the same time). The new parts of Angular are simplified animations and better preloading of modules.
Lazy loading modules preLoader looks a great feature. I personally can’t wait to use it and see how it will improve sites.
The second talk was from Ari Lerner, who wrote the original ngBook and co-authored the new ngBook 2. His talk was really interesting, all about how he is using features of Angular 2 for intelligent A/B testing. If his talk is available to see after ngEurope it is well worth looking out for.
The final talk of the night was a quick tour through GraphQL. I have to admit I’ve never see it before this and I was really impressed. GraphQL will make a great backend for an Angular app.
I’m looking forward to the next AngularZone.
Does it matter what an app is built in?
Well not really?
There has been a big argument on Twitter about NativeScript vs Ionic or NativeScript vs Hybrid and how you can upgrade to NativeScript from hybrid.
Of course the hybrid people weren’t to keen on that idea.
But really in the end it’s all about the app and what it can do and how it performs. I choose to create Ionic apps because I like how Ionic works, and how you go about developing Ionic apps.  I think the team at Ionic have done a fantastic job creating a framework and SDK that allows me to create cross platform apps.
It only matters how apps are being built if you have something to sell about how apps should be built, whether it’s a book or a course. Me, I like to build apps that perform well, look good and do exactly what the clients what the app to do.
The Rockd app really does rock

I recently read a great post on the Ionic’s Medium blog highlighting a new Ionic app called Rockd. I’m not a geologist, but this app looks really good.

What I like most about it is that is shows that mobile apps can be more than just games or productivity apps (which I do like). Mobile apps can be used to support a hobby or learn about a new skill. As we move into a more remote work place, mobile apps can help organisations and their employees work better.

I think that Rockd allows users to discover more about geology, it’s good to see an app developed for something else.

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.

Chasing your own tail

Working on the internet is great, it gives people around the world a level playing field in which to achieve their goals. A single developer can start a simple project with only a laptop and a internet connection and within a few years they can be in charge of a massive global company. But the internet is also a crazy place with it’s rush to get the latest technology out there, the newest framework, the ideal way to build an app or the latest social network.

As someone who works with the web I find that somedays I am spinning around like a dog chasing it’s tail (which is always funny) trying to keep up with what’s new or to find out how a new technology works. For example here’s a list of technologies I currently have an interest in:

  • Angular 1
  • Angular 2
  • Ionic 1
  • Ionic 2
  • NodeJS
  • ExpressJS
  • Sass
  • Less
  • Firebase
  • Bootstrap
  • Responsive Web Design
  • Mobile app development

Some list, it looks like one of those job ads that list everything but really tell you nothing about the role. This is another list of technologies a modern web developer could look at:

  • React
  • React Native
  • NodeJS
  • Express
  • HapiJS
  • Angular 1 & 2
  • Ionic 1 & 2
  • AppCelerator
  • NativeScript
  • Sass/Less
  • RWD
  • Native iOS
  • Native Android
  • jQuery
  • Ember
  • .Net framework, all of it
  • Git
  • PHP
  • Rails

This is a long list, it’s taken me a whole day coming up with the list let alone spending time learning these technologies.

The problem that the web has is that it’s become a massive marketing playground. Large technology companies are telling developers that there technology is best, that it does everything a developer will want or that the latest version of their technology is coming out with these amazing features.

Then there is social media telling developers about what they should be looking into, what is going to be the next big thing over the coming year. Or which technology/framework all new projects will be built it so you ‘must’ be using this or you’ll miss out. Then there is the recruitment industry that likes to tell developers that their clients are looking for developers who can do this (see list above).

It’s crazy.

I remember when I started working on the web all you needed was HTML, CSS and JavaScript, that’s it. These three technologies are still around, see central to working on the web.

In order to stop feeling like a dog chasing it’s tail (see it’s mad) I need to focus on a few things, Angular, Ionic, JavaScript, Sass, HTML and GTD. By narrowing down what I’m looking, by specialising what I do it’ll make me a better developer.

So now I need to go into my RSS reader and Twitter and remove the feeds and accounts of things I think I should be interested in and just have a few feeds on these technologies and a follow a few Twitter accounts.

The web is great, but it is also crazy being able to specialise is better than trying to learn everything, that’s impossible.

A great book about this is Philip Morgans – The Positioning Manual