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)