Showing posts with label Boot Camp. Show all posts
Showing posts with label Boot Camp. Show all posts

Friday, February 03, 2017

CODECLAN - I AM A GRADUATE OF SCOTLANDS FIRST AND ONLY DIGITAL SKILLS ACADEMY

So I am writing this from home in Aberdeenshire, I have left Edinburgh and my CodeClan learning experience has finished... After 16 weeks of full-time study, lectures, homework, projects, and no life I have graduated. Go me! I did it and have a certificate to prove it. I am a trained coder... A certificate from the Scottish Qualifications Authority should also follow shortly. I am one of about 100 graduates from Scotland's first and only digital skills academy. How cool is that!

Now I have finished, the first thing I would say is I miss the routine and the people who have spent so many hours over the 16 weeks living and breathing code and hanging out with my cohorts. Looking back and having come from 20 years in an office environment it was an odd experience at first but I soon got used to it.

I imagine what it is like to work at Google, People huddled around laptops, dressed down on Friday every day, in chill-out spaces, and table tennis rooms. With hindsight, we were fully absorbed into a little CodeClan cocoon and the environment was set up to learn to code and do it supported by your tutors, support staff, and fellow cohorts. It was a brilliant place to study and work.

Before I go into what I have learned here are key some figures from my time:

  • 16 - I studied for sixteen weeks
  • 109 - I created one hundred and nine GitHub repositories
  • 26 - I participated in twenty-six paired programming labs
  • 23 - I completed twenty-three homework exercises
  • 3 - I completed three x week-long projects
  • 104 - I traveled by train one hundred and four times
  • 22 - I traveled by bus twenty-two times
  • 42 - My typing speed increased from 24 wpm to 42 wpm
  • 3 - I have learned 3 new languages (Ruby, Java, and JavaScript)
So what have I learned in 16 weeks? It's quite a lot of hours but quite a short time to become an expert.

So let's start with the Languages:

Ruby is the first programming language we learned. Looking back probably my favorite of what we did learn, it's simple and forgiving, most relaxed and Arrays and Hashes accept whatever you want to put into them. We learned all the fundamentals of a programming language here: Conditionals, Functions, Arrays, Hashes, Loops, Classes and Multiple classes,

Java was second up and a compiled language, we used Android Studio to code in Java. Initially just used the Android Studio interface to go back through programming fundamentals in this new language, then off into programming Android apps that could be downloaded to Android devices or Android Simulator

JavaScript was third and probably the most versatile that we learned and is currently popular. It's not the same as Java which I had assumed before learning it. We used Javascript to add functionality to our apps and the front ends.

I guess also HTML and CSS could be considered a language, and we did some training on both these to make web pages and make them look cool. In addition, we also had some training in Canvas which gives the ability to draw shapes and pictures within an HTML page.

Frameworks

We learned a couple of frameworks, React and Ruby on Rails, which helped structure our code and automate quite a lot of the boring long-winded scaffold coding.

Computer Science Theory

We learned quite a lot of computer science theory throughout the course, and one week near the middle was dedicated to computer science theory. Learning about the 4 Pillars of Object-Oriented Programming (Abstraction, Encapsulation, Inheritance, and Polymorphism… and that was off the top of my head). Algorithms, Computer Architecture, data structures, parallel programming, and restful routes.

Test-Driven Development

Here we used add-ons in the programming languages that would provide test scripts to test our code. The mantra pushed into us was to write the test scripts first before you write your code. So in a separate structure, you would write the tests, have them test what you expect the results to be, and then have the test fail, then write your code to pass the test.

SQL

To persist the data used within our code we were given SQL skills, enabling us to create a database add tables, seed it with data, and have our code interact with the database. reading and writing to the database such that if the code is restarted the data has persisted.

Unix

Right from the start, we had a small intro to Unix, I had used it before but not for a long time so it was a good refresher.

Git and GitHub

This is our version control system and online storage for our code. I have used version control systems before and this is my new favourite and it is free so long as you keep your code open to the public.

Agile

Each morning we had a standup going around the cohort each throwing a ball among us discussing what we had done, learned, and if we had any problems. A great way to start the day and good for a routine. Everyone needs to participate, instructors included.

And many many more things…

So what Now? I need practice. What I have been taught has been frantic and intense. I am not an expert in coding yet, but I have a good or brilliant foundation to improve on.

An interesting Google estimate out there suggests that it takes 10,000 hours to become an expert in something, so I fall quite short of this. But I have notes and a new passion for writing code and learning so I can only improve.

If you are wondering should I go through the CodeClan experience? I say if you have a spare 4 months and like learning, have an interest in coding, and are ok to give up your evenings and weekends and any free time you have for that time. Then Yes go for it.

Would I do it again? Yes most defiantly. It's a real sense of achievement when you finish. There are moments of joy and terror on the way through, however... Joy when you work hard to get something working, and Terror when you are given a task and you have no idea what you need to do or how to do it. This happens over and over again and it starts to become the norm.

>> If you have any other questions ask them below or email me and I will reply.

Thanks again to Code Clan, its instructions, and support staff. And to my fellow cohorts… Well done you ALL Graduated and I'm dead proud. It's been real and one of the best things I have ever done... Wife and Children aside. Thank you!

<< This ladybird book is from when I was a kid in the '70s, and interesting to read to see how things have changed was it my destiny to work with computers. Oh, and I am now fully converted to Mac over PC...

Friday, January 27, 2017

CODECLAN WEEK 16 - THE GLADIATORS HAVE BEEN THROWN INTO THE PIT!

So it's the last week and we are now fully trained Coding Gladiators. The week has become a bit surreal as everyone is competing against each other for the glory of a new job. Some are performing coding tests set by prospective employers, some are attending group interviews and some are having cozy chats.

What was once a close group of 21 friends who worked together and had each other's backs changed into Gladiators coding to death? There will be casualties…

This week is the final project and the brief is we can do anything we want from what we have learned over the last 16 weeks. The only caveat is that we need to show evidence of architectural design and planning, and we have to learn something.

We have 6 days to create something and come back and present it on Thursday in class.

I chose to do a Ruby on Rails app and I set myself a project brief:

“Create a personal portfolio app that I can use to continue to develop my coding skills when I leave CodeClan”

I set my MVP (Minimal Viable Product) to:
be a Ruby on Rails project
be live on the internet (to date all apps we have developed have only existed on servers on our MacBooks)
be a sandbox to add further projects over the next 52 weeks
include a database with data served as API to applications
have Javascript with TDD setup

The 52 weeks is the key for me and although I have learned a huge amount since I started the course it has been a frantic learning process and moving from one language to another and one technique to another with little or no time to practice. What I need now is to practice and practice what I have been taught before I forget it all. Thankfully I have taken a lot of notes and these are backed up by some excellent class notes for all lessons.

So my plan is to create an App (this week) that I can use and set myself the challenge to extend once a week from here on for the next 52 weeks. I will add an additional page per week with some functionality as mini-projects.

I started this on the Friday of the previous week and spent some of the weekends working on it before I was back in Edinburgh for Monday morning standup.

Monday's standup had us discussing how we were getting on in our projects, and how much or how little that had been achieved. As discussed above some had been set code tests by employers so that had been taking priority over the projects.

Following standup, we were back in the classroom for the morning to do a series of tests for the Professional Development Award (PDA). These are done under exam conditions with invigilators. The tests consisted of 4 modules related to computer science, development, and testing. For each test, we were given 45 minutes to complete and were performed online on our Mac books. The tests were fairly straight forward and thankfully I had done some revision over the weekend and passed with flying colours.

In fact, I'm happy to say that everyone passed. The Pass mark was 60%. Go us!

In the afternoon and through to Thursday morning it was all about project time. I however did mix the project with collating my PDA evidence which is due to be completed at the latest 3 weeks after the course is finished. As this is my final week in Edinburgh I thought it was prudent to get it all wrapped up before I left on Friday. I don't want to be finishing things the following week as I have big plans to get on with.

My project went smoothly and I had something to show to class on Thursday morning. I achieved my MVP and had my App hosted on a Heroku remote server. It was up there in all its glory, No Scaffolding, no help from Squarespace, Go Daddy, or WordPress. My app was purely my code. It may not have been as slick as the aforementioned but it was all mine.

I had knocked up a quick presentation to give to the class along with my demo. It went well and following a few questions and a round of applause I was done.

And yeah that was me done literally. I had finished my course. There was a small code test to do on Friday morning but I had been made aware we could do this anytime so I had also done this during the week to get it out of the way. A bit swatty I know but if I can get something done and ticked off Id rather get it done.

So yea that's my 16 weeks over. What have I learned? A lot! probably too much to recall here. I will go into detail on my views of the course and a summary of what I have learned next week.

But for now, I have to hand back my laptop and I will be sent on my way back to Aberdeen. But before I leave I need to graduate and there is one final social night and a chance to say bye to all my new friends.

Massive thanks to CodeClan, its instructors, and its support staff you have been great, very welcoming and you provide a fun learning environment.

And to my fellow Gladiators, go easy on each other, you are all champions. Fight with the bears in the pit rather than each other...

And for me, I get to go home to see my boys...

Friday, January 20, 2017

CODECLAN WEEK 15 - THIS BABY CORNERS LIKE IT'S ON RAILS

So it's week 15 and the penultimate week at CodeClan.

The mood at standup has changed as cohorts are stressing about applying for jobs and the realization that soon it will all be over and we will be cast back into the real world outside cosy CodeClan.

Exciting times ahead but we still have work to do.

This week we are learning about Ruby on Rails, and using it as a back-end framework for our web apps to serve up API data.

Monday 9:00 standup and the talk was about the homework and about how much or little people managed to do over the weekend. It was hard. The task was to create a Guess Who Game app with Javascript React.

I completed some of it but did not get a fully working game. I'd like to say the main reason is I ran out of time which is partly true, but I did get stuck with a bug in serving up my API data (Rails where are you?). Thank goodness for one on one instructor homework reviews!

Lessons start with an introduction to Rails, and in a 2-minute whirlwind of commands, we had a fully functioning website, although just flat HTML it was a website. What was generated in a few commands that had previously taken us days to code from scratch? I can see the power of Rails and instantly like it. Coding is fun but if something like Rails can do the boring bones for you quickly I'm ok with that.

Hidden in the back of Rails are some great database tools and the plan this week is to use Rails as a server for API data. Gone are the SQL queries, and replaced by some simple Rails commands that seem to know what you are thinking before you do.

The afternoon lab was a pair programming exercise to set up an API server of our choice using rails and view data in the browser. Pizzas and toppings were served up as JSON data. Homework was in a similar vein and we had to create another Rails app that could serve up TV show data as JSON data.

Tuesday expanded on the SQL databases by adding multiple tables and creating one-to-many and many-to-many relationships and serving them to an API server. Something that was hard a few weeks ago in raw SQL became much more intuitive in Rails.

In the afternoon lab, we were let loose on our own to create an App of our choice with one-to-many and many-to-many relationships. I chose Formula One which had Drivers who belonged to Teams, that competed in Races at Race Tracks and had Sponsors and Sponsorships.

Wednesday's lesson was an introduction to Authentication on websites. A bit of theory and some practical code along. We added login signup and sign-in with password protection to our API data. If you're not logged in you can't access the data and the server bounces you out. Again Rails with an added Ruby Gem makes the whole setup fairly painless.

Thursday is a big day as it's the last day of lessons. No more code along, no more following the whiteboard, no more looking at what's on the projector, and no more class banter… One thing I have to say is that the lessons have been brilliant and very well executed. In my past life during long classroom training sessions I would have found myself nodding off (usually after lunch in a warm classroom) But I can say hand on heart having attended daily lessons for 15 weeks surprisingly this has not happened, not once.

So Thursday we marry Rails API server with SQL data to a React Javascript front end and have a full-stack app running with security. This is what we have been building up to over the last 15 weeks. I really should emphasize this more as it's a big thing.

So we have a FULL STACK APPLICATION running with ‘RUBY ON RAILS’ Serving API data as JSON to a REACT framework JavaScript front-end website that has security Authentication!!!

Brilliant and I know it might now mean much to some folk but to me Its awesome.

Thursday afternoon we were given a brief for next week's project. This is the final project and we need to present it on the following Thursday.

The brief is brief, to say the least. We can basically do what we want and use what we want from what we have learned. We can expand on what we have learned, build something, or just practice. We need to show evidence of architectural design and planning.

So that was week 15. Another great week, and a few more tools in my toolbox.

You might wonder (I did) why we did not just start with Rails from the beginning and have it do a lot of the coding for us.

But it was about the journey and the learning, I can see what is going on behind the scenes and if pushed could code it all from scratch (I have evidence on my Git hub to prove it --> Link)

Thanks again to CodeClan and their brilliant instructors. And to my fellow Cohort's top marks, you are the best!

<- And thanks to the unknown artist/s that did the pictures above, I snapped them in a shop window in Stirling and forgot to take note of who painted them, I like the style and colours ->

Friday, January 13, 2017

CODECLAN WEEK 14 - SPEED DATING WITH POTENTIAL EMPLOYERS

So after a couple of weeks off, I'm back in Edinburgh CodeClan for week 14. There was much excitement to see my fellow cohorts who have now firmly become good friends.

It is tinged with a hint of sadness as I know that we have only two weeks left after this one and we will all be off on our way back out into the real world.

9:00am standup had stories of some that had coded over Christmas and the New Year and some that had not and feared that they had forgotten everything. I was between the two as I had done some work towards the evidence for my PDA. It needs to be submitted soon.

Monday classes start with an introduction to frameworks. We will be learning two frameworks over the next couple of weeks. React for Front-end Javascript and Ruby on Rails for the Back-end. Frameworks are intended to add more structure to the code. Using React this quickly becomes apparent as code and its component parts start to fall into place and code becomes easier to manage. Less Like Jekyll and Hyde and no more Spaghetti.

So this week it's React and in class, we have a couple of code-along sessions where we build a Comments App and a Piggybank App. Code-along sessions are fast-paced where you follow the instructor at the front of the class but thankfully there are instructors at the back who jump in when something goes wrong. Normally missing commas or capitals where there shouldn't be.

Homework for Monday was to recreate a container element from a movie website and have the latest movies showing in the UK displayed in a list. At first glance, it looked like a big ask but applying what we learned with React each element on the container could be broken down into individual parts with their own .jsx files and it quickly came together into something that resembled the website we were copying.

Tuesday starts with a step back. React was kinda hurled at us yesterday and chucked into our code. New strange functions were doing things for us that made life easier but had no real idea what, when, or why they were doing things. The first lesson is a review of the lifecycle of React. We add a number of log messages that are triggered by each of the functions and can be viewed in time order in the browser console window. Very powerful and great way to see what is actually happening.

The next lesson of the day is to start adding API data back into our apps. We used the Countries API (seen this before) to pull data from a third party and display it in the browser. In the afternoon we had paired programming lab where we were set the challenge of using the Netflix API to pull a list of movie titles for a chosen Actor and display it as a selectable list in the browser.

We managed it within a couple of hours given to us and it was back in class to be given the evening's homework. Yippee it is another new App, this time to pull the Top20 singles from an iTunes API and display them in a browser container. (…Yea that's the 3rd new App we have created today. It was a long day!)

Wednesday solved a problem that we had been having in that all our Apps had been single pages, but as yet with React it was not apparent how to make multi-page apps. React Router solved this and in a code along we had a way of fudging React to create multi-page Apps. I say fudging as it was not quite like what we had done previously in a restful route way.

Homework was to create our own app of our own design using React and React Router. This time we were given free rein to make whatever we liked so long as we used what we had learned. I made an App that had a choice of 3 doors and displayed a picture of a fluffy bunny if you got the right door and a picture of Jack Nicholas's “Here's Johnny” if you chose the wrong door. Basic but all the magic was behind the scenes.

Thursday was a big day for Cohort 7 as it was Speed Dating Night, or should I say Speed Networking Night with potential employers. Code Clan has 85 (and increasing) employee-partners and on Thursday night 12 who had vacancies came in to meet us with a view to potential employment. A bell would ring every 10 minutes as we went around each employer. Meet-greet, find out about the employer and sell yourself 12 times was fast and furious but in the end good fun. Two companies stood out for me: Horisk in Cuper and iDesign in Dundee. Both were really friendly and sounded like forward-thinkers with interesting projects and products. If only I could make Dundee closer to Aberdeen. I guess when Aberdeen Bypass opens they will become closer by car. I did meet one contact with a possible vacancy in Aberdeen so fingers crossed.

Friday's standup at 10:00 was mainly about how much we had to learn this week and prepare for the employer meet-up. React is a lot to take in in just 4 days. Oh, and I forgot to mention we had a lesson on converting JavaScript ES5 (the old version which we have been using and learned) to ES6 (the new version which we can use from now on) Many many differences but thankfully ES5 code can run with ES6.

Weekend homework is to recreate the Guess Who Game in Javascript with React. That's it? that's all we were given. Short and Sweet MVP. I'm writing this on the train on the way home to Aberdeen for the weekend. So best get on with it…

Huge thanks again to CodeClan and instructors and massive well done to my Cohort 7 classmates you did brilliantly at the Speed Dating and I'm looking forward to seeing your Guess Who games on Monday.

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.