Week 8 & 9 – Angular & Makerthon

portablejim_programming_addictive_sign_clip_art_25605

It’s hard work being seniors at Makers.

I remembered once describing Maker’s experience as if I am an addict hooked on code, and the coaches are the dealers who have the power to unlock or withhold the source of knowledge that gives me so much pleasure yet tremendous pain at the same time.

Too little leaves you wanting for more, too much you can possibly overdose on code/ frustration that leads to self immolation deep down in a rabbit hole.  It’s tricky keeping a fine balance and I gotta say that Maker is as close to getting it perfect for the first part of the course.

I have long being warned by my mentor that being a senior is a lot different from a junior when you have all the love and attention from the coaches and you feel like you are learning loads everyday with a very structured weekly challenge while pairing consistently. The good old days of being a junior.

Makerthon

Not until we finished Angular week and progressed onto Makerthon – when it was the first time we were split into teams of 3-5 people to work on our own ideas, did I get the gist of how it felt like developing software in the real world.

For two and a half days, we had to research, plan, execute and present a MVP (minimal viable product), either a web or mobile application to fulfill whatever we set out to achieve with an initial idea.

SO SAFE

After two rounds of pitching ideas, filtering and final vote, I was honoured to be part of So Safe team to develop an app that can send request and receive confirmation to loved ones at times of crisis – especially when zombies or Godzilla could be threatening mankind’s survival.

We were ignited by a rush a adrenaline mixed with a sense of uncertainty.  The possibilities were limitless, yet there was no structured path or solutions telling you what to do.

It was definitely time to step out of the sandbox.

MVP Planning

MVP planning

Kicking off the project, we unanimously agreed to prioritize one single key feature as our MVP over having too many features / biting off more than we could chew.

The ultimate goal of the app is to enable user to send a request ‘Are you ok’ to friends, by clicking on a giant red button.  Friends would receive a request to confirm their safety, by clicking on a green button ‘I am ok’, which will then send a response back to the user.

Addition features that would have been nice to have included multi-users, a log-in page with user name & friend’s name, and a final confirmation page that is shown when all friends have confirmed ‘I am ok’.

Technology

After identifying our user stories, key decisions were made to develop a mobile ios app considering that people would most likely use a mobile app on the go in case of ’emergencies’. Thank goodness for mobile technology – I seriously don’t know what people used to do back in the days during emergencies, send a pigeon / fax?

The technology stack:

  • Ionic framework
  • Javascript
  • Angular (interactive frond end)
  • Firebase ( backend realtime database)
  • Karma (Angular testing)
  • Phantom (Angular testing)
  • Protractor (feature testing)

 

Screen Shots

Here are some screen shots of So Safe app, it looks simple but definitely to the point:

It was daunting having to research and pick up two brand new technologies that we have never used before, ionic framework and firebase, while figuring out how different components would fit in together.   I don’t know how many times I have to describe feeling out of my depth to then realize how little I knew what that meant exactly.  The threshold of depth is infinitely unknown.

Thanks to implementing an iterative process from the get go and organizing our git workflow with waffle and a rotational pairing schedule, we managed to pull off our MVP plus most of the additional features!

We couldn’t be more pleased with what we managed to do in 2 and a half day, seriously.

Not to mention I was completely blown away by the creativity and quality of work that each team had produced at the project presentation.

Feeling proud and humbled at the same time, I am ever so grateful to be working along side my fellow makers who never cease to amaze and inspire me since day 1 at Makers.

Gratitude

Everyday when I look out of the windows, I am reminded of how lucky I am.

FullSizeRender (1)

Week 7 – Becoming Seniors + Ruby on Rails

OMG-GIF_2

Need I say more about becoming seniors?

O.M.G – It is awesome! 

Rejuvenated by the lab week (mostly caught up on sleep), week 7 kicked off with a bang! It was lovely meeting the enthusiastic but slightly nervous juniors and introducing ourselves while eating their yummy (leftover) croissants for breakfast.

Welcome to the Maker’s family and good luck everyone!

Ruby on Rails

How does one describe Ruby on Rails?

For those of you new to coding, Ruby is a programming language and Ruby on Rails is web application model-view-controller framework written in the language Ruby.  Two different things but both very powerful.

Having learned to develop a basic web app using Sinatra (app framework) & Datamapper from week 3 where every single feature was manually built, learning rails makes you feel like you just walked out of medieval times with stone hammers straight into the future of automation where things are miraculously done for you.

We call it rails magic. 

For less than 10 lines of code, entire functional backend for user sign up, sign in, sign out page with password validation and alerts are created for you with the gem Devise. My jaw dropped when I realized how just 3 weeks ago, it took us hours to built the same thing manually in Sinatra.

I finally understand the phrase ‘convention over configuration’ – Rails is a perfect example of an incredible conventional framework that does a lot of work for you in the background as oppose to tailored configuration from the get go.  It is especially powerful for prototyping a minimal viable product in a short span of time.

Some people hate it, some people love it.  Isn’t it incredible even for us juvenile coders, we are beginning to form our own opinions?

Inspiration of the Week

As much as we are (almost) completely sheltered form the rest of the world while in coding universe, a lot had happened over the past week, including the tragedy of terrorist attack in Paris.

On notable tender moment occurred when my pair partner told me that friends whom he had sought advice from for a potential start up idea were lost at the Bataclan attack.  We fell into a moment of silent reflection and carried on learning rails with more motivation and conviction than ever, hoping that one day we can realize the idea as a tribute to the spirit of love and freedom.

Pairing of the Day

Well, this ‘family portrait’ is the prefect example of how my awesome fellow makers are always game for any fun and crazy ideas I suggested.  Here in the photo features Mateja as papa bear, myself as mama bear, Aaron as the baby bear, and Dovile as the super governess Mary Poppins.

I love you guys!

family portrait

Week 6 – Lab week & Senior’s graduation

Maker’s Academy has its own gravity defying sense of time and space.

One week of intensive learning feels like taking a trip to the moon and back to another universe, and play it on repeat for 13 weeks straight.

In the past week,  we have learned our second language, Javascript and built an interactive thermometer with JQuery.  Most of all,  we witnessed the future of ourselves when the seniors graduated with their amazing final projects, introduced by Tansaku, aka Madame Ruby.

IMG_8109
Tansaku as fabulous Madame Ruby

 

I was particularly touched by what Tansaku said about why he traditionally dresses up in a costume at graduation – to honour the spirit of Makers’ grads for having the courage to leave everything behind and put themselves through an extremely uncomfortable process to learn to code in 12 weeks.

I could not agree more.

As if time had suddenly slowed down, we juniors gushed over the awesome final projects produced by the seniors, many built in technologies or languages that the coaches aren’t even totally familiar with.  I was floored by an app developed to help people discover new music through shared interests that used  Neo 4 J, a graph query language to visually represents database. How cool is that!

It’s terrifying to know that in 6 weeks time, we are going to be up there showing off our own final projects in front of friends and family.  You can’t help but to wonder if it’s at all possible, but you go ahead and do it anyways.

That’s Maker’s spirit.

Lab week Gratitude

Lab week / hiring week has been rumoured to be the low point for many past makers as the seniors prepared themselves for the ‘real’ world and the juniors get a chance to catch their breathe and explore / experiment with whatever technology they fancy without any structure.

For me, it was the perfect time to rebalance and reflect on my journey thus far and playing with the MEAN stack.   We even had extended happy hours (not that kind) when people get together and made sweet music while playing giant Jango.  Yeah I know, it’s a playground with no age limit.

Learning to learn is not about keeping your head down and going at it in solitude. Though having a plan is a good thing, I have learned not to beat myself up so easily.

Most of all,  it has been most rewarding to recognize my own fear of scarcity mentality, aka. not doing enough, not learning fast enough, not good enough.  By sharing it with others, we can change our mindset towards one that is full of abundance and sufficiency.  Like Dana said, we can make friends with time and ourselves.

I am enough. 

All the hearts go out to September grads, and welcome Novemberites!

Week 5 – Day 21 – Kick Start your Developer Career

Makers Academy is a place of transformation.  Most people come as career changers, myself included, aspiring to graduate with the super power of coding as a junior developer.

My first choice for super power will always be flying, but I guess I can make do with programming as second choice for now.

We had the honour of having Najaf Ali, founder of Happy Bear Software, who gave us an incredibly insightful lunch time talk on how to Kick Start a Developer Career.  As with most things in life (with a few exceptions), it’s better to have somewhat of a plan when it comes to building a new career than running around like a headless chicken.

I like plans since I never had one.


WRITE | SPEAK | NETWORK

Share the LOVE

The tech community is very social.  One thrives in such social space by connecting with people and sharing knowledge.  Ali stressed on the importance of building a professional profile and having a presence in the community that will eventually compound overtime.

  1. Writing blogs / articles– get into the habit of exercising your writing muscles by writing blogs or articles to share technical tips/ knowledges.  It’s important to show your personality and have a voice.  Your writing can surprisingly be a good point of reference and connects you to potential opportunities.  Practice makes it better.  Just because you know doesn’t mean everyone else knows.
  2. Speaking at events / Conferences ‘No one ever died from public speaking, and 90 % of talks at conferences suck so don’t be afraid to suck too’ , Ali reassured us. Senior dev usually grow blind spots in explaining something technical and junior dev often communicate better in plain english.   Start off with giving a short talk on Test Drive Development?
  3. Networking‘Don’t be afraid to meet new people’.  Attend tech industry meet ups can be helpful in connecting with like-minded people in the community and potentially create soft leads.
  4. Side Projects – Your pet projects, something simple and manageable that’s completed and potentially open sourced will be the best indicator of your skills / interest to potential leads or collaboration.

Dream Job Assessment

WARNING: Don’t be the only technical person on the job!

Know thyself is winning half of the battle.

The definition of an ideal job may be different from one person to another.  Take some time to answer the following questions before diving into the sea of job applications.

What things are important to you?
  • Job / financial security ?  —>  Big company vs. start-up
  • Remote working?  —> 9-5 conventional working hours vs. remote working style or part-time
  • Senior dev as mentor ? —> Established team with senior dev vs. small teams with   more responsibilities
  • Practice of Test Driven Development ?
  • Open source contribution?
  • Opportunities for attending conferences / personal development?
  • Other aspirations such as social responsibility?

5 Steps to Project Manage Your Job Search

Use a project management tool, such as Trello to map and keep track of your job search process.

Step 1: Collect Leads – start with 20-30 opportunities
  • In-bound leads
  • Referral leads
  • Job boards
  • Research
  • Recruitment (least desirable option – don’t ever go through recruiters)
Step 2: Rate Leads
  • Rate each leads against the dream job criteria that you have just mapped out
Step 3: Qualify Leads
  • Start with applying to anonymous leads and save your dream dream jobs for later application round
  • 4-5 Application of qualified leads at once
Step 4: Application

State clearly what you are after – put “Available for full time position as Junior Developer” across first line of your linkedin profile and CV.  No one has time to guess what opportunities you are looking for.

Tip 1 – Keep CV short and relevant to developer experience, 2 pages maximum. Keep all previous professional experience on Linked in.

Tip 2 – Make sure your github, blog post, linked in and twitter links are clearly stated on the CV

Tip 3 – Start the CV with 3 links – this is what potential employers are first and foremost interested in. Since they don’t know you, they will have to assess what you can do blindly.

  • Side project
  • Code Sample
  • Screen cast walkthrough of code sample on technical decisions
Step 5 : Follow up

Be PERSISTENT

  • Have a follow up schedule every 2 weeks until you have been outright rejected. If so, happily move on.

Negotiate Negotiate & Negotiate

You should never accept salary as a junior dev in London lower than 30K.  Do not ever settle on the first offer you receive, be patient and get back to them after a week or two while look for other offers for more negotiating leverage.

Ask for 36K and shut up about it.

You won’t get what you haven’t asked for and you never know that you might make 3K more with an email even if you settle midway.  6 K means nothing to the company financially who are looking to hire junior dev, but the difference will kick start your career at the baseline.

Know that you are worth it.  


Thank you Ali for such an invigorating talk that demystified the big scary topic of building a developer career.  It definitely helps to have such practical and useful tips to navigate the painful process of starting out not knowing where to put your feet.

Perhaps in 7 more weeks there will be a follow up post on the actual implementation of the above mentioned strategy.  But for now, I am happy to huddle in the warm and supportive environment of Makers universe until the winter comes.

Week 4 – Database

200

This is how I feel at the end of week 4 working through the challenges of creating a simple bookmark manager.  We had to implement functionalities such as creating/saving links with tags and most importantly, working with database.   I must say learning about database is fascinating in understanding how data is managed especially at the incredible rate it’s being generated.  However, the amount of information and content we are taking in everyday can get overwhelming as it progressively become more challenging at the end of the week.

I wished there was a brain ambulance on stand by ready to whisk me away.

This week I Learned

  • Relational database management vs. No SQL
  • Core concept of CRUD ( Create | Read | Update | Delete ) that refers to the four major functions used for accessing and maintaining databases
  • Navigating postgres (a relational database) in Structural Query Language
  • One to many vs Many to Many relationships
  • Linking database to Models via datamapper
  • Deploying the web application on Heroku
  • Concept of encrypting password using BCrypt

If it’s not already midnight, I could have probably saved all the above achievements in a database.  Unfortunately (or fortunately), I need to perform some ‘auto-migrate!’ task to make room in my brain for learning our second language, Javascript.

Token pairing of the week

FullSizeRender-3

Mahmud (pictured above) had warned me about pairing with Andrew (below)… when I write bad code… :p

Slack for iOS Upload

Week 3 – Day 15

Holly smoke, it’s the end of week 3.  Autumn came and leaves changed colours in purple and red.  Time really flies when you are fully immersed in learning, reading, thinking and making code everyday.  There is barely enough time to eat and sleep.

Looking back, I am proud to say that we have accomplished so much, especially the Star Wars themed battle challenge where two players enter to play and attack each other ( Sinatra framework, with tests written in Capybara / Rspec).  We even managed to integrate the Star Wars soundtrack as our background music upon loading the page, which inevitably is stuck in my head at the moment, and irritates many fellow makers who unfortunately sit too close to us.  (thank goodness no more Boris Bike rap from week 1)

Star War themed battle game
Star War themed battle game

I never realized until I started searching for Star Wars hyperspace gif, that the world is in dreadful need of some high resolution large format Hyperspace gifs with speeding star !! I thought thirty years was long enough for people to come up with truckloads of this stuff?! Shocking…..

What I Learned

Aside from the technical knowledge and principles of good design, one valuable lesson I have learned at Makers is setting an intention for the day.  It’s like setting the tone and texture of the day when you have a vague sense of where you’d like to be at the end of the day.  Unlike a to do list, that punishes you with a sense of guilt whenever you are reminded of the things that you ‘haven’t yet’ done, intentions gently navigates you in the process of becoming who you want to be.  

Pairing of the Day

Well, this whole Star Wars craze was fuel not by myself alone, but with my pair partner in crime, Sam,  who’s elegant code and VIM fingering ability never failed to amaze / irritate the hell out of me (out of jealousy).  I am proud to be your fellow comrade.

2015-10-29 18.36.34
Then there is Halloween

Putting my architectural cardboard cutting skills and deadline driven creative thinking into best practice, Raphael and I decided to be cardboard box number 1 Fat controller & cardboard box number 2 Fatter controller.  Gratitude goes towards the universe for gifting us such quality cardboard boxes when toilet papers were delivered at Makers around lunch time.  I’d choose cardboard boxes over gold anytime, it’s like a dear old friend who you can always count on.

2015-10-30 19.05.19
Fat controller waltz with imaginary Rspec friend
2015-10-30 19.29.16
Deon hijacked as minion fat controller and Raphael must have felt kinda tired?

I loved the fact that when I shared these photos with my architect friends, one texted back saying ‘Looks awesome, send me the final photos of the costume !”

Ummm.. Minimal Viable Product anyone?  🙂

Week 3 – Day 12 & 13

What the heck does capybara have to do with Sinatra? Maybe they both like donuts?

180b962bb9cb8dda1dc7c5d4f289a701

Well…they are both gems, and free!

I am continuously amused by the variety of wicked names for gems that we come across in the coding world. For those of you who are new to software development, gems are libraries that make developers’ life so much easier.

As a visual learner, I found it really difficult to grasp the ‘big picture’ when we are learning the concept of web development .  There are so many different components and frameworks – honestly I struggled to picture how they ‘talk’ and relate to each other.  The below diagram is an example of said attempt to understand how everything fit together.

Today I Learned

Web application is very much a request and response mechanism between the client and the server, period.

FullSizeRender-2

The client is usually the browser  (sends request), and the server (receives request and send response back) can either be a remote server in another part of the world, or it can be a local server on your computer.  This week we are learning to use Sinatra (not the jazz singer) as a web framework that enables us to write our web application, acting as the local host.   Words on the street says that Sinatra is lean but powerful, when compared to other ruby based web frameworks, such as Rails.  Guess we will find out later in the course when we play with Rails but I have done my due diligent research.

TDD to BDD

Continuing the practice of Test Driven Development, in which every line of code we write is conceived first with a test, we are testing that our web application works with Rspec, which speaks ruby to Capybara, who then talk to many different web automated drivers to execute the tests we have written.

We are working on a fun challenge that makes a battle game, (an un-animated dumbed down version of street fighters) between two players, where one can attack by pressing a button.

It’s very interesting how we are writing the tests now that’s largely driven by the behaviours of how a user would interact with the application.  It takes a little while to get used to writing tests in Capybara syntax,  though I find it very helpful to break down the user story and picture how I would have wanted to use the application step by step with a diagram.

It’s sort of like walking through the different rooms of a house, it’s all about how one moves about and interact in different spaces.

Daily Inspiration

Wow, there is no way I could have written the above at the beginning of the day, when all my research led to funny youtube videos such as capybara being punched double fisted by a monkey.

I am sure the afternoon sleep meditation was a huge bonus to today’s productive learning, a special Wednesday treat.

IMG_8021

Today no one snored, or at least I didn’t wake myself up. 🙂

Week 3 – Day 11

Weekends are basically non existent at Maker’s Academy, thanks to the weekend challenges.  If anything, it’s more like a long drawn out day of coding in isolation with no one to ask questions to, though perfect timing for doing some much needed laundry  + assuring your loved ones that you are still on planet earth.

The past weekend we worked on the takeaway challenge that sends a completed order via text message using Twilio API.  It’s really neat seeing how ruby can be integrated to something that’s got functionality and more resembling what we actually use in real life.

Speaking of context, I think by end of week 2 we are finally ready to step outside of our little sand box for coding toddlers, into the playground of monkey bars & slides for the ‘big kids’.

I only hope that there are no bullying in the playground.

Introduction to the Web

Week 3 kicked off in a new direction – we are moving from Test Driven Development and Object Oriented Programming into web development.  I am really excited to be one step closer to world domination building more tangible projects that have real world applications.  The web is where the magic of code gets unleashed into the world.

It’s incredible how little we know about the autonomy of the web and what actually happens behind the scene, considering how much our lives revolve around the web and the internet.

The Anatomy of URL

Here is a beautiful diagram that illustrates the autonomy of an URL, courtesy of Blair Millen’s awesome blog post.

A picture is worth a thousand word.

In the context of digesting mountains of technical reading while learning to code, you really come to appreciate beautiful diagrams that’s so powerful in its simplicity.  If anyone is reading this and considering joining Makers, it’s worth it improving your speed reading skills because there is just so much material to read!

Screenshot 2015-10-27 23.44.17

Pairing of the Day

When I first met Fergus I had to make sure he wasn’t related to Liz Lemon from 30 Rock. Not only was he the most awesome Lemon I know in real life, I had an amazing day and sharing makes the world go round !

IMG_8047

Week 2 – Day 10

The future of Teal Organizations

At Makers, Friday means many special things.  One is lunchtime Pecha Kucha talk by any fellow makers on any topic they are passionate about,  followed by the afternoon cohort retrospective that ends with a cold hard earned beer at 4pm to wrap up yet another week of intense learning.  We makers work hard and play hard.

I will start with the inspiring lunchtime talk by Evgeny, the CEO of Maker’s Academy, who shared the secret behind Maker’s success based on the concept of a teal organizations, best described by Frederic Laloux’s book ‘Reinventing Organizations’.

71RiX7p05oL

I’d never thought that a topic on how organizations evolved would have ignited such passionate discussions in the audience.  Is it possible that through hundreds of years of evolution, our current day default ‘orange’ organizations aka efficient money making machine can evolve to the next level of ‘teal’ organization that functions entirely based on Trust and alignment of values centred on personal growth?

Pairing of the Day

It’s a threesome! We lost Alaan by the end of the day so Eleni timingly stepped in for the group photo with George and myself.

Columns are good for bracing yourself if you ever feel light headed while pairing!

IMG_8040

Week 2 – Day 9

TLC of Dependency Injection

“We might need a little Dependency Injection over there”, my pair partner said casually, as we tried to wrap our brains around refactoring(the process of editing code) and keeping track of the design of our code/classes.

So why do we care about dependency injection in the process of writing good code? In a short answer, it decouples the class objects so changes made to one class’s behaviours will not directly change another object that it is linked to.  Essentially, dependency injection means giving an object its instance variables (this is a ultra short explanation).

The benefit of practicing dependency injection means that the structure of the code is independently functional, or as loosely coupled as possible, so that the program has a level of flexibility to change over time without dependencies that can cripple the entire code base.

I’d like to think of it as a building with seismic proof structure that has movable joints – the the building has structural elements that are linked together, but each part can fail or change independently to reduce the impact of damage as a whole.

Pairing of the day

Julien and I would like to introduce our new family member : the fake-breathing-puppy who has been calmly purring in the background while we struggled with class extraction and dependency injection, real fun stuff.

Julien, I love our little pairing family for the day.

IMG_0093-2