11/01/2015

2014 Look back and plans for 2015

Like a lot of people I thought I'd write a small look back over the last year and set out some plans I have for 2015.

Contracting

2014 was a strange year for me, on the contracting side things wen't well. I was in solid employment for the entire year with no breaks between roles. I managed to get my first AngularJS contract, as we know getting that first commercial experience in something is so important.

After that contract ended I was lucky enough to get into a role where there is a great deal of variety, a lot of front-end development, a lot of responsive web design and mobile development. The team I work with are small but very proactive. They manage to get great work out there in a small amount of time and it's a great experience to be part of a team that is so active, and does manage to ship great work so quickly.

New Skills

New skills I've picked up in 2014 include:

  1. AngularJS
  2. Sass, I've been using LESS for a while, but now I'm really beginning to like Sass, set up is still a pain at times though.
  3. Ionic, managed to build a demo app with Ionic at current contract. The team I'm working with seemed to like Ionic.
  4. ExpressJS, not using this commercially yet, but learning it with a view to offering it as one of the skills I have.
Business 

The business side of contracting is something that not really discussed much, there are many sites, blogs and podcasts on startups or freelancing, but being a contractor is not really discussed much. I think this is because everyone wants to freelance instead of contract. 
For me I do see a difference between freelancing and contracting. A freelancer is responsible for finding the work for there own business while a contractor finds work through dealing with agencies and not directly with clients (though this can change if a client decides to go back directly to the contractor in order to employ them again). 
So currently I see myself as a contractor eventually I hope to be both contracting and freelancing, but more on that in a min.
In 2014 my limited company business has not grown as I'd would have liked, there are a couple of reasons for this, all my own fault, they are:
  1. No planning of how the year will go.
  2. Not having a clear understanding of the tax payments involved in running a limited company. A couple of times I had to pay myself late after paying a tax bill that I hadn't planned for.
  3. Not having a good plan in place for tax, know when bills are coming up, making sure enough money would be in place to pay both these bills and wages.
The main problem I have is I started contracting with a very bad accountant, who told me nothing of what to expect in my first year. I now have a far better accountant who is very helpful (quick tip, if you are contracting and your accountant is not as helpful as you like, look around for a new one). 
I also started contracting after leaving my last permanent role without finding out what is involved in running a limited company. I finished my permanent role, then looked around for a new role, decided contracting was what I wanted to do. Then looked hard for a contract without looking into what is involved in contracting besides the dealing with agencies. There is all the tax payments, financial planning, cash flow and wages that you need to know about or at least have a basic understanding.
Looking back I think I didn't have a good enough understanding of these things. I thought I just needed a good CV, something on Github to show my work and off I'd go into the wonderful world of contracting. There's more to it than that.     

Health

On the health side of things have not been great, ended up in hospital for two weeks with a serious kidney infection. Then sitting around for two+ weeks lead to me getting a blood clot in my leg. So I now have to deal with that, which has not been fun. 
I was lucky enough that the contract I'm on did allow me to work from home for a couple of weeks while getting better. Then I took two weeks off over Christmas and now I'm back working onsite in London. 

2015

So 2015 the year of growth, this is a list of plans I have for this upcoming year:
  1. Rebuild company website, my current CGCSoftware website needs a new look and I plan to rebuild the site using ExpressJS.
  2. Build apps with Ionic, I've been a fan of this framework for the last six months. I was planning to build a app as part of the 30 day challenge, but due to ill health I didn't manage to get one done. So apps are big part of the year.
  3. Grow the business so that it is a better place financially. 
  4. Learn more JavaScript, start using NodeJS and ExpressJS. As well as Ionic I'm really interested in what's happening in the Node space so I want to get into Node and using it a lot more.
  5. Go to more conferences and meetups. I haven't been to many and now I think I should go to more in order to learn and meet others in the community.

26/10/2014

Using Phonegap Developer Tool with Ionic

While working on my app for the 30 day challenge, I was looking at the Phonegap site about how to build the final app and I saw the Phonegap Developer App.

This app is in two parts, there's the CLI and an app you install on your phone that allows you to run the app you're building on your phone. Kind of like a live reload, but on your phone, how cool is that.

The problem was I'm building an Ionic app that is served through the Ionic CLI, so how do I get my app to run on my phone through the Phonegap developer tool.

Looking into it I found this great article on Devgirl Holly Schinsky's blog, in which she says that you need to run the Ionic app through the Phonegap CLI then when you run it you are given an IP address. Then you open the Phonegap Developer app on your phone and this gives you another IP address, double click on the IP address and change this to match the IP address that the Phonegap CLI has given you and boom your app appears running on your phone.

Then if you go back to your IDE and make any changes they appear automatically on the phone, which is awesome.

24/10/2014

30 Day App Challenge

Recently on the Ionic forum Bjorn Holdt announced that he was going to make an app  and get it released to the app store in 30 days. He then encouraged others to join him and see if they could make an app and get it released in 30 days.

After reading this I thought that it would be a great challenge and get me moving on an idea I have had for an for awhile.

The idea I have is related to my other passion in life (besides working with Ionic) which is Brazilian Ju Jitsu. I'm planning on building an app that allows people training in Brazilian Ju Jitsu (BJJ for short) to take notes and record small videos of techniques they are learning in lessons. Then later they can go through the notes/videos they've created and remind themselves how to do a certain technique.

The current status of my app is I've created the first few screens in Ionic and started planning the flow through the app for a user.

Like Bjorn has I plan to write some more posts on the progress of the app, but this is the start for the 30 day challenge.


23/10/2014

Email clients for Android and hopes for Google Inbox

Over the years I've tried a number of email clients on my Android phones. I've used MailBox, CloudMagic and the default Gmail client. Now Google is about to release a new Gmail client which looks really interesting. I've just sent off my request for an invite to use Inbox, hopefully I'll get one.

One thing I do use a lot in Gmail is labels, I have a number of them for the different type of emails that I get, ones for newsletters, ones from agencies and friends. For each label I have a filter that automatically puts any email that comes in with its label, sometimes completely skipping the Inbox.

When I was using MailBox (which from time to time I go back to) the main problem I did have with it was that it didn't support the label/filter system that I already had in place. I do like the MailBox feature that allows you to mange your emails, e.g. snooze your emails, read at the weekend etc. All great features, but I would like to be able to manage an incoming email, then forward to one of the labels I already have set up in case I need to find it later.

Hopefully Google Inbox still supports the labels I've got set up, if not then maybe I should change how I manage my email then Google Inbox or MailBox will be ideal.

06/10/2014

Ionic app coming along

Lately I've been working on my first Ionic based app, I've found that working those 20 minutes I have on the train into London,really helps in getting that consistency that is needed to get a side project going.

The app I'm working on is for martial artists to record short videos of techniques they are shown in class. Then later they can go back review the video of a technique and remind themselves of how it should go before they go to their class. A lot of martial artists I know watch a lot of technique videos on YouTube and spend a lot of time searching for videos that show the current technique they are learning, even if it is being demonstrated by someone other than their instructor. So my idea is to allow them to create their own personal video library that the can refer back to.

The app has two main views, the first is where they can add a title and the date of the video entry they are going to make and the second view is of all the saved videos they've made ordered by date.

The first problem I had when starting development was how to manage the navigation between screens. I was use to the way jQuerymobile handles this by creating complete pages all with a header that is repeated in each separate page. Ionic doesn't do this, and I needed a way to have multiple pages and be able to navigate back and forth between views.

I found some great examples on Codepen.io one of them showed how to use views within Ionic and manage the navigation between view using the ion-view directive.

So my application is made up of a series of templates, each containing a ion-view component that loads into the ion-view component within my main index page. The ion-nav-view component keeps track of the current view and can navigate back to the previous view when the user clicks on the back arrow.

One of the things I love about Ionic is how it uses smooth CSS3 animations for the transitions between views, all that are available by default. Transitions don't need to be set up as they do in jQuerymobile.



07/09/2014

Using Brackets

I've been using the latest version of Brackets this evening. It's really improved since I last used it. The themes are great and switching between them has improved. 

I also install a plugin for Ionic, this is great. It allows you to create a project through the plugin, you point to where you want the project to be created, what type of starter project you want and off it goes and sets up the project for you. I've also found a good tabs plugin that creates tabs in the top of each page (it also uses the icon for the file type e.g. HTML5 icon or the JS icon). Brackets is really becoming a powerful editor for HTML, and it is also a great example of what you can build now with web technologies. 


I'll carry on using Brackets for a while, see how it goes, but the current version looks good.

24/08/2014

Two Years Contracting

I’m coming up to two years of contracting and it’s been a voyage of discovery. After contracting for a short while now I do think that it is still the way forward for me, but it has always been plain sailing. Here’s what I’ve learnt over my first few years of being a contractor:

Get yourself a good accountant from the start. One that is available to answer your questions, ideally one that gives you a single point of contact.

If you aren’t 100% happy with your accountant, change them as soon as possible. This is your business so you must do what is best for your business and if your accountant doesn’t answer your questions then change them.


Keep track of all the invoices you send and the receipts that you get every time a invoice is paid by an agency. When agencies pay your invoice they usually send a receipt, keep it and keep a spreadsheet to track which invoices go with which receipts (not all agencies put the invoice ref on the receipt).


Have a good accounting system, spreadsheets are ok but a good accounting system like Freeagent are really helpful.


If possible get the agency to pay weekly, it keeps money coming into your business account and if you get bills coming like VAT bills or corporation tax you have the money there to pay and you aren’t waiting for invoices to be paid once a month.


Learn to be able to sell yourself to agencies, while they can be a pain they are also help get you work so a means to a end.


So far I have enjoyed being a contractor I’m not suck in a role that I’m not enjoying, I have more control over the work I do and what technologies I work with.


But you have to remember that you are running a business and it’s your business so you have to make decisions that help make your business grow. Something I’m still learning.