Over the past few years I’ve realized that I want to be an active participant in the coming revolution in education. My journey toward this realization has been unexpected and surprising. Over the past 16 years, I’ve worked in group homes of disenfranchised youth, counseled children and…
I had to have this headline because this is huuge news! Code Academy will be moving to 1871 in the coming spring. Together, 1871 and Code Academy will be “heart of Chicago’s startup ecosystem”, as most eloquently stated in this blog post on Built In Chicago. (I just threw a bunch of links at you. Click on ‘em all!)
My mind was literally blown and joy-induced profanity spewed from my mouth when this news broke on the twittersphere earlier today. This is such great news for all former, current, and future Code Academy students who are all passionate and capable of building Chicago into an even greater innovator. —- he says as he bangs his chest with pride —- :)
That’s right, I’m blogging again! And it only been about a day since the last one.
Today was an amazingly productive day thanks to @JaretManuel. We went to Alliance Bakery on Division and stayed there from about 930am till about 630pm. I have found it to be extremely motivating to work next to a fellow programmer since we can always ask each other whenever we get stuck. We don’t even have to be working on the same thing but sometimes just phrasing your issues into a succinct question or explanation is all that is required to resolve it.
Finally, what helped make today most productive was the use of User Stories to guide development. I began the day writing a bunch of user stories that became by goals for the day and tackled them one by one. It can be chaos trying to tackle an entire application all at once and user stories helps you structure that chaos.
Speaking of chaos, I attended an enlightening talk by Adrian Holovaty (one of the creators of the Django framework) at Refresh Chicago last night. He preached a seemingly obvious idea of taking existing chaotic data, recognizing patterns, and structuring that data. But Adrian made this key point that a lot of journalism and online content (including this blog post) is unstructured. I’m putting in a lot of data into this post (and a lot of fluff) and it’s not being used anywhere. I’m not a good example but, just think, there a lot of online content creators who are entering their text content into a large text box and all that data is being lost. Adrian suggested a novel idea where writers would have to embed tags into their content to enrich it even more. I think this is a brilliant idea and makes a stronger case for everyone who writes (or just everyone) to learn a programming language.
Congratulations to Code Academy founders and faculty for today’s big news! You guys are awesome!
Wow, it seems like it was last week that I had started Code Academy. At the same time, it is insane to think about how far I have come in terms of understanding the foundations of the web, ruby, and rails. I began Code Academy with a promise that I would try to blog often and clearly I have not followed through with it. It is definitely disappointing but it’s never too late to start. And so I start now with a quick summary of some important things that have happened in the past 6 weeks (can’t believe it’s been that long).
As much as I gushed over the amazing teaching techniques of our instructor, Jeff Cohen, in the Week 1 blog post, I have only more great things to say about him…but for now I shall stick to blog about what he has taught me.
Let’s start with demystifying the web. For every website that I go to (amazon, yahoo sports, tumblr, etc), I take notice of its url. And how that link can be processed as a route to a particular controller and action with an “:id” or query-string parameters that can be accessed in the controller to help find exactly the right data to be displayed in the view page. Long run-on sentence! The fact that I can mentally map out the process that undertakes when I go to a website like amazon.com lifts a huge veil off of my eyes. And it is a big deal for my generation because we spend a great deal of our lives online. Everyone should know at least the basics of how it all works!
I will work on that problem soon enough but, for now, back to the code. At the end of week 3, I built a simple TO-DO list application (TaskApp) to test my understanding of Rails foundations. It was a very gratifying experience and definitely an eye-opener to the holes in my understanding of the concepts covered in class. It was clear that simply “understanding” a concept at the end of a class did NOT mean that I knew it. In this case, I struggled with domain modeling, mapping the needs of my application. It was particularly tough to decide whether a certain piece of data in my application required a model of its own or would suffice as simple an attribute of a particular model. On top of that, I realized that there was a lot of code in my controller and in my view that performed logic on the data being processed. And Jeff, our instructor, had specifically told us that that was the job of the model. Pretty soon, during Code Academy’s Startup Weekend, I heard the phrase “skinny controllers and fat models” and have been attempting implement this ever since. In weeks 5 and especially week 6, it became clearer why this is crucial to MVC architecture and to making sure that your database only saves valid data.
Code Academy’s Startup Weekend took place February 11-13th and it was a blast. Friday evening, a lot of people pitched their ideas and we voted them down to 6 ideas. I had many ideas but I was really interested in focusing on the building/coding aspect of it. I really liked Dan Lavin's (@danlavin) idea, he aims to tackle the problem of information overload (a problem I live with everyday) and he calls it InfoGraphic.ly. On sunday, after about 40 hours of work, we finished a very MVP of which I was very proud. More than the product though, it was an amazing learning experience. Our team owes a lot to @benjreinhart, a Groupon developer and Code Academy mentor, who spent a lot of the weekend explaining some key concepts in proper Github collaboration workflow. We must have spend 15 hours on understanding how to collaborate properly on Github. And, although we didn't fully get it to work, by the end of the weekend I could see the benefits of using it correctly and couldn't wait to start using it on my next project. ALSO —- we BUILT something! It wasn't just a discussion on big ideas and the market potential and blah blah. It was in fact about distilling the idea into its simplest form and understanding exactly what customer need it solves and what exactly is absolutely necessary to solve that need. It was beautiful. (tear)
Ok, this blog post has gone on long enough. I’ll be back tomorrow talking about an awesome Chicago Ruby Hack Night, Code Academy’s Code Cloud, why blogging is so hard for me and how it parallels some challenges I have with coding.
Phew…done with this long overdue post…PUBLISH!
Sometimes I think it’s all a dream. Then I realize, no it’s not, it’s reality. About half way through week 1 of Code Academy (CA), I had to pinch myself to make sure it’s not all a “dream within a dream”. Okay, enough Inception references.
Week 1 of Code Academy is in the books and it was an amazing week. My friends have already called me out on using the word “awesome” too much this past week so I will try to diversify my vocabulary when recapping my experience.
The first couple classes of CA have been an inspiring introduction to interesting and passionate people from very diverse backgrounds (including the CA staff itself). Don’t get me wrong, we are all here to become developers. To learn and to build. But, there is so much to learn from each others’ paths in life and there are many opportunities to build together. The Code Academy staff certainly establishes a collaborative environment and pushes students to work together on all occasions. Personally, working and learning along side each of my fellow CA classmates is what I am really looking forward to in the coming weeks. Pair programming with a different classmate every day adds an entirely new dimension to the material that I’m learning. Each pair tackles problems and communicates a little differently. In doing so, the material that I’ve learned and the way in which I’ve learned it is different and interesting every day.
Tip: Pair program with everyone!
BUT WAIT — did I mention Jeff yet??
Jeff Cohen, our instructor, is the one who makes a lot of it possible. On top of being incredibly patient and approachable, Jeff has this uncanny ability to explain core programming concepts in plain, relatable ENGLISH!! In writing this post, I now wonder if Jeff has access to some kind of universal translator - like the one in that all-time classic movie Men In Black. I must also give credit to my classmates because everyone asks a lot of questions, which is extremely important to the whole learning process. In addition, Jeff seems to have no qualms about answering any number of questions about the concepts he is laying out. And I don’t know if there is anyone else you’d rather have explain a tough concept to you other than Jeff.
Tip: Don’t hesitate to ask questions!
There’s lots more to say and I will make it a habit of chronicling events and experiences as they happen. But right now, there’s a lot to read, people to meet, and practice..practice..practice.
THE FIRST OF MANY GREAT PIECES FROM THE INKSLINGER!
Let’s go out tonight
wash away in waves of light
in a sea of arms, I get the mood
Forget all the things I couldn’t do
Forget all the things I didn’t even try to do
Catch a guy’s eye my body is substantiated
my number, a lie my life has dissipated
Scraps of approval gone astray
Keeping my productivity at bay
I’m floating away
Floating away to who the hell knows
Who do I owe
for these currents that don’t need me to row
I reap what others sow