Showing posts with label Coding. Show all posts
Showing posts with label Coding. Show all posts

Saturday, March 25, 2017

HOW MUCH IS MY APP WORTH?

So I am developing my own software application. It's a medical app to help people with certain conditions. It's early days and I think it is possible.

I can't say exactly what it is but it could be mobile for use during the day, and an online interface for a more detailed view and review later. It had me thinking about how I would monetize it.

We buy the occasional app from the App Store for my boys, normally I get them to aim for free apps, but every so often there is one they want for 79p or £1 something. I think the most I have been persuaded to pay was £3.99.

Free is fine but it normally doesn't give all the functionality or has some features you want to be locked in till you pay an additional sum, or you are force-fed adverts with a banner or a video on a countdown timer. I don't like these so free is out.

If the default is 79p this seems ok, but how much would it really be worth at this price? A quick Google and the condition I am hoping to help people with affects 1 in 25,000 people. So in the UK, there are roughly 64 million people, which means there are possibly 2560 people that I could help.

This makes my app worth about £2000 in the UK assuming all want to buy in. But that is not realistic. If I am lucky I may get 5% of people buying my app which would bring my app value down to £101.12… How much?

I calculate it would take me about 1000 hrs to develop, and that value would give me an hourly rate of 10p an hour. Time to put the brakes on and have a re-think. If I reverse the calculation instead it may be better.

I'd like at least £15 per hour, So that would make my app worth £15000, so I would need to sell nearly 19000 apps to make it worthwhile at 79p.

Oh and I'm also forgetting I won't get all of the 79p, the app store will take 30% so that's it down to 55p, which is an app value of £70.40. That's even less! I would need to sell 27000 copies more than the people in the UK that would need it.


I could put the price up, and cost it per user for the development. Sticking with the 5% take-up of the people with a need in the UK which would be 128 people. To cost my app it would make each copy cost £117. And add on the 30% app store fee, which is up to £152 per user. Again I'm not sure this would fly. I need to think of a different way to monetize my app.

It's an interesting subject and I have only just scratched the surface here, I was at a tech meet-up last week, and this was one of the hot topics discussed. Which was how much is software worth. The feeling was that the perceived value of software is much lower today than it was a few years ago. This might have to do with the App Store and everyone buying some sort of software at the 79p and carrying it with them on their phone. Anyway, it's something that I am thinking of at the moment.

It's just a short one this week. I have been super busy. My first commercial website is almost ready to go live. I have gone through a few iterations of change with the client which has made it more polished and I am pleased with the result.

So thanks for your support and reading my posts. Living the dream now. So I have had a few more work requests come in this week and fingers crossed I will have some mega exciting news for next week.

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

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)

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