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...

Tuesday, November 22, 2016

CODE CLAN WEEK 9 - HAPPY 1ST BIRTHDAY CODECLAN

So I'm past halfway through the Code Clan software development course (already!) and into week 9. The Weeks are flying by.

Monday 9.00am Standup saw my fellow cohorts and I looking fully recovered from the previous week's project. A new Cohort (Cohort 9) started this morning so we now have 3 cohorts (7, 8, and 9) all doing standup in parallel. This is making the office really busy but giving it a new buzz. Lots of new faces and personalities around the building.

 

This week is Computer Science Theory Week (zzzz) and also preparing for job applications week (double zzzz).

Coding where have you gone we miss you?. It's not so bad as in preparation for the job application process we have been given a typical coding test that you may be asked to do prior to an interview. We have the week to implement it during our spare time. I really enjoyed this task and it showed that what I'm learning and Java is starting to take hold. It was just a simple shopping basket where you had to add items, update the total for BOGOF items, and apply discounts. I was able to perform the task with minimal fuss and minimal googling and managed to get the methods and tests passing relatively quickly.

A Computer Science degree is a 4-year full-time course so to cover it all in a week is a big ask the course doesn't try to replicate that, however, it does give you some basics of the concepts.

During the mornings this week, computer science theory covered topics of Algorithms and introduced us to Big O notation and how to win quickly at the kids' Guess Who Game. We were introduced to parallel programming it was brilliant to see the performance improvements that could be made in a resource expensive process by adding parallel threads. We were shown a really good video from Mythbusters that shows the concept applied to a Graphical Processing Unit. (Link Here). There was a morning of going through various terms applied to OOP including the 4 pillars again. Much needed refresher and the terms are starting to take hold, I can talk the talk.

A representative from a company called 13 Coders came in on a Monday afternoon and went through a workshop on their current recruitment process and what we might encounter when applying for vacancies. This was an excellent afternoon of practical hands-on exercises:

We split into small teams and did a whiteboard exercise on how we would break down a Monopoly Game into a software program. Trying to do this in the allotted 25 minutes is impossible but shows how you interact with others and make a start on a complex task. Failure was always going to be the result and it was interesting to see how far you could get, and how people would become disappointed that they did not complete the full Monopoly program

We were split into twos and given a real-world ‘pair programming’ task of creating a Linked List with tests in Java, with only 25 minutes to do so. Having not covered Link Lists in Java as yet it was a panic for Google to find out what they are and frantically recreating the concept using Array Lists. With two of you working on the task, it is amazing how fast you can come up with a solution. In the enemy fellow cohort, I managed to get about 80% complete and had the code uploaded to Git Hub with all associated tests passing. Again to complete the test in the 25 minutes would be difficult at the best of times but in an interview environment who knows what it will be like.

We were split into groups and provided question cards and had to ask each other mock code-related interview questions. Please explain what Encapsulation is? What's the difference between Overriding and Overloading? What is Abstraction?

The whole exercise was both off-putting and good fun at the same time.

Next week it's back to coding (Yippee) and moving on to yet another new programming language. Look out Java Script here we come.

Apparently, Java Scrip is the place to be at the moment so am looking forward to seeing how it differs from Ruby and Java. And Yes Java and JavaScript are completely different languages.

Also Happy Birthday CodeClan. It's been a year now since you started training Cohorts. Well done and keep up the good work! Thanks again to my fellow cohorts for another great week with you guys!

(I snapped this pic in a shop window in Stirling. I forgot to take note of the artist and I'm guessing it's New York. I'd like to see it recreated for Edinburgh. Watch this space www.udnydesigns.co.uk)

Thursday, November 17, 2016

CODE CLAN WEEK 8 - ANDROID - LIKE PUTTING YOUR PANTS ON TWO LEGS AT A TIME!

So I'm at the halfway mark (Trumpets and fireworks) 8 weeks down and 8 weeks to go.

This week was the second full project week and the task was to create an Android App on Android Studio and Java.

 

The task I picked was to create a basic ToDo list. Simple in principle when you have pen and paper, but gets hard when you want to program it in Java, and even harder when you add in the Google Android operating system.

No matter I set about the task on the previous Friday and planned out a basic application in a used case diagram and imagined what classes I would need to create. I had been given some notes on how to use list views so put them into practice making a very basic application.

I wanted to add more functionality and have the ability to save any tasks created in the app. I had been recommended a book called Android the Big Nerd Ranch, so after a quick look online it found its way into my Kindle.

On Monday I spent my time adding Java functionality getting to grips with fragments and adding to a basic app.

On Tuesday I added SQL lite made my data persistent and saved it to memory.

Wednesday I spent the day playing with the Android equivalent of CSS and messed about with how the App would look, changing colours, and fonts and adding a splash screen.

Thursday was a big presentation day where each Cohort had 15 minutes to demonstrate their project explain how they had coded it and discuss how they got on.

In the morning I was all set, App ready and presentation-ready and set off from Stirling on the 7:17 am train to Edinburgh… I was then massively let down by Scot-rail at Linlithgow where an announcement came over the tannoy to say because of a breakdown at Haymarket the train would terminate at Linlithgow and could we please kindly get off and busses would be provided in a couple of hours. Anyway long story short and in a John Candy-like movie script a knight in her Shiny Honda came to my rescue and had me on a tram into Edinburgh shortly after (Shout out to the Tiny Irish person... Thank You!)

The Presentations were brilliant again and it really is amazing to see how novice programmers can produce working apps and be able to talk all the jargon in just 8 weeks.

Well done guys, you are all stars each and every one of you. We may just have to start a Company called Cohort 7 and keep working together in February. That is unless we all go work for Ross-Tech. We shall see…

Thursday, November 10, 2016

CODE CLAN WEEK 7 - JAVA + ANDROID = COOL APPS

So week seven we are being introduced to the world of Android... What? Being fully entangled in the Apple ecosystem with iPhone, iPad, iMac, and MacBook this was a bit of a shocker but needs must. Combining Java and Android Studio lets us write our own apps and have them installed and running on (our) Android mobile devices. A quick pitstop to Amazon has a cheap 7" (£34) Android tablet in the post. Thanks, NUS student card, and Amazon Prime.

The week starts on Monday with a standup and a review of the weekend homework. The exercise to create a card game in Java left a few broken people. This was a tough assignment and took a bunch of time at the weekend but I managed the majority of it and managed to get to the stage where I was able to simulate (with tests) the basic Pontoon functionality and compare two hands for the highest value.

The day's lesson moves us into Android Studio and into an Integrated Development Environment (IDE). To start off and keep things simple the IDE is used just for coding Java.

Initially, it's quite a change, but quickly the benefits become apparent: The IDE checks the code on the fly as you are typing and will underline anything formatted incorrectly with red and underline. It also, with the use of the TAB key suggests and auto-completes input text, which speeds up the typing.

Tuesday - had us building our first App as part of a Code along. A simple magic 8 Ball app where you could ask a question and it would give you a random answer. The Java code used Android libraries and we had it running on an Android phone emulator on our desktops. Brilliant to see the process of making a couple of simple screens and having Java code control them on a phone.

Wednesday - we were given a group lab where we were split into teams of 3 and tasked with making a Rock/Paper/Scissors app. The timescale was about 4 hours and as a team, we had to do the Java code and the Android front end to have a working app by the end of it. This was a real high and the 4 hours zipped past before we were ready to present to the class. Some premature high fives in the team had the first play show a draw, the second play another draw, and the third play also a draw... After some minor tweaking and debugging code we had it working in time for the presentation.

Thursday - gave us some more tools in the form of Menus and toasts (popups) that could be used in our apps and then some instructions on how the apps could be downloaded to real Android phones and Tablets.

In the afternoon we set our project task for the coming week. There was a choice of 6 briefs that we could choose from. These were a range of Java and Android app suggestions that we would need to plan, version control code test, and present on the following Thursday.

As this is social night the talk at the pub was on what each cohort was going to pick for their project.

Friday and it's crunch time and we had to announce at standup what choice we are making for our project.

So to sum up week 7. Probably the best and most enjoyable week yet. It's brilliant to be able to make an app from scratch and have it running on a phone or tablet (even though it's the wrong ecosystem... I'm hoping the skills are transferable and I can develop IOS apps too)

Top marks to Code Clan and our instructors. And to my fellow cohorts "GO TEAM!!!" how good are we? getting past week 7 and able to program phone apps!

(^^-- thanks to the unknown artist for the pics, I snapped them on the wall of a local bacon roll shop on Lady Lawson Street. Love the style and content)

Monday, October 31, 2016

CODE CLAN WEEK 6 - THEY PUT JAVA IN MY FERRARI!

So I'm back in Edinburgh for week 6. There was no homework at the weekend so it was a good opportunity to recover from last week's project by not writing any code. This week we are moving away from Ruby and off into the world of Java programming and into a Compiled language.

Monday starts with standup at 9:00 with 21 relaxed cohorts ready to be thrown into the deep end of a new language. Lots more learning and at an even more rapid pace than before.

 

Java was intended to let developers "write once, run anywhere" (WORA) meaning that compiled Java code can run on all sorts of platforms that support Java without the need for recompilation. So it is possible to run it on the operating system on your PC, your Mac, your toaster, or even your Ferrari.

Although I've said 'rapid learning' above Java did not seem as painful as Ruby's day one. The Java code did look familiar, with variables and methods similar but in camelCase and lots of semicolons. The day's lessons were on Classes and Multiple classes and had us building dogs, cats, and bear coding examples. Oh, and remembering to compile the code... Ruby is an interpreted language and does not need to be compiled. Java does.

Tuesday and after standup, we had probably the hardest day yet. Long and so much to take in. A Bear example saw us learning about Array lists Casting and Polymorphism. Arrays in Ruby you can shovel any old thing into them. Java you can't and you have to define their size before you start. Array lists help us get around this.

Polymorphism! Joy! ..this is the ability for something to take on many forms. So if you have a Car Class and a Ferrari Class, the Ferrari can go into a car-shaped memory and also go into a Ferrari-shaped memory. The Afternoon was a lab expanding what our bear from Monday could do and giving him the ability to eat Salmon and Humans, and dance salsa.

Wednesday.. hmmm it was harder than Tuesday! We learned about Abstract Classes and Template patterns and an announcement that we would be making a card game for our weekend homework. So the afternoon lab task was to split into pairs to discuss and plan how you would build a card game in Java. What classes you would need and how they would interact. Sounds easy but is quite complicated to break down into its component parts.

Thursday and in standup, it is apparent that it's not just me who thinks things have ramped up. Today we learned about enums (these are cool!) Try-catch exceptions and some advanced testing. For the lab, we split into pairs again and started to code up the classes of the card game we had planned yesterday. The evening was social night and 3 cohorts from 7 had organized a pub quiz in Code Clan to welcome Cohort 8 and celebrate their first week. This was an excellent night and a great way to round off a week before getting the full homework assignment on Friday.


So to sum up week 6 (have I really made it this far already!) another good and enjoyable but difficult week. Code Clan instructors: top marks. My fellow Cohorts: each and everyone is brilliant and helping massively to make this learning experience something to relish!

Oh and here's a picture (right) I snapped at Edinburgh Haymarket Station. It made me chuckle and remind me of Windows and how used to a Mac I have now become...

Monday, October 24, 2016

CODE CLAN WEEK 5 - TRAINING THE DRAGONS


So I've made it to week 5! It's an early start on Monday morning as I'm staying and commuting from Stirling this week. After a 4:00am drive to Stirling and catching the 7:17am train to Edinburgh Haymarket, I was back in the Code Clan office ready for another week.

This is individual project week and we were set 5 different briefs last Thursday and we had to choose one for a project. The idea is to cement the past 4 weeks' tuition with a full-stack application made from scratch. We were encouraged to pick a project that we could have some fun with and challenge ourselves. Each project brief had an MVP (Minimal Viable Product) of functions that it should do. I wanted a project in which I could make visuals and have a clean neat front end. The choices were:

  • Best Pub application - a week thinking of beer but not getting any… next?
  • Olympic medal application - I'm not very sporty… next?
  • Record shop application - I'm not very musical... next?
  • Expense tracking application - possibly but it can be done in Excel… next?
  • Animal shelter application - you get to train animals… cool!
So I decided on the Animal Shelter but with a twist. My boys and I enjoy the ‘How to Train Your Dragon’ movies so how about a dragon shelter where homeless dragons could be adopted by Vikings?

Friday was an all-day planning day, and we were encouraged not to code till at least Saturday. I started with some blank A3 sheets and sketched out some ideas, then planned my database and tables and did some use case diagrams. I set up a new Trello board to capture my requirements and divided them into Must, Should, Would, Could, (MoSCoW).

I actually didn't get a chance to do any work on it over the weekend so at standup, on Monday morning it was a bit unsettling to hear some people had met their MVP already. Anyway, I had 3 days to take my planning and build my application.

Monday was spent in Ruby and SQL, creating my database and adding my dragon table, my owner's table, and my adoption join table. Each had its own object data created in a Ruby seed script. Lots of Git Adds and Git Commits were the flavour to keep my project code safe. This continued regularly throughout the week.

On Tuesday I carried on and made my controllers and models and worked on the code to simulate the relationships. I achieved my MVP at the end of the day and updated the traffic lights on my Trello board.

Wednesday was a brilliant day where I could add my CSS and HTML along with some graphics to improve the look of my front end. I downloaded lots of pictures of dragons and Vikings from various how-to-train-your-dragon websites and finished up late afternoon with an application I was pleased with.

Thursday is presentation day and following standup, I had the pleasure of going first! My name begins with A and we were going alphabetically through the cohorts. Lucky me!

MacBook in hand I plugged in the HDMI cable and began my presentation. Thankfully I could hear oohs and aahs and my application was well received and had quite a few questions. I gave a demo of my application, showed how I had set up my Trello board, showed pictures of my planning diagrams, and did a brief code walk-through. Applause and that was me done and on to the next cohort.

Each cohort took it, in turn, to do standup and present their application. Everyone had developed their own unique application and wow, most of these people had no coding experience 5 weeks ago and now we're presenting a fully working application that could have real-world uses!

Week 5 has been one of the best weeks, and it was brilliant to be able to code and focus on a full project for an entire week. There were difficulties but the instructors and other cohorts were on hand to assist when I became stuck.

So a massive thanks to Code Clan and instructors. And to my cohorts, I am chuffed to bits to be part of such a brilliant group of people.




Monday, October 17, 2016

CODE CLAN WEEK 4 - FRANK SINATRA

So towards the end of last week, things ramped up with the complexity of the SQL queries:

"SELECT t.* FROM trainers t INNER Join ownedpokemons o ON o.trainer_id = t.id WHERE o.Pokemon_id = #{id};"

The weekend homework was of a similar theme so good practice. This time we had to create a Cinema database, and past customers, films, and tickets to and from Ruby methods. I had the car with me last week so unfortunately, the drive home was dead time. Listening to a Ruby Coding podcast made up for this.

I managed the bulk of the homework on Saturday. The Monday morning 05:43 train to Edinburgh gave me an opportunity to review and add to my homework and move on to practising Ruby in Code Wars

Monday - starts with the Scrum at 9:00 followed by a one-to-one review of the homework with an instructor. It's good to get some feedback on the weekend's work and some pointers on how I could have improved.

Classes begin with an overview of the internet and what is really going on when you make a request for a web page. All good stuff and I now understand what an HTTP: 404 error is. We were then introduced to Sinatra (Frank Sinatra) which is an open-source front-end framework for Ruby. A few examples later the lab was to create a Ruby calculator with a browser front end.

Tuesday - everything is coming full circle and the Pizza app goes online with a code along with the class. Building on the Sinatra from yesterday we combined the previous week's SQL and made a full-stack web application. Pizzas could be ordered via a front end stored in a database and then retrieved. This was hungry work so it was off to Pizza Express for lunch with fellow Cohorts. The afternoon was a group lab where we were tasked with creating another full-stack application for a shoe shop.

Wednesday - and we are introduced to 'Restful Routing' and applied it to our Pizza shop application. This completed the different actions that could be applied to the Pizza shop, by providing Edit and Delete (DESTROY) facilities. An afternoon paired programming lab let us develop our own record shop application using what we had learned in the morning.

Thursday - and following the 9:00 standup we are off into the world of libraries developing an application with many-to-many SQL queries that manage books, members, and how books can be issued. For this, the number of balls being juggled has risen considerably. Having to develop ruby code embedded into HTML and have it managed by Sinatra and having to think about joined inner tables is getting tricky. The Afternoon class is an introduction to Cascading Style Sheet (CSS) with instructions on how to improve the style and formatting of our HTML front end.

In the afternoon we were issued our first week-long project task. There is a choice of 5 projects that you can choose from and we have till Friday standup to choose from.

Friday - 10:00 stand up and I'm going with an Animal Shelter (...with a twist) application. We are encouraged to Plan Plan and Plan on Friday and not do any coding till at least Saturday morning. We will see!

So at the end of Week 4, I'm still really pleased with the course so far. It did ramp up again in difficulty this week, but I seem to be getting used to it now and my brain is taking the strain.

Monday, October 10, 2016

CODE CLAN WEEK 3 - PROGRAM LIKE EFEN REYS

So I have made it to week 3... Go me! last week ramped up a bit towards the end with blocks and enumerators. The weekend homework task was to create a Karaoke bar which was apt as I was lucky to be staying at the Crieff Hydro for the weekend. Sitting on my Mac in the bar with a beer coding had just the right inspiration and atmosphere. 3 objects were created Room, Guest, and Song. All had to interact with each other and it was fun to play with the objects.

Monday's standup was interesting to hear how my cohorts also enjoyed the homework. The Monday lesson began with a bit of thought for the day and a pep talk for the cohorts to make sure we were having fun and enjoying coding. We should program like Efren Reyes who is a famous pool player. When he makes mistakes he takes them on the chin and laughs them off rather than getting all stressed. So when our code is not working don't stress it, just laugh and work through it. A good mental attitude will help us code better.

This week is SQL week, so in the classroom, lessons introduced us to databases. Lots of CRUD (Create, Read, Update and Delete). This class was made easier by creating a Star Wars example database. Luckily for me, Jamie (my son age 8) and I watched The Force Awakens in the hotel cinema the night before so I was up on my Jedi.

Tuesday and the 'SQL' homework was summed up during the 9am scrum by a fellow cohort as 'SQ-Hell'.

The homework was a challenge to format SQL queries on a database to retrieve data with Increasing complexity. The last few questions required multiple inner-joined tables! The day progressed with more SQL and introducing Ruby into the mix. Programming Ruby to push and pull data from the database meant that data used in the Ruby programs could be persistent. So we created a Pizza Shop and started passing pizza orders into the database and removing them to an array of Pizza objects. Both Luke Skywalker and Darth Vader placed pizza orders.

In the afternoon lab, we split into pairs to program methods to recover data on the pizza sales and who placed orders.


The homework challenge was to map out the Facebook database structure and identify 'one-to-one', 'one-to-many', and 'many-to-many' relationships

Wednesday and SQL continues to advance; We moved the database calling logic out to its own class and passed it an SQL query as a string... Then placed method calls on the objects using a block to retrieve the data... Check me with all that jargon in one sentence.

Thursday, following the scrum we get a presentation from Cohort6 of the projects they have been working on for the past week. They are 10 weeks ahead of us and were assigned a team challenge last Thursday. A couple of words come to mind: 'Wow!' they achieved that in a week!; and 'PANIC!' we need to do that in 10 weeks?. The brief was to create a raw JavaScript web app. The range of solutions and functionality presented was brilliant. From Dashboards for Astronauts to Munro Bagging tool, to a Disease mapper. I still have lots to learn. Afternoon and it's back into class and we are still in SQL databases, only this time we have moved into the world of Pokemon. The lesson is to create Many-to-Many database interactions, between Pokemon and their Trainers with a Joining Table. The lab was to create our own databases with Wizards and Magical Items. Thankfully Thursday is social night. Some well-deserved beers and a burrito closed off the day.

Friday is standup at 10:00am and the issue of the weekend homework. I've not had it yet but I'm guessing it's SQL databases with joined inner tables with many-to-many relationships...

So to sum up... another great week at CodeClan => still very challenging => but I have some brilliant Cohorts enjoying the Journey with me => Roll on to week 4, where we get to add an interface to our Ruby and Databases.

Tuesday, October 04, 2016

CODE CLAN WEEK 2 - AND WE ARE PUTTING THE BAND BACK TOGETHER

So week 2 starts with a scrum and then a review of the previous week's homework. I was lucky to have 3 hours of quiet time on the train back to Aberdeen on Friday where I managed to get the bulk of the homework done. It did make me laugh that Jamie my son (age 8) and I were both finishing our homework in the kitchen on Saturday evening. Jamie had grammar and reading and I was making a fantasy model pet shop using Test Driven Development (TDD).

Monday saw us learning about cats, wizards, and wands to model classes and multiple classes... No, wait, that's the other way round. The homework was to continue with classes and model a speedy car (with turbo) and a slow car (non-turbo, Normally Aspirated). The type of engine would affect the car's performance and fuel economy which would be passed into the car object.

Tuesday was a brilliant day of coding along with an instructor to form a "simple" snakes and ladders game. 21 cohorts clattering away at the keyboard churning out ruby code. The game of snakes and ladders turns out to be quite complicated if you break it down into a program. Thankfully Object-Oriented Programming (OOP) simplified it into objects, boards, players, dice, etc.

Wednesday, following the scrum, was a whole day exercise where we were split into pairs and tasked with making our own objects and having them interact with each other. The world was our oyster, so as a team, we decided to put the band back together and form band-related objects including, songs, venues, and gigs. It can get very complicated very quickly but we met the brief of having objects interact with each other.

Thursday introduced us to the 3 pillars of Object-Oriented Programming (OOP) -> Inheritance. Abstraction and Encapsulation. This covered a superclass bird object and its sparrow, duck, robin, and penguin sub-class objects. All had methods quack, chirp, and fly. (except penguin who couldn't fly). Blocks were the final lesson for the day with a small lab. Thankfully this was Thursday's "social" evening so no homework and a chance to go for a beer with the rest of my cohorts. Blocks were hard, so much chat in the pub was discussing coding

beer_array = beer.select{ |beer| beer.type}.count

Friday is revision time and a chance to go over anything we need a refresher on from the week. Oh, and we get issued the weekend homework challenge.

So week 2 is in review. Another big thumbs up to Code Clan, my instructors, and my cohorts. I can't believe how much I have learned in the two weeks. I feel part of something special and really BIG...

Wednesday, September 28, 2016

CODE CLAN WEEK 1

So, I'm in week 1 of a software development course, Myself and 20 others are here in Edinburgh at a facility called Code Clan. We are here on a software development boot camp, and in a fairly short space of time (16 weeks) we will (hopefully) gain a Professional Development Award (PDA) in Software Development.

So far a big thumbs up, great facility, enthusiastic instructors, and 20 other friendly cohorts (my classmates). I am in Cohort 7, which is the seventh time this course has run. Sounds a bit like a space mission. "Welcome aboard Cohort 7, your journey to the future"

Day 1 - was mainly an induction with a meet and greet in the morning along with lots of info and a few icebreakers. The afternoon saw us dive into the Unix command line, Git, and Git hub version control system. I've used Unix before briefly and have experience with a version control system. Getting instruction refreshed my memory and taught me the basics of Git.

Day 2 - starts with an Agile Scrum (standup), we all meet at 9 and discuss what we did the day before and go through any problems we have, and then it's off into the classroom. The classes took us into the world of Ruby, with functions, methods, and conditional statements; a software engineer's buzzword bing0 dream. This leads us to start writing some small programs and later in a Lab exercise start to use Test-Driven Development (TDD) methods.

Day 3 - We started again with an Agile Scrum at 9 and went through the previous day's work. Then back into the classroom for more Ruby (Arrays and Hashes) and some exercises which included the Hulk's superpowers. Apparently, he has a smash power of 100.

Day 4 - I'm getting into the agile scrum thing now. It's a great way to start the day. Morning is spent in class exploring better use of text editors and also applying debug methods to make your code work. The afternoon is spent in labs going through examples and putting into practice what we have learned. we were split into pairs which helped with speed and let you bat ideas between you. This is a Thursday which means social evening and Cohort 6 has laid on a pub quiz night.

Day 5 - Friday, I've made it to the end of the week... Go me! So Friday there are no lessons and an opportunity to go through anything you have not quite understood from the week before. and... you get your weekend homework.

So top marks for Code Clan, the teaching methods, the instructors, and fellow students!!!

Roll on the next 15 weeks...