Saturday, December 31, 2016

2016 - A GOOD YEAR WITH ONE TINY EXCEPTION

So to get the exception out of the way first. Redundancy! After a number of odd events, I found myself at risk in the 3rd round of redundancies at Aker Solutions Aberdeen.

I'd been there for 23 years and for the most part, had a great time. It was a great company to work for. However, in the year up to redundancy, the cracks were showing, Little in the way of new or interesting work, a lack of any real direction in the department I worked for, and a total lack of leadership.

So on the day after I was put at risk, or should I say my ‘position’ was put at risk, I was asked to work overtime, work the weekend and cancel a week's holiday…
So it was time to take some control back.

I could possibly have put up more of a fight and argued but I was done. It's a strange feeling having to give up something you had worked for and enjoyed for so long.

The timing couldn't have been better. It was the start of the school summer holidays and I had as much free time as I wanted to spend with my boys (Jamie 8 and Thomas 5). We had a brilliant summer riding bikes, playing in the garden, playing with Lego, going to the park, and camping. I noticed quickly my health was improving, I was sleeping better and generally feeling good…was I ill?

During the summer I also attended some career events and met with a few people who made some good suggestions as to what to do next.

Become a teacher? Yeah, that sounds good where do I sign. I applied and was rejected! I don't have higher English. Unfortunately 30 odd years ago when I was planning to become an Engineer I chose Technical Drawing over Higher English. The rejection letter was interesting in that it had quite a few grammar errors in it which made me laugh, My English isn't the best but hey I was going to be teaching computer programming.

Work for me? I attended a number of brilliant training courses run by the Business Gateway in Aberdeen. With the theme of Digital Boost, they provide free courses that help with setting up your own business. They also provide a coach to help you through the process. I have one waiting on the sidelines till I'm ready.

Go back to School? I found out about a facility in Edinburgh called CodeClan that offers a 16-week software development boot camp. This sounded like a good way to bring my software and coding skills back up to scratch. Learn Ruby, Java, and Javascript. So on the same morning, I applied for both CodeClan and the Transition Training Fund (TTF). The TTF provides funding of up to £4000 for redundant oil-related workers to help with retraining.

I was invited for an interview with CodeClan and had to provide further info to the TTF to back up my application. As it happens I was offered a place on Cohort 7 at CodeClan and secured my funding on the same morning. So if you have read my other blog posts you will already know this is what I decided to do for the next 4 months.

So I am writing this on New Year's Eve 2016 and am very thankful for the year I have had.


I have a brilliant family, a supporting wife, and two fantastic boys who are growing into brilliant little humans.

I have met so many new people this year, my fellow students at CodeClan, and people at Business Gateway, reconnected with some old friends and met some new ones. My health is better, I'm sleeping well and enjoying life.

I am super excited about what 2017 will bring. I have a plan and will go through that next week… Watch this space.

Wednesday, December 21, 2016

CODECLAN WEEK 13 - GROUP PROJECT WEEK

So this is group project week. Just over 10 weeks ago we sat in on Cohort 6 making their presentations for their group projects. At that time we were 3 weeks in and the thought was how on earth will we be ready to create projects like that. All were brilliant and well-executed.

Now It's our turn…

Last Wednesday we were split into our teams using the CodeClan randomizer. I was the first team member up and was then quickly joined by another 3 teammates. In all, there are 6 teams of 3’s and 4’s. Keeping in mind what we had learned and sticking to Cohort 7 rules (<-see right) we had a week to ourselves to execute our project. We were set a number of project challenges that we could pick from, all with an MVP (Minimal Viable Product) that we must meet, and given free rein to add as many extras as we wanted.

We formed a huddle in the canteen area and went through each project. We quickly discounted a couple and homed in on 3 projects that we would then discuss in detail.

First up we discussed ‘Astronaut Dashboard’. We sketched out on A3 what we could make with this and searched for APIs that we could pull data from.

The second was an Educational App where we could produce a website app with a theme that again could pull from APIs and present the data in a teaching way.

The third and the one that enthused the team the most was the ‘Trip Planner app, where a user could plan a trip using visuals from Google Maps API. I attended a presentation with VisTech in the Code Base building (next to CodeClan) a few weeks ago there was a project discussed to develop an app that would help improve tourism along the A9 after the route from Perth to Inverness becomes a dual carriageway. The Trip Planner seemed similar and had a real-world need for it.


On deciding on a Trip Planner, we sketched out in more detail what specifics we would like to include in our app.

We had approximately 7 days to work on the project (including Saturday and Sunday) and be ready with a presentation and demo on the following Wednesday.

Thursday - we set up a Trello organization and added a number of Trello boards and each team member subscribed to them. Trello is a brilliant organizational tool and well worth a look, and extra bonus it is free.

The board setup was: MoSCoW, which keeps track of our MVP, Timeline to plan and monitor when tasks are actioned, Ideas board, and a Bug Tracking board.

To get the bones of the App in place we programmed together through Thursday.

Friday after morning standup (yes we still did standup as a cohort each day) we did a small standup as a team. We did a use case example of how someone may use the Trip Planner App, and then discussed and added tasks for Friday and over the weekend into the Trello board.

I took on the tasks of programming the Objects for an Organiser, Trip, and Activity. This was something that could be done in isolation and could be done when I was at home over the weekend. Not to be cut off from the rest of the team, we had set up a Slack channel where we could instantly communicate with each other. Slack is another brilliant tool that has taken over email in a smarter way to communicate.

Saturday/Sunday. So remotely I set about creating Javascript objects, by using TDD (Test Driven Development). With the help of Mocha and Gitting each step of the way I quickly had 26 tests passing and had the 3 objects ready to incorporate into the Trip Planner app.


On Monday we regrouped as a team and reviewed what had been achieved over the weekend. The Front end had improved with some wicked HTML CSS and we could new up a trip and add activities.

Tuesday morning we achieved our MVP, so all the requirements that we had set out to implement had been finished. As a team, it was a real buzz to get something coming together and working. It was also tricky not to add too much additional functionality.


So, in summary, the Trip Planner App, is a full-stack software implementation, using JavaScript, HTML, Express Server, and a Mongo NoSQL database.

Wednesday morning there was some time to do some more polishing and create some slides for the presentation at 14:00. Here is our chance to show off what we have created and also have a first look at the Apps created by the other teams. It was quite a big event on the course as each member of the team was required to present some aspect of the project, and we did so in the open space in the CodeClan office.

We were the third app and all went well. After some oohs and ahh’s long applause and some questions, we were done. Sit back and relax and watch the remaining presentations.

Massive thanks to my fellow teammates (you know who you are) and Cohorts. We worked well together and I really enjoyed the experience. It was great seeing the other teams bonding into their small groups too and sharing their experience. For us, I'm not sure if we will expand our Trip Planner App into a real website? who knows www.scottrip.scot domain is available.

Friday, December 16, 2016

CODECLAN WEEK 12 - WORSHIPING AT THE CATHEDRAL OF CODE

So we have been working toward a full-stack JavaScript web application for a couple of weeks now and as one cohort suggested we have been drip-fed all the parts to build a cathedral but we are not yet able to see the cathedral. This week we have been given the last few parts. We now have the full box of Lego bits. Some are unusual and comprise odd shapes and sizes but we have them all. Have we built a cathedral? not quite. We built a bank app that could persist data. it needed 4 terminal windows all running various processes and had no CSS but it was good to see and understand all the parts and what they did. It was more of a shed application than a cathedral, but hey I like sheds. The Cathedral will come next week.

Monday was a standup as usual at 9:00 followed by an individual instructor review of the weekend's homework. Again I did the bulk of it on the train on the way home on the previous Friday. This time it was to pull movie data from an API display it in a browser and add some CSS to make it look good.

This week we were supposed to start our group projects on Thursday, however, as next week is so close to Christmas and most folks will be travelling on Friday the project start was moved up to Wednesday. That means we had to compress an extra day into this week's classes. We were not quite sure how this would happen but it would become apparent later…

Lessons start with an introduction to Express which is a lightweight web framework similar to Sinatra that we had used with Ruby a few weeks ago. It provides a server to send HTML to the browser and gets us back to making RESTful routes again similar to what we did with Sinatra and Ruby. This was a morning code along and by lunch, we had a bank application working and another part of the built cathedral.

The afternoon was another code along this time introducing us to WebPack which gives us the ability to develop our apps in a Test Driven Development (TDD) way which we have not had since we took JavaScript into the browser. Great to see and brilliant to be able to have facilities to test code as we develop again. We revisited the water bottle app a couple of weeks ago and were able to call methods on the water bottle and have them provide data into the browser. Another part of the cathedral was added.

Homework was to refactor the bank application from the morning and pull all the web browser view code out of the main app and into its own constructor. Also, expand the bank and add facilities to add interest to all bank accounts via the push of a button. If only it were that simple. Each button press adds 10% to every bank account.

Tuesday morning lesson and we were introduced to Mongo and NoSQL. Mongo is a database add-on for JavaScript and NoSQL is as the name suggests no SQL. It is a JavaScript alternative to reading and writing data to a database without the need to create SQL queries and tables. Instead, data is stored as documents and as JavaScript objects meaning that you can use plain JavaScript to manipulate the data. Brilliant and if I'm honest seems much improved from the SQL that we used with Ruby and Java. In the code alone we added a Mongo database to our bank application and were able to make the data persist, so should the app be shut down and started the data would be pulled back from the database, so all those 10% buttons pressed from the day before are still in the bank accounts.

The afternoon's lab was hard! We were split into pairs and were given just over an hour to create a Bucket list application, where we should pull counties from the countries API, select them add them to a list, and persist them in a Mongo database. So all the countries you want to visit in your life would be developed as an application and persisted into a database for retrieval later. We were to regroup back in class at 16:00 and go through what we had developed. A very frantic programming session followed and we managed to get the data from the counties API and populated a list with selectable buttons (all 196 of them) and at exactly 15:59 we had our data saving to our Mongo database. MVP met. Homework was to expand on the bucket list app and add some CSS to make it look good in the browser.

I can't say I did much of it as the two days had been intense and covered a lot of coursework. I spent the evening going through the class notes. Oh, and Mongo NoSQL was the last part of the Cathedral. We now have all the Lego bricks to make a full-stack JavaScript web application.

Wednesday morning and apparently yesterday's hour lab is normally a full day lab… interesting… so that is how we compressed the week. No matter this morning was a quick lesson in using Git and Git Hub in groups and how to manage to branch and merge code so we can develop our project applications in our teams.

Mid-morning we were split into our teams and given our project choices. I'll leave next week to cover the project in one hit.

We had an excellent lesson in the afternoon from CodeClans CEO Harvey Wheaton on Agile and Scrum methods. Interesting and inspiring and did make me chuckle when the Waterfall software development was described as so out of date and only used by old-fashioned software companies and it had been a good 10 years since it was last seen in a company.

So this week has been long and covered a lot in quite a short space of time. I definitely need the two-week Christmas break now hopefully a chance to revisit some of the lessons from the past 12 weeks and practice more of what I have been learning. Oh, and I need to catch up on my evidence for my Professional Development Award. It's been falling behind somewhat.

Thanks again to CodeClan and instructors, have you really crammed so much into my head. And well done to my fellow Cohorts you are still brilliant and I'm still enjoying the journey with you guys. Can't believe after Christmas we only have 3 weeks left!

<shout out unknown artist for the pictures which I snapped in the cafe on Lady Lawson Street, Edinburgh>

Saturday, December 10, 2016

CODE CLAN WEEK 11 - MEETING THE DOM...

So the wheels almost came off the JavaScript bus this week. It started harmlessly enough with Monday morning standup with cohort stories of the weekend and how they got on with the weekend homework.

I had done the bulk of mine over the weekend and then finished it off on the train to Edinburgh. The task was to recreate the Rocking Ricks Record Store in JavaScript and make record objects and stock Ricks store. He was able to buy and sell records with the cash in the store going up and down depending on sales and stocking. Rick could also do stock checks to get a total value for his store and cash.

The lessons started us off into the world of JavaScript in the browser. Developed specifically to improve the end-user web experience javascript is now very powerful and is used to create lots of functionality in the web front end. Spotify and Airbnb are examples of websites that are now more like apps than websites because of Javascript.

The morning code along introduced us to the DOM (Document Object Model) which lets us talk Javascript to web pages. We built a simple page that has JavaScript writing the HTML to write and read from the browser. The browser of choice is Google Chrome which has an excellent console that lets you debug the javascript in real-time.

Monday's Homework had us doing a quiz on what we had learned during the day and also a task to automate an existing HTML webpage using JavaScript. Yeah, this is day one of JavaScript in a browser!

Tuesday and things start to get more interactive with Event Handlers and Event Listeners and being able to save and retrieve data from local storage. Then wheels became loose on the JavaScript bus with an individual lab to create a ToDo list app in the browser. Seems fairly straightforward and should be but we were given a starter code that had a basic structure and some pseudo-code already in place. The task was to “fill in the blanks”.. however, some of the blanks had not been covered in lessons, and the way the starter code had been structured was not clear what the intent was. It would probably have been easier to start from scratch. It was a bit of a low point trying to get half-finished code working and confidence-sapping. I probably got 80% completed but failed to get my to-do list fully working. I was not alone.

The afternoon improved, however, and wounds started to repair as we started to play with bringing Google Maps API (Application Programming Interface) into our websites and adding markers. Much fun and really powerful. The homework was a set of tasks related to making your own website adding a map and giving it information windows for the markers that you have placed (all with JavaScript)

Wednesday and another API. This time a free API gives countries of the world data. This time we were pulling country data from the web and creating a big list of all countries, their names, capital cities, and their population displayed in the browser. The Homework was the same idea but with a Spotify API, and the task was to make a list of albums and artists thumbnail pictures and a link to the location on Spotify. Loved this homework and was able to fully meet the brief.

Thursday was an introduction to graphing and charting data using an API. Back to countries of the world API and combining it with a charting API. In the morning lab, we were split into teams and given the task of charting some data from the countries of the world. Working as a team one gathered the list of countries and their population into arrays and another prepared the data in the format required by the pie chart. Coming together the data presented well into the browser, with the API clever enough to hide some of the smaller country labels.

In the afternoon we introduced another new concept called Canvas which lets you draw in the browser using JavaScript. Squares, triangles, and circles were quickly put into a window, before the second lab of the day. This time an hour-pair programming task to create an Etch a Sketch type interface. If you had asked me to do this a few weeks ago Id run away but now it was a quick task to create a few buttons (up-down, left-right) in HTML and add some on-click listeners to the buttons and program JavaScript to draw a small 10px line between button clicks.

So this has been the hardest week yet, with lots of new concepts to learn and really hard labs. But I've managed it and am pleased to see the end of the week. I have learned heaps this week and am happy that I have all JavaScript in the browser, API interfaces, and canvas in my toolbox now.

Big thumbs up to Code Clan and its instructors. Massive pat on the back to my fellow cohorts, you did well this week, and to the handful of you that dragged me to the pub on Tuesday evening to drown our sorrows thanks, it was much needed and made all the difference!

Here's a picture of the back of the Code Clan offices. Many software companies here...

Friday, December 02, 2016

CODE CLAN WEEK 10 - JAVASCRIPT... USE A SEMICOLON IF YOU WANT!

So I'm now in double figures of being a full-time coder. We have done Ruby, done Java and now we are being thrown into the deep end with JavaScript.

It's actually not that bad, lots of the concepts we have learned to date apply to JavaScript, and getting up and running making programs is quite quick. And yes as I have mentioned before Java and JavaScript are not the same languages. Java is a compiled language, JavaScript is not.


Monday morning standup had us discussing the previous week and our like for the computer science teaching, but not so much of a like for the CV and cover letter teaching. I think the latter adds some reality that we will need to get a job at the end of the course and will be competing against each other for vacancies…

 

Anyway, Monday starts with JavaScript and we are quickly learning the basics of Operators, Loops, Arrays, and Functions. All very familiar and it's amazing how quick it is to get basic programs running compared to day one Ruby.

Tuesday's standup starts with a number of cohorts commenting that so far they like JavaScript, but some comment that they don't like that it's not as strict as Java… In Java you must use a semicolon at the end of a line, JavaScript is up to you if you want to use a semicolon. Convention says to use one but hey if you forget it will carry on regardless. Nice!

In class, we start to build a bear and a robot and start to bring in modules. Modules get us back to TDD (Test-driven Development) and set up our programs so that they are tested as they are built. When making an object the first thing to construct is the associated Spec (or test file) that will define the tests for the object before you program the object.

The afternoon lab is a task to create a JavaScript water bottle and an athlete. The bottle begins empty and you have to fill it, and the athlete can drink from the water bottle and the bottle gets depleted. As the athlete runs their hydration goes down and they need to drink to replenish their hydration. Split into pairs we had about 90 minutes to create the program and have it pass tests. It was a great exercise to get two objects passing data between them.

For the homework out came the shopping basket from the previous week which was an employer coding test. Apparently one of the best ways to learn a new language is to have a familiar task that you can program in each new language. So us as homework, we had to recreate the shopping basket, add items to the basket, remove items from the basket, find the total cost of the basket, apply a discount of 10% for a total over £20, include a buy one get one free offer, and if the customer had a loyalty card give them an additional 5% off their total. So yesterday We’d never touched JavaScript before. This homework was hard and took quite a while. But on the train the next morning I had my bog-of working and all my tests passing!

Wednesday and Thursday we expanded on javascript functionality and learned how to set up objects and pass functions into functions. Seems a bit odd to pass a function into a function but after a few examples, it can be very powerful. We practised the new functionality in a couple of afternoon pair programming labs.

First, we were set the challenge to bring up a superhero object and feed them their favourite food which would boost their energy. Then they picked up an evil rat object that when they touched the food would make it poisonous and the superhero would become sick.

The second was to create a bank account and add account objects which had an owner amount and type. We practised passing functions by using predefined methods to search for a named account in the bank array, look for the highest valued account, etc.

Thursday night was quiz night hosted by Cohort 8. An excellent evening where 3 cohorts (7,8 and 9) came together with instructors and mixed into teams. My team was joint third. we did well guys the questions were tough.

So it's Friday and I'm back on the train from Stirling to Edinburgh for 10:00 am morning standup and issue of the weekend homework. Looking forward to it as I'm enjoying JavaScript.

Next week we take it into the browser and add some visualization to our programs.

It's the end of week 10 and it's been another brilliant week at Code Clan, I'm learning so much and loving writing code. Thanks again to the instructors and huge thanks to my fellow cohorts for being such an awesome bunch!

<-- Here is my ladybird book on computers when I was a Kid. Was I always destined to do something with computers?

Oh, and the word House looks odd when you read it a number of times in a row House House House House to the point it becomes unrecognizable. It was spotted by a fellow cohort during a code-along. Possibly an effect of JavaScript which was apparently written while under the influence of drink and magic mushrooms...