Monday 28 August 2017

Makers Week Four: We Are Mids!

Last Friday was the graduation of the June cohort which means we move from being the junior cohort to the middle ones. Their group was unusually small in comparison to all the other groups with 10 students. The cohort average tends to range around 20.

This was an extra sweet graduation as I had gotten to know some of them, especially my super awesomely supportive mentor. Each group chooses to become mentors of the lower cohort if they want.

These final projects were given 2 weeks to complete,  sometimes with languages and testing frameworks that they might have to learn from scratch.

ZOMBIE PAINT


Zombie Paint is a homage to the classic Microsoft Paint of which was announced that they would be ending this year.




The group attempted to make everything from scratch, whilst fully implementing industry standard testing.

Check it out! - https://zombie-paint-902ce.firebaseapp.com/
Githubz - https://github.com/mihobo/zombie-paint


PERCEPTICON


The perception is a headline quality checker. With this day and age of "15 ways Buzzfeed makes pointless headlines" and straight up fake news prevalent, this app checks the quality of a headline and approves or disapproves it.


They collected data from thousands of headlines to find similar patterns from API's of  various news organisations.

Have a play! - https://the-percepticon.firebaseapp.com/
Githubz - https://github.com/tbscanlon/percepticon-frontend

Both projects were really inspiring and it will be hard to believe that my cohort will have to do something like this in 2 months time. They both had tons of problems and struggles but managed to complete the task in the end!

Graduation projects will be uploaded to the Makers youtube channel, and you can check out some of the older ones...


RUBY RUSSIAN DOLLS


My three weeks living as a Londoner has come to an end and to be honest it has everything I expected. I did live in London for a few years after graduation so this wasn't any culture shock.



At times its lonely, other times its great going to events, but all in all its an expensive affair! It is pretty awesome being able to catch a bus straight there, getting there early hasn't been a problem.

Next week, which is this week because its Monday the blog day, we're moving on to do some stuff in Javascript. In learning coding by myself I focused on JS so I should be ok, but its funny how much I've forgotten already. Ruby is so tidy and minimal, and javascript has brackets all over the place!

One of the cooler things I learned last week was how everything in Ruby seems to be an object, within an object... within another, until your reach the Basic Object Class. Then above that? Well that's like asking who made God? (Don't ask that its confusing)


Pretty interesting to see where everything comes from. I probably haven't even explained it properly/correctly, check out this post for more details...

Talk to you guys next week dudes, happy coding.... peace out London, twas a blast!

Liverpool Street Stationz and dat!

Monday 21 August 2017

Makers Week Three: Scissors, Paper, Rock!

FLOG IT!



I just finished up my hipster haircut to make me even more "Shoreditch" and while waiting I whipped out my laptop tried to do some coding. Its so cool that you can do this and it makes any queuing that involves the ability to sit a pleasure. I am a Brit after all which means I'm very good at queuing, and this just adds more to that skill.

Shoreditch hipster art stuff and dat

Today we were checking out something for Ruby called Flog. Gem install it and run "flog --g --a [folder you want]" and get your code ranked! We're looking around 15 or less for classes, and under 6 per functions. Newbies should go for 30/10. As you can see my takeaway code did not do so well lol. A big sign of this is that the code is so much bigger in this class then any other.


The main reason we want this is to allow testing to be more efficient, as one change wont be effecting tons of other tests. Its cool to see this represented somehow, its pretty easy to go nuts when making something and not think about good practices.


CODE IS RAMPING UP


Last week went by quickly. Much more complexity was added to our learning as HTML,  and another testing framework called Capybara was thrown in. We learned about the server/client relationship and our week task was to make a web app Pokemon style. 

With complexity ramping up, so does my diagramming!

Unfortunately, I think I was way too casual that week and ended up spending four days setting everything out, then freaking out about not having enough time left. I barely got to the bit where we type in your name.

This freakout was mainly because I had discovered from the students above us that we would be trying to make Rock, Paper, Scissors as a webapp and I knew I hadn't enough knowledge to do this.

The weekend challenge was indeed this, and I had to spend some time looking through the week challenge to work out what to do. In the end, ran out of time. 

Lesson learned. Lets not do that. Especially when we will be getting more things thrown at us at an exponential rate, its really bad to fall behind. Reminds me of missing a few Math AS Level lessons back in the day, when you finally do turn up you are completely lost.

Important to let off some steam with some table tennis madness!


SCISSORS, PAPER, ROCK



Today our coach showed us that she knows her shit by doing our weekend challenge in an hour. It was an amazing sight to see how she worked and how a pro developer builds a program from scratch.



Maybe out of pure boredom and/or genius she threw a curveball at us. This for me highlighted how code can extend problem solving into the realms of thinking out of the box.

So a traditional way of making this game would have the following steps;
  1. Input your name
  2. Input your choice
  3. Make the computer randomly choose. ["Rock", "Paper", "Scissors"].sample. Sample randomly picks from our list here. 
  4. Compare your choice and the computer's and print out the result.
But in true and totally unnecessary form our coach did this;
  1.  Input your name
  2.  Input your choice
  3.  ["You win!", "You lose!", "Its a draw!"].sample
  4.  Computer makes the result a reality by choosing the relevant option.
This kind of backwards way of thinking really shows how solving problems can be just as effective by giving the illusion that it does what we want when it might not. 

Like why not pick the outcome first? Who says we cant? Maybe this is how gambling sites work to make sure that they get the correct probabilities that they say they have.

Anyways I thought this was a cool thing that she did, I never really thought about doing it in that way. Oh and of course, every step was done with TDD testing all the way.

This week we are going to be working on using a database in a webapp, seems pretty heavy. Should be some interesting stuff... Until next week, have a great week dudes!

When the cat says no coding allowed...

Monday 14 August 2017

Makers Week Two: God of Cookery Takeaway

OBSESSIVE TRAVELLING PROJECTS


So week 2 is done.

So far our projects have been making programs on London Bikes, Airports, and Oystercards. Really seems like the guy who designed them for the course really needs a holiday!

When we say programs its not the polished snazzy looking ones you have on your computer. They are things you run in a terminal with only words to show for your efforts and it they look like they have been made in 1986. I will show you down below...

Learning everyday with classmates that want to improve creates an amazing environment. There is a real sense of camaraderie in our group. With these boot camps and the industry as a whole, it feels quite likely that most people will be introverted, but our group is outgoing and has brought those to come out of their shell.



QUALITY LEARNING, NOT QUANTITY


One of the most recent things that I have found out about myself is my style of learning. Finding a lot of examples and wanting documentation seems second nature to me. But I hadn't thought about the quality of learning I am doing by doing this constantly.

When I do this and find an answer to what I want, am I really understanding fully what is going on? Maybe not so, and even worse because of this I may think I am.

My amazing coach is teaching me to be more thorough (which means frustratingly slower) with my learning. We have extra walkthroughs with our projects that give us more literal answers and we are encouraged not to use them, which is really difficult!

Questions to her adhere strictly to her belief of process orientated learning. This is very hard to do when providing a straight answer is easy and satisfying, but in the short run it achieves less. Asking her questions can be frustrating but I understand and appreciate this style of teaching, and am convinced that this what teaching should be.

Asking questions to her will result in the following things happening;

  • A question will be asked back, to make us think more deeply about the problem and possibly the solution.
  • The question will be reworded to make it clearer on the intent.
  • The question will be deemed irrelevant or inconsequential.
  • If it is deemed worthy of a straight answer, one will be given.
Currently I feel a bit lost, because since learning coding my process has always had a "do more exercises" mentality. This must change to a more methodical approach. It seems overwhelming as there is so much to learn.


My coach looks a bit like Daria, but much more upbeat and funnier!


GOD OF COOKERY TAKEAWAY


Every weekend we are set a weekend challenge. This weekend we had to design a takeaway that has a menu, allows for selection and then sends a text to confirm the order! Its cool to have the code do a "real-life-thing"!



My takeaway is inspired by Stephan Chow's movie God of Cookery. He is famous for making the satirical football movie "Shoalin Soccer". In the movie he is a corrupt food critic that meets his end to his career, then becomes a monk to find his inner chef!  Sounds ridiculous? Oh it is, and that's what makes it good. Not that I'm for promoting this kinda thing but youtube might have the whole movie up there...

The food in the movie is super high quality, literally God-like standard so if you wanna buy a dish from my takeaway you'd better have a lot of dosh! 

Here's my program in action!

First we will be using the terminal to run our thing. Ruby should come with macs by default. You can type in IRB and that will open up a sandbox that you can play around with. Here I am using an alternative called Pry. It has extra features and its more colourful so its better for showing.

Once we're in, first thing we do is require our files. This is necessary to load everything up. Once they're "true", we activate the program by making a new takeaway. Here we call the new takeaway, "takeaway", but it can be any other name.


Next thing we do is find out what other functions there are. We do this by typing takeaway.header. 

Header outputs these other options. We can activate them by typing takeaway.[function]. Note that if we used another name other then takeaway, we would use that name dot function.


Lets see the menu;


Cheap right? The Buddha Jumping Wall is half price this week! Lets order some stuff...


Notice that in the header function the choose_dish function has brackets. We can pass arguments into those brackets and here they represent the dish number, and the quantity.

Right, lets checkout. That should be enough food.

So like the choose_dish function, we have some arguments to pass in. These represent two codes we were given by Twilio to link them up with our program, and the third one is our phone number.



Here I've hidden my code a bit. Point being that manually having to input these codes make sure that when we upload our project to github we don't give all our details away there too! We could totally hard code these in and not need to have a user input.


And voila! We get a text with our order. Note the time in our message is delayed by one hour.

This project was really cool because it had this at the end which interacted with our real phones! The code for this project is here if you are interested, I wont explain it for now. Its pretty awesome that I've come this far that I can do this without much help. It was also cool seeing my fellow cohorts manage to do it too and its interesting to check out the variations we have.

Week 3 looks like its something different, moving onto making a web app this week. Should be good, I'll keep you posted next Monday, happy codings ppl!


Monday 7 August 2017

Makers Week One: Everything Expected & Moar

ONE WEEK IN AT MAKERS


Probs gonna be a short one today, I'm pretty tired but its Monday which means blog I must!

Its been an exhilaratingly stressful awesomely frustrating week. Weird combination of adjectives? Yep! One up, one down. Except the downs are good too.

One of the first things emphasized by our amazing coach was that the process of learning was what it was all about. The completion of the tasks was not the priority. This might seem strange to the traditional way of learning with grades and exams,  but 20 previous cohorts with a 90% employment success rate says otherwise.


Its nice to be in an environment of learning showing us first hand of eduction should really be like. My fellow cohorteers are really awesome amazing people. From moving to a new country to do this, a fresh graduate, stock broker, bankers, ex start-up owners, accountants, working in Vietnam as a westerner,  and an ex poker player... the list goes on. Amazing stories, and amazing openness to accepting the knowledge that Makers is giving us.

Nothing distracting in this high-octane learning environment. NOTHING!

On top of the skills we learn off our coach, Makers also takes care of our mind and body well being as well. The oddly (but probably coolest) titled "Joy Coach" of Makers meet every day for some meditation and occasional yoga. It is important that she knows no coding whatsoever. Both things I would never do, but I am trying many things out now. At worse its a nice very light calming mid afternoon nap to keep us going.


PAIRING IS SHARING


Much of the Makers course is influenced by researched methods of learning, much from the infamous Google "new age" way of working. Freedom to set our own times is pretty abundant here, we have a schedule for workshops and activities but nothing is strictly set. As long as we attend and try and complete the weekly task then its ok, we're all adults here.

Jokes on YOU we're using Ruby we don't have em  BRAH!

There is a lot of research to suggest the benefits of pairing. Pairing is where you code with one other person. In our instance, we are given a weekly task to do and we work on it changing partners everyday.

There are quite a number of benefits to doing it this way;
  • If you zoom ahead then the next day you will have to help your partner catch up which means plenty of explaining of what you did. This is great for the guy who is behind to learn, and great for the ahead guy who has to explain things which is great for clarity.
  • You see different styles of coding, thinking, working. You can learn off each other and improve bits here and there.
  • Its good bonding time, and makes coding social! (Wow!)
However, I do wonder outside of a bigger group that can swap around like this if its that good. The swapping kinda evens out the skill level overall so it benefits everyone. But if there is a pairing where one is a lot more advanced, it is hard to not be intimidated and/or take the back seat on things.



HALF UR CODING TIME WITH TDD


I talked some last week about finding about this horrible thing called TDD. Test Driven Development was something that is an industry standard way of developing something methodically.

As I love to make things, and am impatiently so, as the title says this doubles the time it takes to create something because you are creating a test and then testing each step of the way.

Like I said before, the syntax is rather different to what we have been learning so far which is rough. Our coach said that it feels bad as our coding is at a certain hight level, and TDD is super low, so the gap is big. Strangely enough it seems bigger for me as I have previous coding experience!

But maybe one day I will love it. I doubt it, but who knows? I'm here now innit!

I'm interested to see how my motivation keeps up during these weeks. Its fair to say that since starting this year, my motivation has probably dwelled like 2 times, both mainly because I finished my youtube notetaking and basically didn't know what to do. Here is an interesting video by MPJ who is a developer for Spotify talking about motivation (whilst getting lost?).



Hmmm this was "short" eh? lol. Talk to u guys next Monday, have a fantastic week!