Quantifire

Growth Marketing, Learning to Code & Bootstrapping Businesses

  • GitHub
  • Google+
  • Instagram
  • LinkedIn
  • Twitter
  • Home
  • Learning
  • Programming
  • About

Navigation Controllers

January 3, 2016 by Will Lam Leave a Comment

I’ve been struggling with the Treehouse Objective-C iOS track. I don’t know what it is about the course so far, but I’m trying to deal with it the best way possible. I feel a bit of stress bubbling up lately and I’ve decided to meditate in between long sessions with Calm’s meditation app on Android. Maybe it’s a placebo effect, but it has been helpful. I’m only on day 2, but I’d like to feel a bit more grounded and calmer otherwise, distraction, doubt, frustration and other negative thoughts sink into my studying sessions, which make for a less than ideal learning environment

In any case, with respect to the Playlist app that I’ve just started, I just started tinkering around with Navigation controllers.

Take a look below to see how it works. It’s used for hierarchical views, such as Playlists (duh) or anything that requires a bit more detail as you dig into an object that you’re displaying on a screen, be it song, a to-do item etc. Here we also learned how to add a second view controller and making it inherit from the original view controller, as well as renaming the newer view controller.

Filed Under: Challenges, Learning, Objective-C, Programming, Treehouse

Day 43: Revisiting Foundations

November 20, 2015 by Will Lam Leave a Comment

Day 43 - Revisiting FoundationsNot much to write about or anything earth shattering. Today I’m not going to share code because while going through C Programming – The Absolute Beginner’s Guide – it goes through the basics in a way that is approach for the, well, absolute beginner. But then I just realized, at the moment I wrote “earth shattering”, that we really shouldn’t feel that way because when we’re learning programming, it’s all derived from the foundational material, be it loops, arrays, strings or if/else statements.

I think the fundamental challenge is having the resolve and consistency to be able to tame our computers – to bend it to our will and make it do what we want – not the other way around. That through consistent effort of learning by doing – fucking up, learning from our mistakes and doing it all over again – true progress happens. Real learning stems from venturing outside of our comfort zones and incorporating what we learned, and building some new in a context that we might not have thought.

This whole goddamn programming thing shouldn’t be something that’s so complex because we’re really freakin’ smart human beings standing on the shoulders of giants before us that empower us with all the cool shit they’ve built, from Assembly all the way to your latest flavour of Javascript that powers the internets and mobile apps.

Not to say that you can pick it up right away (if someone knows a faster way, please let me know…), but immersing yourself and learning programming for the right reasons such as the inherent nature to build and create value are something that should be things that go through your head when people ask you “So why do you want to learn how to code?”. It should be a no brainer – regardless of job or whatever, your reasons should be rock solid, so that when you’re hitting walls, you’re not going to give up at the first opportunity.

Filed Under: Challenges, Learning, Objective-C, Programming, Treehouse

Learning to Code Update – Swift for n00bs by Treehouse

November 17, 2014 by Will Lam 2 Comments

Learn Swift Programming for iOS on Treehouse

I’ve had a bunch of conversations with colleagues and friends who are pushing me to learn mobile, so I’ve decided to learn Swift for iOS through Treehouse’s Swift module.

The goal is to ship a simple app in the next month to understand the foundation and inner workings of Swift to broaden my knowledge and apply it to my product management and growth marketing skill sets – and I guess get into the habit of shipping consistently.

A few thoughts

I finished the Swift Basics module in about a week. The course was easy enough to follow, going over all the basics of Swift while providing more context by referring to the official Apple Swift documentation online to get a better in depth understanding of the material being presented.  The culmination of the Swift Basics course was to create a FizzBuzz program in Xcode, which is a breeze if you understand conditionals inside out.

I’ve noticed that my uptake is a bit faster as I’ve learned some basics in terms of foundational concepts with respect to variables, constants, types, operators, arrays and control flows, which is more like review of the overarching concepts I’ve learned while learning Ruby on Rails, but using the Swift syntax and approach.

There are a slew of other Swift courses as well, one of which is the Bitfountain.io course that looks very promising, but I’ll dig into that later on.  Focus is paramount in following through and shipping something instead of spreading myself thin over the plethora of learning resources I have at my disposal.

While I’m doing this, I’m also checking out the Apple Developer documentation for Swift as it’s the definitive source for all things Swift. The rationale behind looking at the official book on Swift by apple is to expose myself to different modalities of learning. If there was a hardcopy book I’d buy it, but for the time being, I have an epub loaded on my iPhone 5 and Nexus 7.

Getting straight into Xcode

welcome to xcode 6.1

The instructor Amit Bijlani has a straight forward approach and they way he talks about certain concepts are pretty easy to grasp with real world analogies that the layperson can relate to. You’ll go over the nitty gritty of installing Xcode to get you up and running so there’s no worry about not being able to follow along.

You start playing around with the simplest examples in Xcode and you’re able to troubleshoot what’s going on exactly.

As with anything else in learning to code, Google the fuck out of everything or checking out Stack Overflow is a good option as well to reinforce your understanding.

Commit to a reasonable time line

Learn iOS Development in Swift for iOS iPhone and iPad

When you think about it, 30 days is something that we can all can commit to without burning out. For some it might entail having to give up a good chunk of your weekends, but what you’ll get out of it is knowledge that will remain with you forever if you keep on building on your mobile development skillset. Cool thing is, you can use it as part of your experience as well as it shows initiative in your own education and something you can show off as well.

One noticeable feature that Treehouse shipped is what I like to call their “ETA” (Estimated time to arrival) feature to keep you on track.  It calculates how many minutes you should be dedicating per day to finishing up the module, so you don’t have to.  Of course, it’s the minimum amount that you’re putting into the course if you get everything on the first try.  I’d estimate it to be a bit more than what amount of time that Treehouse calculates. Of course it depends on how fast you learn, which will vary from person to person.

Review to commit stuff you’ve learned to long term memory

Anki cards, as I’ve written about previously, are a great way to resurface concepts and quiz yourself and your understanding. I like to use up those spare pockets of time such as commuting or waiting in line to review a few cards here and there.

In future updates, I’ll try to be more frequent as well – hopefully weekly.  In the meantime, I’ve not abandoned Rails, I’m just carefully plodding along as I’ve picked up Programming in Ruby on Amazon 🙂 I’ll probably jump back to Rails once I’ve shipped something in Swift first.

What are you learning to build or ship in the next little while?

Filed Under: Learning, Programming, Swift, Treehouse

2013 Year In Review

January 21, 2014 by Will Lam 1 Comment

2013 Year in Review

Objectively (or subjectively because this is myself evaluating my past year), I’d dare say that 2013 has been my best year yet. But to preface this, I’d like to make an aside to write about the past few years (2011 to mid-2013) that were in fact really tough for me career wise and emotionally. Be it my failed startup “Date Ideas” that was incubated by Extreme University (now Extreme Startups), a miserable 2012 at a search marketing agency that I used to work for (I won’t go into details), things not working out with EventMobi which turned into a consulting gig (awesome folks, but it was for the best in hindsight), my brief stint at Extreme Startups as an Interim Program Manager there where there was a ton of learning and oodles of fun to work at, but the accelerator space is pretty crowded … especially in Toronto.  All of that led up to landing a role Postmedia Labs, where I’m proud and happy to say I’m part of the team there.

Oh and I finally graduated and got my useless Accounting degree back in September this year (it only took like 9 years and getting kicked out of school once   forced to take some time off of school.. but I made it back in and got that monkey off my back once and for all.

But what were the lessons in these past few years that I’ve learned?

This past year, I’ve gained a greater appreciation for the long term and the patience needed for having a vision for myself and what you’re investing in hopes that the time and resources I’m spending will lead to greater returns and opportunities in the future.

A few of those things were as follows:

Actively helping others before you even need help yourself

This was instrumental in allowing me to traverse the fast paced and ever changing tech industry that myself and peers work in. Whether it’s making introductions, meeting for coffee to discuss challenges or simple words of encouragement in any form and offering to help really do go a long way. You reap what you sow, and when you put others ahead of you and actively want to help, I’m a firm believer that the good energy you put out into the world will find it’s way back to you in fascinating and delightful ways it’ll absolutely astound you.

Focus

This was and still is a theme that I would try to instil in myself that I wrote about previously. In terms my focus, I didn’t want to spend time jumping from learning one thing to another. Would I try to learn Ruby on Rails AND mobile development AND data science AND Excel and expect to be really fucking good at all those things? Hells no. Reading blog posts from Cal Newport his writings on deliberate practice have been quite influential in terms of how I approach my own work over a long period of time. Mastery isn’t achieved over night, it takes a lot of hard work, hustle and grinding it day-in day out, and viewing your “game” from all angles – even if you’re not particularly enjoying it. I intend on doing this specifically on becoming technical. I try not to spread myself too thin and stick to one particular thing that I want to learn at any given moment.

Consistency

when you do things over and over over a long period of time, there’s a point where you go from complete newbie to becoming competent, to being “good” at something to achieving mastery… whatever that really means. I’ve only recently taking a stab at learning Ruby on Rails and made some strides in learning to become more technical. I’ve finished the ebook Learn Rails that I”ve previously written about, and just about finished One Month Rails example web app, and it’s all in due part to being consistent – measurable and incremental progress on a daily basis.

The one thing I’d like to be more consistent with is my writing (gunning for at least once a week or more if time allows).

Patience

This has to do with myself and others. I’ve noticed that while I want to pick up new skill sets ASAP RIGHT NOW, that’s impossible (unless we’re able to do stuff like this in the future). This ties to having an appreciation of the long term vs short term needs. When I’m talking about the long term, I’m specifically referring to 10 year horizons. Peter Norvig’s post on Teaching Yourself to Program in 10 years has been instrumental in forming my ideas about mastery, in that there’s no easy way to get to where you want to be, no shortcuts, just roll your sleeves up, take some interest in whatever subject matter you truly enjoy and want to be good at and go from there. Just have the faith in yourself that 10 years from when you first started, you’re pretty fucking good at what you do because you put the time and genuine effort in.

Friends

This has been a particularly interesting year in terms of friendships. At the ripe old age of 31, I can no longer say I have a long list of friends that I can rely on to head out for drinks or to chill with. This year has truly been the tipping point where many old friendships have gone their course and withered away – where I’m to blame as well as former friends. I struggled and thought long and hard about why it happened, but concluded that it’s just the natural course of things. Friendships that I thought were close to and had a tight bond over the years, grew apart and was no longer salvageable because we took different paths and… became different ourselves. Our paths crossing made sense at the time, but now just puzzle us if we were to hang out – awkward and nothing to say. But that’s okay. With that came new friendships that and acquaintances that I’m grateful and happy for, and I continually look to cultivate and deepen our bonds.

This has been truly the year where the saying that you’re the sum of the 5 closest friends that you associate with really rang true in my life.

Areas of Improvement

In my last year’s review, I wrote about the “areas of improvement” in my personal finances, fitness and learning. I’ll continue this trend, but I’d like to start off with my failures first before what I was able to accomplish.  Additionally, I’d like to add one more section in travel. I haven’t travelled much in past years, but I’d like to go to places outside of North America.

Personal Finances

While I wasn’t proud of racking up a stupid amount of credit card debt that I wasn’t able to shrug off for one reason or another, I’m happy to say that I was able to pay everything off and finally move onto my student loans. I’ve got a hefty chunk to pay off, but I should be done by the end of the year. Without having to go into detail, I’m proud to say that I’ve got a hefty chunk of savings in the bank as well and looking to invest a bit of that on the side.

Fitness

During 2012, I was drinking the CrossFit Kool Aid (which is still damned tasty), I traversed to the other side of my fitness programming, namely in Strength Training and Olympic Weightlifting. According to the data I logged on Daytum I logged 108 workouts

Olympic Weightlifting became an obsession a bit until I signed up for Fitocracy’s Body Recomposition Group. I’m still working on recomposition as it’s an area I had no idea about, but I’ll write about it in another blog post.

I still intend on competing at an amateur CrossFit meet once I finish my body recomposition cycle and bring back Olympic Weightlifting and CrossFit programming into the mix.

Learning

I’ve learned a lot on my own time, taking joy in learning and investing in myself rather than wasting my time on things that don’t really add or contribute to my life (like video games or pointless TV shows… although I do enjoy me some Game of Thrones and Walking Dead…). I’ve learned the basics of Ruby on Rails and will continue to do so, learning to become better with data and Excel.

I haven’t been learning from one source exclusively, despite having a 2 year scholarship at Treehouse (you guys still rock!), I’ve learned a lot from the Learn Rails ebook, as well as One Month Rails and through a ton of Googling and checking out code examples on Github as well.  In person, and online, I’ve learned a ton from my friends Nima, Karim and Philip who are wicked smart and definitely going to be making waves in the startup and online marketing communities in the years to come.  Of course, having an awesome friend like my buddy Gabriel to heckle push me hard to learn this stuff.  I hope I have the same influence on him.

What I didn’t follow through on was go through the entire DistilledU curriculum – it just didn’t make sense for me to go through all their curriculum, but it was nice to learn “The Distilled Way” of online marketing and I highly recommend their course if you’re looking to make a dent in the SEO/Inbound Marketing world.

Hopefully by the end of the year, I’ll be able to build my own functional (but ugly) Rails apps that I can call my own 🙂 Maybe I’ll learn a bit of Angular or Ember? R? Who knows?

Travel

while I made a brief trip to Chicago for my birthday and had a ton of fun (thanks Irene! :D), like I wrote previously, I’m gunning to get off the continent for vacation in 2014! I’m thinking Asia…I promise I’ll post pics about it.

Well, that about does it for my 2013. Here’s to a kickass 2014! Onward and upward.

Filed Under: Learning, Personal Development, Programming, Tracking, Treehouse

Learning to Code: Ruby on Rails Update

January 15, 2014 by Will Lam 8 Comments

tl:dr; It’s been a while since I’ve publicly made the commitment to follow through on putting out an example Ruby on Rails app. You can check out my Github account here as well as the Pinterest clone example app from the folks at One Month Rails at will-pinteresting.herokuapp.com. I’ve been using Anki cards, Googling for solutions or clues to figuring something out and asking friends when I’m totally stumped. After getting featured on Buffer app’s blog as well as Search Engine Land, the fire was lit under my ass to actually follow through and try to update consistently 🙂

It’s been almost two months since I’ve committed to learning Ruby on Rails, while I’ve been quiet in terms of my progress, I’ve been trying to put any free time have and funnelling towards two particular resources in terms of my learning – Daniel Kehoe’s “Learn Rails” e-book which I originally backed on Kickstarter along with the folks from YC Startup – One Month Rails.

Right now I have a good understanding of what a basic rails app looks like and how to generally navigate the R-MVC software architecture – the feeling is similar to fiddling around with WordPress installation, where I know what affects what.

Daniel Kehoe’s Learn Rails

Daniel Kehoe Learn Rails

Without going into a full review of his ebook, Learn Rails, which is another blog post in itself, I am pretty much done it and I would wholeheartedly recommend it to anyone who’s thinking about learning the Ruby on Rails framework. It is VERY approachable. I first learned about it from the Ruby Weekly newsletter that I signed up. At $18, it’s very affordable and is regularly updated at least once a month since I was given advance access to it.

Daniel uses very approachable language and starts from the absolute basics, which I appreciated. If you’re a bit further along if you’ve been exposed to Ruby on Rails, by all means skip through to the stuff where you think you’ll get the most learning for your time or you can be thorough and plod through the material as presented by the author.

If you’re a product manager, and you’re learning to become technical, I’d say picking up this book or subscribing to the Rails App project at an affordable $19 per month would be a great investment of your time and money as the author religiously updates the ebook, tutorials and course materials with bleeding edge everything as it’s released.

The reason why I chose to go with the Learn Rails ebook instead of going back to Treehouse was that I needed a fresh perspective and approach from a different source. Had I followed through with Treehouse and remembered everything, I probably would have picked up Daniel Kehoe’s ebook anyway. I’d still recommend Treehouse as their video production is top notch, and their gamification layer as well as community are absolutely marvelous. Sign up and you can get 50% off 🙂

Hit the ground running

Ni

Because I’m using my workplace’s MacBook to learn rails – it was a hassle to try to get permission to all these little programs on such a regular basis, but after discovering www.nitrous.io from Learn Rails e-book, it was actually a breeze to get set up right away. It took a lot of the friction right away and provides an IDE and text editor to be able to navigate through the rails folder structure and allows you to hit the ground running.

After I pick up a new MacBook Pro, I’ll install everything locally, but in terms of getting started, Nitrous.io is definitely a good choice to go as it’s free to use when you’re working on a personal learning project such as learning Ruby on Rails.  It’s a lightweight IDE in the cloud, which means that it has both a command line and text editor in your browser and you don’t have to go through the cumbersome process of installing Rails locally in order to hit the ground running and get started with Rails.

I’m not saying that you should forgo the process of installing Rails on your local machine – I was just suggesting using Nitrous.io as a way to get up and running asap – you’ll eventually have to back pedal to installing Rails properly with this up to date tutorial by Kehoe.

UPDATE: I resurrected my 2009 15″ MacBook Pro! Gonna try to install everything and see if I can make everything work locally.

Learning on a busy schedule

Everyone is “busy”. With working full time, having a personal life which includes friends, family, everyday commitments, and going to the gym regularly are what take up the majority of my time, there isn’t much time for anything else.

I’ve noticed that while I’ve pared back my focus to just a handful of things, I feel more focused, I’m learning deeper, and ultimately happier, rather than jumping from one thing to another and understanding concepts on the surface. The majority of my learning occurs on the weekend and while I’m able to squeeze in a 4-8 hours during weekdays, there might be days I’m not able to put in an hour or two in a day.  At the very minimum, I’m referring to my Anki cards on a daily basis to reinforce what I’ve previously learned.

During all of this, I signed up for a free email newsletter, Ruby Weekly, as a good way to get a curated view on what’s happening in the Ruby world without having to look for stuff to stay updated. Even though I don’t know a fraction of the stuff on the newsletter, I’m certain I’ll find more value in the newsletter as time passes.

Enter Anki flash cards

Anki Flashcards
Snapshot of the decks I’ve created so far

Anki flash cards is spaced repetition learning software deserves a blog post on its own, but I thought I’d write about it briefly here.   I first learned Anki cards from Derek Sivers blog that I read many moons ago. Essentially, you want to create flash cards on new concepts that you’re learning and want to expose yourself to them as many times as possible so they’re committed to long term memory as the program algorithmically brings up the cards that you’re most likely to forget according to your responses on whether they were easy, hard or you need to be quizzed on the card again within a minute or 10 minutes.

I’d say, using Anki flash cards has actually sped up my learning because I didn’t have to spend the time to re-learn concepts that I might have otherwise forgotten.

What’s next – upcoming challenges

Right now I’m lacking in the understanding of Git and pushing to Heroku from Nitrous.io. I’m able to launch the follow along web app I built from Learn Rails just fine locally, but when pushing to Heroku, something is amiss. Would appreciate any help on this.. can’t seem to find an answer on Stack Overflow =/

Outside of this, I’m still chugging along with understanding Ruby Foundations from Treehouse.

Conceptually, I’m still wrapping my head around HOW I start creating my own custom applications from scratch now that I have somewhat of a handle on Rails.  Do I tweak others work? Is it to learn Ruby inside out?  Build a small application that’s dead simple and go from there? Do I learn how to integrate different API’s? It’s a bit daunting, but I’m in it to learn over the long haul.

While I certainly have all the resources to learn on my own online, I feel a bit isolated and want to connect with others and I’m yearning to get feedback in person to speed up my learning even more so.  Getting questions answered via forums such as Stack Overflow or on Treehouse while helpful, doesn’t quite do it for me.

Filed Under: Learning, Programming, Treehouse

  • 1
  • 2
  • Next Page »

Copyright © 2019 · Parallax Pro Theme on Genesis Framework · WordPress · Log in