Continuing my GTD Exploration

Yesterday I wrote about how I was struggling with using GTD and actually getting something done. Like a lot of developers I have tons of projects I want to get done. Personal projects, client work, day to day coding tasks, tasks that you have to complete when running a limited company and all the jobs you need to do at home (family, house, finances etc). So there is a lot.

GTD is aimed at helping you obtain ‘stress free living’ a nice idea, but when you first go through the collection phase of GTD, where you sit down and write out all the things you need to do it looks really overwhelming, this can put you off starting anything.

As part of my getting better at GTD I’ve been watching the Todoist videos by Carl Pullein where he shows how to use the features of Todoist with GTD. His latest video is on dealing with projects that are overwhelming, projects that have a large number of tasks. Through using uncompletable tasks, he sets up stages within a project that tasks for that project can be added. So you can split up your project into more manageable stages. This is a great idea and really helpful.

I’ve also been reading about others who use GTD with Todoist. One article I found was by a JavaScript developer Justin Hill. Who in his article Organising a Life of Learning and Action makes a good point, that people express the desire to be ‘productive’ like we are machine’s just sitting in a factory producing stuff. This is a good point. With the world of start-ups, entrepreneurs, app developers and people who seem to make new products every week. We can easily get caught up in the idea that if we aren’t productive or building something, we’re not moving forward with our lives.

I think the we, as people who work with the internet (developers, designer, freelancers, entrepreneurs) can get caught up in having the best system for managing all the tasks, ideas and content we get exposed to everyday when on the web. For example I think we’ve all used every known task app there is. We all have several social media accounts just sending tons of content our way. All this on top of general day to day living can be very overwhelming.

So I think worrying that the system I have in place for managing the tasks I need to do is just adding to the problem or having so many things to do. GTD’s main aim is to provide you a way of taking all that is floating around in your head and getting it written down. Then you can sort through it when you have time and using the technique shown by Carl creating projects that aren’t overwhelming seems a possibility.

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.

Halfway through 30dwc

 For those taking part in the 30 day writing challenge, we are now half way through according to Marc, who started off this challenge.

So far I’ve been enjoying the challenge it’s been good to take a challenge of doing something every day for 30 days. Forcing yourself to write a blog post, to come up with a subject and get a post written each day has been a challenge.

Some people has made writing a post as part of their morning routine. Some people have been writing large essays, I’ve decided to go down the route of having a mix between longer posts and small micro blogging posts. I’ve also tried to have a theme for my posts from being a contractor to indie development.

It’s been good to have a challenge where you have to do something every day. It goes to show that if you want to pick up a new hobby or habit a 30 day challenge is a good way to start something new. 

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.

Can you call yourself an Indie Dev

As I’ve mentioned before I’m a big fan of indie devs. And one day hope to be in a position where I can make a living being an independent developer. One question that does cross my mind is can you call yourself an indie mobile developer when you don’t write native apps?

The obvious answer is yes, it really doesn’t matter if the apps you build are built using Objective-C, Java or JavaScript. As long as they sell and are good quality apps then it doesn’t matter.

But all the indie devs I know of seem to just build native iOS app. This is probably because the iOS market and app store were the first so developers went and joined the iOS market building native apps. There is a Slack channel for iOS developers, which I belong to. In this channel there are a lot of developers who are building apps for themselves either full time or part time. But all of them seem to be native developers.

I think that being a hybrid app developer would be a good thing for indie developers. When they create an app they can target both major platforms (and now Windows with Ionic 2).

I suppose the question is not what programming language you use to make apps but more how successful you are at shipping apps, marketing them and expanding upon them. I’ve posted a question of the Ionic slack channel to see if any developers there are independent it’ll be interesting to see the response.

Scopes in Angular

I’ve been doing some reading up on AngularJS today to refresh my understanding of how it works. Today I was looking at Scope, here’s my notes on what I found out:

Scope has a lifecycle made up of 5 stages

  • Creation – when the root scope is created during the application bootstrap by the $injector service. During this process template linking takes part. Directives create child scopes.
  • Watcher registration – $watches are setup and used to propagate the model values to the DOM.
  • Model mutation – model mutation only happens when $apply is need when doing asynchronous work in controllers, or async work with services, like $http.
  • Mutation Observation – At the end of the $apply stage, Angular performs a $digest cycle on the root scope, which then goes through all the child scopes. During this stage all the $watches expressions or functions are checked for changes to the model and if a change has been detected, the $watch listener is called.
  • Scope destruction – When a child scope is no longer needed it needs to be destroyed. This is the responsibility of the child scope creator to do this using scope.$destroy(). This stops any propagation of $digest calls into the child scope and allow for the garbage collector to reclaim the memory.

So the way I see Angular works is, when your app starts the ng-app is a directive, and everything within that is then accessible to the Angular compiler which goes through the DOM and collects all the directives within the app. Then links all directives with a scope object to produce a live view of the model in these views. All this compilation is done in the browser unlike other templating systems that do this before rendering in the browser.

Once all these directives and scopes are linked, a series of $watches are setup all watching the expressions and functions within the scope(s). Any changes trigger the $watcher function, these $watch functions are triggered as part of the $digest cycle. When the $digest cycle starts it fires each of the watcher functions, which check to see if there is a different with the current model from the previous version of the model.

This is a great article on understanding Apply and Digest

There is still a lot more to Angular which I’m going still got to look into in further details. And how Angular 1.5 and it’s a new component structure effect how the scope and digest cycle works.

Any feedback on this would be really helpful

Software I use

  Recently as part of the 30wdc Darren Beale wrote about his essential software I thought as part of my post for today I’d list the software I use everyday.

  • Webstorm – I use to be a sublime text fan, but recently ST has stopped progressing, version 3 seems to have been in beta for years. So I have switched to Webstorm and in my opinion I think it is the best JavaScript editor there is. It has support for Ionic, Angular 1 and 2, TypeScript, ES6 and Node. The support and innovation that the Jetbrains team put behind Webstorm is fantastic.
  • Todoist, I’ve used other task apps like Wunderlist, Any.do and Trello, but for me Todoist is my favourite todo app. I’m currently trying to use GTD and Todoist can really support GTD. I have been watching a lot of Carl Pullein’s YouTube channel all about using Todoist for GTD (his channel is well worth checking out)
  • Evernote, this is where all my notes, ideas and business ideas go. Being able to record everything in your brain into one app that you can access from anywhere is great. I’m a big Evernote fan.
  • DeskPM, is the tool I use to write my blog posts. It’s been created by indie dev John Saddington. It links to multiple blogs, WordPress, Blogger and Medium. Has a full screen mode so you can just concentrate on writing, it’s a great app.

So these are the main apps I’m using right now. 

Why I like using web technologies for mobile

I was walking my dog this morning, thinking why do dogs like sniffing where other dogs have peed (pretty gross) and if I was asked why I like using mobile technologies for building mobile apps, what would my answer be.

Well there are a couple of answers to that question. First I think that if you are running a web agency and one of your major clients comes to you and says ‘we love the website you created for us, can you also build us a mobile app that uses a feature of the site, and we want it in the next 6 weeks’. This a great example of when a hybrid or mobile technology built app (NativeScript or AppCelerator) is a great solution. Because it allows the web agency to use their in house skills straight away on the project. They don’t have to hire either an iOS or Android developer, they can get the web developers they have starting on the project.

Another time a hybrid app is a good solution is when someone has an idea for an app, but don’t have the skills required for building the app. They do know that they want to hit both iOS and Android (and now Windows with the latest beta of Ionic 2). Getting a developer who can build a hybrid app will allow the app entrepreneur to get a version of their app out there to customers to see how well the app does and if their idea takes off.

I do think that hybrid is not the answer to everything. Apps that need to be high performing, or need to closely integrate with OS native is the way to go. Also if your company is large enough to have it’s own in house native developers then it make sense to use what skills you already have.

On the flip side of this argument is this article by Keith Elliot – Your Hybrid App is Going to Kill You (a bit harsh title, but still an interesting read).

Free Work, does it pay

Recently I was contacted about a small project, which is fine. It’s nice when someone reaches out to you about a project. The project is a small mobile app (using Ionic) with probably a tight deadline. This is all I know so far, but from the tone of the message I received it does sound like it would be a ‘do this for nothing so we can see if we will send more work your way’ type of thing.

These type of projects do seem to come up more and more for mobile apps, just ask Jason Keen he’s a AppCelerator developer who I follow on Twitter, who has discussed this issue many times.

Now I like the sound of this app, it would be another example to add to a portfolio, something it the app store. I also have time while looking for a new full time contract to do the app, but is free work ever a good thing? (This ending a sentance with a ? reminds me of when my wife watched Sex in the City, terrible program)

So what to do when something like this comes up. It’s a bit of a gamble, especially if you are starting out. You like to have some work coming in and if a new project could lead to more regular work (though there is no guarantee of this).

Well there are still plenty of more questions than answers so it’s worth seeing where this goes.

What do others think? Is free work ever worth it? (Dam!! I have to stop finishing sentances with question marks)

Micro Blogging

As part of Marc Jenkins’s 30 day writing challenge I’ve been trying to get a blog post out every day. So far it’s gone ok. I have noticed that others who are taking part in the challenge are writing nearly 500 word essays every day, which is great but it looks hard to keep that consistency.

My aim in the challenge is to commit to generating a post every day. No matter what the topic is or how many words the post should be. It all depends on what I’m writing about and what I have to say about it.

There is a blogging movement (if there is such a thing) called microblogging where the idea is to write small posts, both in size and aggregated size. I think this came out from when services like Twitter and FaceBook started to become really popular and people used these social media services to put out content. A few years ago everyone had a website, with a blog inwhich they put out their content. Now everyone has a Twitter account instead of a website URL (or a GitHub account as a lot of web developers use instead of their website).

Eventually more people started to get a bit sick of Twitter and 140 character posts and went back to blogs, but started to mix the short form of Twitter with blog posts. Now a blog post doesn’t need to be 500-1000 words (like a school essay) 200 words is fine.

I do enjoy reading peoples blogs, especially web developers I look up to. People like Remy Sharp, Marc Jenkins, Ray Camden and Rachel Shillcock people who are actively blogging.

(Hey look at that just over 200 words, exam passed)