You're reading the blog of Vincent Cabansag.
Profile photoYou're reading the blog of Vincent Cabansag.
Profile photoYou're reading the blog of Vincent Cabansag.

Immerse yourself the right way

Originally posted on The Active Record.

Bootcamps. There’s plenty of buzz around them these days. And for good reason. Who wouldn’t want the promise of a programming job after 3 months of immersive learning? It’s a honeypot that bootcamps use to attract anyone who’s looking for a career change. It’s also a path that’s become dogmatic — immersive learning has become more about sheer hours instead of a culture that promotes learning with a work-life balance.

Spending 80+ hours a week on anything will be disruptive to the rest of your life. If you’re considering a program that teaches you how to build web applications, and you’re devoid of any responsibilities or relationships, then a bootcamp is right up your alley. But there’s better ways to immerse yourself without sacrificing the other parts of your life. If you have a beloved pet, significant other, kids, spouse, or responsibilities that can’t be put on hold, then you owe it to yourself and to them to find a culture that fits your life, not the other way around.

A question that I’ll get when I interview students is, “Why does The Starter League have less class time than XXX bootcamp?”. My response is somewhere along the lines of this: “While we could increase the class hours and teach you everything about web development, there’s only so much knowledge that you can consume at a given time”. A study at UCLA found that cramming can be harmful to a student’s learning outcomes. They concluded that students perform better when they space their study sessions. We plan our classes so that our students have the proper time to implement the concepts we introduce. That’s important for long-term learning outcomes.

We also don’t set expectations where our students should stay up late at night or even sleep in the space because they’re exhausted from coding all night. Working longer, late at night or when you're exhausted doesn't teach you more or produce better work. We intentionally schedule non-class days where students can come in for office hours, review sessions and get help from instructors on their projects. We do this so that they can absorb the concepts from class, work through any issues on their projects, and make themselves better developers through good work flow practice. Our students’ schedule is more consistent with a 9 to 5 business day.

Alex Payne wrote a candid blog post to anyone who is considering a career as a programmer in a startup. After reading that post, I didn’t realize how many mom’s have taken our classes. For example, one of our Starter School students commutes from Libertyville five days a week. Her schedule is like clockwork — she’s in by 8am and out by 4:30pm. She’s also a mother and wife. If we scheduled classes later in the day or asked our students to stay late, then we wouldn’t have students like Amy.

Learning how to code is fun and as addictive as your latest Netflix season binge. If you’re looking at programs that teach you how to build web applications, consider the sacrifices that you’ll be asked to make. You don’t have to give everything up to make an impact on your life.

Immerse yourself the right way

Originally posted on The Active Record.

Bootcamps. There’s plenty of buzz around them these days. And for good reason. Who wouldn’t want the promise of a programming job after 3 months of immersive learning? It’s a honeypot that bootcamps use to attract anyone who’s looking for a career change. It’s also a path that’s become dogmatic — immersive learning has become more about sheer hours instead of a culture that promotes learning with a work-life balance.

Spending 80+ hours a week on anything will be disruptive to the rest of your life. If you’re considering a program that teaches you how to build web applications, and you’re devoid of any responsibilities or relationships, then a bootcamp is right up your alley. But there’s better ways to immerse yourself without sacrificing the other parts of your life. If you have a beloved pet, significant other, kids, spouse, or responsibilities that can’t be put on hold, then you owe it to yourself and to them to find a culture that fits your life, not the other way around.

A question that I’ll get when I interview students is, “Why does The Starter League have less class time than XXX bootcamp?”. My response is somewhere along the lines of this: “While we could increase the class hours and teach you everything about web development, there’s only so much knowledge that you can consume at a given time”. A study at UCLA found that cramming can be harmful to a student’s learning outcomes. They concluded that students perform better when they space their study sessions. We plan our classes so that our students have the proper time to implement the concepts we introduce. That’s important for long-term learning outcomes.

We also don’t set expectations where our students should stay up late at night or even sleep in the space because they’re exhausted from coding all night. Working longer, late at night or when you're exhausted doesn't teach you more or produce better work. We intentionally schedule non-class days where students can come in for office hours, review sessions and get help from instructors on their projects. We do this so that they can absorb the concepts from class, work through any issues on their projects, and make themselves better developers through good work flow practice. Our students’ schedule is more consistent with a 9 to 5 business day.

Alex Payne wrote a candid blog post to anyone who is considering a career as a programmer in a startup. After reading that post, I didn’t realize how many mom’s have taken our classes. For example, one of our Starter School students commutes from Libertyville five days a week. Her schedule is like clockwork — she’s in by 8am and out by 4:30pm. She’s also a mother and wife. If we scheduled classes later in the day or asked our students to stay late, then we wouldn’t have students like Amy.

Learning how to code is fun and as addictive as your latest Netflix season binge. If you’re looking at programs that teach you how to build web applications, consider the sacrifices that you’ll be asked to make. You don’t have to give everything up to make an impact on your life.

Immerse yourself the right way

Originally posted on The Active Record.

Bootcamps. There’s plenty of buzz around them these days. And for good reason. Who wouldn’t want the promise of a programming job after 3 months of immersive learning? It’s a honeypot that bootcamps use to attract anyone who’s looking for a career change. It’s also a path that’s become dogmatic — immersive learning has become more about sheer hours instead of a culture that promotes learning with a work-life balance.

Spending 80+ hours a week on anything will be disruptive to the rest of your life. If you’re considering a program that teaches you how to build web applications, and you’re devoid of any responsibilities or relationships, then a bootcamp is right up your alley. But there’s better ways to immerse yourself without sacrificing the other parts of your life. If you have a beloved pet, significant other, kids, spouse, or responsibilities that can’t be put on hold, then you owe it to yourself and to them to find a culture that fits your life, not the other way around.

A question that I’ll get when I interview students is, “Why does The Starter League have less class time than XXX bootcamp?”. My response is somewhere along the lines of this: “While we could increase the class hours and teach you everything about web development, there’s only so much knowledge that you can consume at a given time”. A study at UCLA found that cramming can be harmful to a student’s learning outcomes. They concluded that students perform better when they space their study sessions. We plan our classes so that our students have the proper time to implement the concepts we introduce. That’s important for long-term learning outcomes.

We also don’t set expectations where our students should stay up late at night or even sleep in the space because they’re exhausted from coding all night. Working longer, late at night or when you're exhausted doesn't teach you more or produce better work. We intentionally schedule non-class days where students can come in for office hours, review sessions and get help from instructors on their projects. We do this so that they can absorb the concepts from class, work through any issues on their projects, and make themselves better developers through good work flow practice. Our students’ schedule is more consistent with a 9 to 5 business day.

Alex Payne wrote a candid blog post to anyone who is considering a career as a programmer in a startup. After reading that post, I didn’t realize how many mom’s have taken our classes. For example, one of our Starter School students commutes from Libertyville five days a week. Her schedule is like clockwork — she’s in by 8am and out by 4:30pm. She’s also a mother and wife. If we scheduled classes later in the day or asked our students to stay late, then we wouldn’t have students like Amy.

Learning how to code is fun and as addictive as your latest Netflix season binge. If you’re looking at programs that teach you how to build web applications, consider the sacrifices that you’ll be asked to make. You don’t have to give everything up to make an impact on your life.

How to Pick a Coding School

JR Vasquez interviewed me for his College Money Man podcast on how to pick a coding schools. I gave him my take on The Starter League as a student and instructor.

Listen to the podcast here or on the original post.

How to Pick a Coding School

JR Vasquez interviewed me for his College Money Man podcast on how to pick a coding schools. I gave him my take on The Starter League as a student and instructor.

Listen to the podcast here or on the original post.

How to Pick a Coding School

JR Vasquez interviewed me for his College Money Man podcast on how to pick a coding schools. I gave him my take on The Starter League as a student and instructor.

Listen to the podcast here or on the original post.

Learn Like a Beginner

TableXI, a Chicago-based web development and design company, asked me to talk about developer education earlier this month. Here's my PechaKucha from their June Table Talks.

Learn Like a Beginner

TableXI, a Chicago-based web development and design company, asked me to talk about developer education earlier this month. Here's my PechaKucha from their June Table Talks.

Learn Like a Beginner

TableXI, a Chicago-based web development and design company, asked me to talk about developer education earlier this month. Here's my PechaKucha from their June Table Talks.

Digitally sign documents with OS X Preview

I've executed a lot of contracts. When it comes to real estate, timing can be the difference between getting your dream home or losing it someone else. Most people fax, scan and mail documents. That takes a lot of time. And what few people know is that you can digitally sign a document on any computer. Here's a new way to sign a PDF document on any Mac with OS X Lion or greater.

Open a PDF document using the Preview app and reveal the Edit Toolbar.

Click the triangle next to the Sig menu to show the digital signature options. Select Create Signature from camera -- device names may vary.

The camera on your Mac will turn. Find a plain white piece of paper, write your signature and hold it up to the camera. When your signature appears correctly, click Accept.

Go back up to the Sig menu to reveal your new digital signature. Select it and you'll see your cursor turn into crosshairs. Move your cursor to a signature line or any area where you want your signature to appear. Click anywhere.

You'll see your signature appear along with a bounding box where you can resize it.

Digitally sign documents with OS X Preview

I've executed a lot of contracts. When it comes to real estate, timing can be the difference between getting your dream home or losing it someone else. Most people fax, scan and mail documents. That takes a lot of time. And what few people know is that you can digitally sign a document on any computer. Here's a new way to sign a PDF document on any Mac with OS X Lion or greater.

Open a PDF document using the Preview app and reveal the Edit Toolbar.

Click the triangle next to the Sig menu to show the digital signature options. Select Create Signature from camera -- device names may vary.

The camera on your Mac will turn. Find a plain white piece of paper, write your signature and hold it up to the camera. When your signature appears correctly, click Accept.

Go back up to the Sig menu to reveal your new digital signature. Select it and you'll see your cursor turn into crosshairs. Move your cursor to a signature line or any area where you want your signature to appear. Click anywhere.

You'll see your signature appear along with a bounding box where you can resize it.

Digitally sign documents with OS X Preview

I've executed a lot of contracts. When it comes to real estate, timing can be the difference between getting your dream home or losing it someone else. Most people fax, scan and mail documents. That takes a lot of time. And what few people know is that you can digitally sign a document on any computer. Here's a new way to sign a PDF document on any Mac with OS X Lion or greater.

Open a PDF document using the Preview app and reveal the Edit Toolbar.

Click the triangle next to the Sig menu to show the digital signature options. Select Create Signature from camera -- device names may vary.

The camera on your Mac will turn. Find a plain white piece of paper, write your signature and hold it up to the camera. When your signature appears correctly, click Accept.

Go back up to the Sig menu to reveal your new digital signature. Select it and you'll see your cursor turn into crosshairs. Move your cursor to a signature line or any area where you want your signature to appear. Click anywhere.

You'll see your signature appear along with a bounding box where you can resize it.

Networking Events for Code Academy students

If you're just getting plugged into Chicago's technology and entrepreneurship community, you'll find out quickly that there is an abundance of events that you can attend. There's literally an event you can go to every day, night and morning. Attending these events gives you exposure to Chicago's brightest minds and the opportunity to create meaningful relationships. Be mindful as it's very easy to go overboard and attend too many events. Here are recommended events for incoming Code Academy students:

Code & Coffee
Every Tuesday from 7am to 9am
Informal meet-up to talk shop and pair program. Located at the Starbucks at 750 N Franklin St (Chicago Ave & Franklin St). You'll find folks from Groupon, Hashrocket, Trunk Club and other shops/start-ups at this event. It's a great way to meet professional developers in a casual setting. Having a cup of coffee or tea is also a good way to start your morning.

Geekfest
Every Tuesday from 12pm to 1pm
Hosted by Dave Hoover, Code Academy's lead mentor, this is a weekly lunchtime gathering of geeks. Topics include Ruby, Java, XP, Clojure, startups, databases and more. RSVP is required for this event as security is tight at 600 W Chicago (Groupon's headquarters) and because they need a headcount for the free food that is served. RSVPs fill up fast.

Chicago Ruby and Ruby Hacknight
Hosted by Ginny Hendry, a featured Code Academy mentor, these events are typically held twice a month. They're excellent events for both raw beginners and seasoned Rubyists.

Code Academy's Entrepreneurship Series
Every Wednesday from 12pm to 1pm
Code Academy alumni, Jin Hwang and Jean Bahnik, put on an amazing series of weekly events last quarter featuring well-known entrepreneurs. Topics ranged from bootstrapping, VC and angel funding, legal and SEO/SEM. Hosted at 1871/Code Academy, there's no reason to miss out on these events.

Entrepreneurs Unpluggd
Thank VH1 Storytellers meets entrepreneurship. Co-founders Stella Fayman and Tim Jahn started this event last year to showcase entrepreneurs and their amazing stories. It's a candid event where you can ask questions and engage speakers. It's been held once a quarter, so get early bird tickets when they go on sale!

Refresh Chicago
Hosted by Code Academy HTML/CSS instructor, Shay Howe, this event promotes design, technology, usability, and standards for both designers and developers.

Remember, the goal is not to attend events, but to develop relationships that are interdependent, to open your mind and to learn.

Networking Events for Code Academy students

If you're just getting plugged into Chicago's technology and entrepreneurship community, you'll find out quickly that there is an abundance of events that you can attend. There's literally an event you can go to every day, night and morning. Attending these events gives you exposure to Chicago's brightest minds and the opportunity to create meaningful relationships. Be mindful as it's very easy to go overboard and attend too many events. Here are recommended events for incoming Code Academy students:

Code & Coffee
Every Tuesday from 7am to 9am
Informal meet-up to talk shop and pair program. Located at the Starbucks at 750 N Franklin St (Chicago Ave & Franklin St). You'll find folks from Groupon, Hashrocket, Trunk Club and other shops/start-ups at this event. It's a great way to meet professional developers in a casual setting. Having a cup of coffee or tea is also a good way to start your morning.

Geekfest
Every Tuesday from 12pm to 1pm
Hosted by Dave Hoover, Code Academy's lead mentor, this is a weekly lunchtime gathering of geeks. Topics include Ruby, Java, XP, Clojure, startups, databases and more. RSVP is required for this event as security is tight at 600 W Chicago (Groupon's headquarters) and because they need a headcount for the free food that is served. RSVPs fill up fast.

Chicago Ruby and Ruby Hacknight
Hosted by Ginny Hendry, a featured Code Academy mentor, these events are typically held twice a month. They're excellent events for both raw beginners and seasoned Rubyists.

Code Academy's Entrepreneurship Series
Every Wednesday from 12pm to 1pm
Code Academy alumni, Jin Hwang and Jean Bahnik, put on an amazing series of weekly events last quarter featuring well-known entrepreneurs. Topics ranged from bootstrapping, VC and angel funding, legal and SEO/SEM. Hosted at 1871/Code Academy, there's no reason to miss out on these events.

Entrepreneurs Unpluggd
Thank VH1 Storytellers meets entrepreneurship. Co-founders Stella Fayman and Tim Jahn started this event last year to showcase entrepreneurs and their amazing stories. It's a candid event where you can ask questions and engage speakers. It's been held once a quarter, so get early bird tickets when they go on sale!

Refresh Chicago
Hosted by Code Academy HTML/CSS instructor, Shay Howe, this event promotes design, technology, usability, and standards for both designers and developers.

Remember, the goal is not to attend events, but to develop relationships that are interdependent, to open your mind and to learn.

Networking Events for Code Academy students

If you're just getting plugged into Chicago's technology and entrepreneurship community, you'll find out quickly that there is an abundance of events that you can attend. There's literally an event you can go to every day, night and morning. Attending these events gives you exposure to Chicago's brightest minds and the opportunity to create meaningful relationships. Be mindful as it's very easy to go overboard and attend too many events. Here are recommended events for incoming Code Academy students:

Code & Coffee
Every Tuesday from 7am to 9am
Informal meet-up to talk shop and pair program. Located at the Starbucks at 750 N Franklin St (Chicago Ave & Franklin St). You'll find folks from Groupon, Hashrocket, Trunk Club and other shops/start-ups at this event. It's a great way to meet professional developers in a casual setting. Having a cup of coffee or tea is also a good way to start your morning.

Geekfest
Every Tuesday from 12pm to 1pm
Hosted by Dave Hoover, Code Academy's lead mentor, this is a weekly lunchtime gathering of geeks. Topics include Ruby, Java, XP, Clojure, startups, databases and more. RSVP is required for this event as security is tight at 600 W Chicago (Groupon's headquarters) and because they need a headcount for the free food that is served. RSVPs fill up fast.

Chicago Ruby and Ruby Hacknight
Hosted by Ginny Hendry, a featured Code Academy mentor, these events are typically held twice a month. They're excellent events for both raw beginners and seasoned Rubyists.

Code Academy's Entrepreneurship Series
Every Wednesday from 12pm to 1pm
Code Academy alumni, Jin Hwang and Jean Bahnik, put on an amazing series of weekly events last quarter featuring well-known entrepreneurs. Topics ranged from bootstrapping, VC and angel funding, legal and SEO/SEM. Hosted at 1871/Code Academy, there's no reason to miss out on these events.

Entrepreneurs Unpluggd
Thank VH1 Storytellers meets entrepreneurship. Co-founders Stella Fayman and Tim Jahn started this event last year to showcase entrepreneurs and their amazing stories. It's a candid event where you can ask questions and engage speakers. It's been held once a quarter, so get early bird tickets when they go on sale!

Refresh Chicago
Hosted by Code Academy HTML/CSS instructor, Shay Howe, this event promotes design, technology, usability, and standards for both designers and developers.

Remember, the goal is not to attend events, but to develop relationships that are interdependent, to open your mind and to learn.

Lessons from Code Academy students

Code Academy's inaugural class has come to a close. Over the past three months, countless hours have been spent with my classmates. We've struggled together, learned together and celebrated together. We have also consumed a sick amount of Snarf's, free food and LaCroix. We were strangers to one another coming into Code Academy. But now, I'm happy to say that each of us can call one another a friend.

I've learned lessons from each of you. They are not relegated to just web development, but life. So here's my sincere thanks to the inaugural Code Academy Class of 2011.

Geoff Massanek
What didn't you teach me? Every time we pair programmed, you taught me something new. You were always willing to help when I needed it and I'm grateful for that. I won't forget the day when you punched me in the head with TDD and HAML. Regardless, congratulations on the new job at Groupon and welcome to Chicago!

Jin Hwang
You and I come from strong business backgrounds. Sometimes we forget about our strengths when we focus so much on our weaknesses. You helped remind me of my own. I will always remember the pack lunches you brought to class and how much money you saved by NOT going to Snarfs. Good luck with Eveningflow and let's hangout in our hood sooner than later.

Paul Rosenzweig
You are raw talent. Cash money swaaagg--that's you. In the first couple weeks, Ruby's map method, block functions and ternary operators were foreign to me. But thanks to you, they're part of my coding toolbox. You have the disposition to be an epic developer, so seek out what excites and challenges you. Thanks Paul.

Salta Muslim-Ali
You have an amazing story. Not only did you come from Kazakhstan, but you juggled school and Code Academy at the same time. You're doing what you love and blending it with what you learned. I will always remember to do what I love, just like you.

Scott Sipiora
Many of us were all-in for the past three months, but some of us did not have that convenience. Your mastery of work/life balance should be applauded and admired. You also helped me get my Sendgrid mailer working an hour before demo day, thank you!

Mike Ebert
Your work ethic is unmatched. You use pomodoros the way they were meant to be used. And I hope to do the same. You wore a cap, scarf and fleece almost every day. It looked like you were climbing a mountain and that's exactly what you did. You become one of the most skilled coders at Code Academy without having any prior programming experience. Good for you! And a thanks in advance for holidays with Hartl.

Danica Tiu
I love that you rolled your own API wrapper. I still need to refactor my code into a full wrapper, but you definitely got me started. And you helped my brush-up on my domain and DNS pointing skills.

Steve Sedowski
You work hard man. And you never complained once, whether it was after a hard work-out, your medical procedure, or a programming problem. Your composure is a great quality to possesss.

Ryan Noughton
You asked some of the best questions during class. You literally have a pulse on the Internet and always seem to know about the different tools out there. You gave me some valuable insights into my web app business model and I definitely appreciate it.

Alex Bartling
You were always finding shiny objects to help you code. Sometimes we get rooted in our routine and it's okay to change it up once in a while. I am also jealous of your second SSD in your MacBook Pro. I need it!

Tom Brown
My fellow broker. We came into Code Academy wanting to solve the same problem, but with different solutions. Our discussions were always productive and it was refreshing to get feedback from someone with the same domain expertise.

Josh Mangoubi
You are an underrated coder. I loved your directness and the matter of fact way you explained concepts. That's it.

Dan Allison
The quietest of the bunch and one of the most talented. You're an amazing animator and artist. When they say that programming can make you dangerous, you are the person that comes to mind. You have shown me that it's important to embrace what you know.

Raghu Betina
You're a great teacher, but more importantly you have confidence in your skills. You have taught me not to second guess myself. I'm looking forward to working with you in 2012!

Dave Mehrman
I can talk shop, rigs and tech with you all day. Your domain expertise in videography is awesome. I did not know about target-disk mode until the wrap-up dinner--that was smooth. I can't wait to finish our Code Academy wrap-up video!

Dave Levine
You came into Code Academy with a business. Wahdle was pitched, tested, and coded over the past three months. Not only is it better, but so are you. I admire your convictions and you have the mettle to be an entrepreneur.

Tom Cullen
You have a strong sense of community and I love that you're helping us stay and learn together. You also drove me to and from several meet-ups, so thank you for that. Highfive, buddy!

Brittany Laughlin
For someone that is constantly on the go and always busy, you have always been kind and sincere. You're an outstanding example of an entrepreneur who values relationships and respects the craft that is software development. Those are great qualities to have.

Dave Fonveille
I remember working next to you at Groupon late on a Saturday night. I didn't realize how many academic degrees you held. It makes sense because your passion for learning is contagious.

Cesar Pereira
Not only are you an amazing tennis player, but you possess an attitude and humbleness that we should all follow. It will be important for each of us to remember what it was like to be a raw beginner. Thanks for being you, Cesar.

Dave Anderson
What's the opposite of synergy? Whatever that is, that's what happens when we pair program. Perhaps we think too much alike, I mean we both happen to be Wolverines. Maybe we should try communicating in Vim instead. But really, I admire your courage to ask the questions that need to be asked. You've gone from Kenya to Chicago and now you're looking to fix Detroit. I endeavor to be as bold as you.

Matt Duff
You left so much to be with us at Code Academy. But now you're going back to Utah and bringing a piece of Chicago with you. Know that you've left a mark with each and every one of us. Your humor and levity has shown me that coding really is fun.

Charles Jackson
We didn't get to pair that much, but you have taught me that it's not always about programming. Good luck in your future endeavors!

Brian Mehrman
You were my go to Ruby guy. You helped me understand how to manipulate hashes within hashes and form them into arrays with my desired data. Watching you in irb or console was always enlightening.

Kevin "Rudy" Musiorski
You wear your heart on your hoodie. You are definitely an idea guy and it makes me excited to pursue each and every idea that I have. I will never forget your impressions of the other students, your "late nights" at Groupon and your closing "surprise" at demo day.

Alfonso Rush
You my friend are profound. You're an artist at what you do. You are passion embodied and that helped fuel me and everyone else for the past three months. If I see a bunch of Yodas, I will ping you.

Michael Verdi
You also asked questions that needed to be ask, but in a way that was funny and light-hearted. Thank you for playing on my flag football team this Fall. We would have not been able to get to the championship game with you. Now that you're moving to Chicago, buy some cleats for the Spring season. I will literally take you to Sports Authority to buy them. Redemption time!

Arvin Dang
Errrvin. I'm excited that you are moving to Chicago! You see the city in a way that I did many years ago. It makes me excited about Chicago all over again, especially with the tech scene booming. You also see opportunities where others don't. I think hashq.it is the best web app idea, amazing. I can't wait to work with you to make Code Academy even better. And let's hit-up all the places on your bucketlist. Just wait for the neighborhood street festivals--that's my thing.

Luis Vega
My fellow Filipino! You are talented, bright, creative, and apparently the best at Z-type. I've already mentioned this, but I will say it again. We take for granted what we have. All you want is to stay in the States. Like you, my parent's came from the Philippines and wanted to make the States their home. I can only imagine what it is was like for them and seeing you now. I will do what I can to help you level-up and get to the next stage.

Jean Bahnik
Thank you for collaborating with me on my blog so that we could look "active" on gitHub. Seriously, I learned virtually all of my git and Heroku commands by pairing with you. My mornings will now be devoid of your sarcastic humor, which I will sincerely miss. More importantly, you became my friend and confidant. So what's the next restaurant on our list? Just tell me when.

Jeff Cohen articulately said, "You are now part of Chicago's Ruby community." So much in the same way that the community welcomed us, it is now our responsibility to do the same. Welcome the next class into our family and remember that we were in their shoes just months ago. Thank you for the lessons and don't forget to.. rake db:migrate.

Lessons from Code Academy students

Code Academy's inaugural class has come to a close. Over the past three months, countless hours have been spent with my classmates. We've struggled together, learned together and celebrated together. We have also consumed a sick amount of Snarf's, free food and LaCroix. We were strangers to one another coming into Code Academy. But now, I'm happy to say that each of us can call one another a friend.

I've learned lessons from each of you. They are not relegated to just web development, but life. So here's my sincere thanks to the inaugural Code Academy Class of 2011.

Geoff Massanek
What didn't you teach me? Every time we pair programmed, you taught me something new. You were always willing to help when I needed it and I'm grateful for that. I won't forget the day when you punched me in the head with TDD and HAML. Regardless, congratulations on the new job at Groupon and welcome to Chicago!

Jin Hwang
You and I come from strong business backgrounds. Sometimes we forget about our strengths when we focus so much on our weaknesses. You helped remind me of my own. I will always remember the pack lunches you brought to class and how much money you saved by NOT going to Snarfs. Good luck with Eveningflow and let's hangout in our hood sooner than later.

Paul Rosenzweig
You are raw talent. Cash money swaaagg--that's you. In the first couple weeks, Ruby's map method, block functions and ternary operators were foreign to me. But thanks to you, they're part of my coding toolbox. You have the disposition to be an epic developer, so seek out what excites and challenges you. Thanks Paul.

Salta Muslim-Ali
You have an amazing story. Not only did you come from Kazakhstan, but you juggled school and Code Academy at the same time. You're doing what you love and blending it with what you learned. I will always remember to do what I love, just like you.

Scott Sipiora
Many of us were all-in for the past three months, but some of us did not have that convenience. Your mastery of work/life balance should be applauded and admired. You also helped me get my Sendgrid mailer working an hour before demo day, thank you!

Mike Ebert
Your work ethic is unmatched. You use pomodoros the way they were meant to be used. And I hope to do the same. You wore a cap, scarf and fleece almost every day. It looked like you were climbing a mountain and that's exactly what you did. You become one of the most skilled coders at Code Academy without having any prior programming experience. Good for you! And a thanks in advance for holidays with Hartl.

Danica Tiu
I love that you rolled your own API wrapper. I still need to refactor my code into a full wrapper, but you definitely got me started. And you helped my brush-up on my domain and DNS pointing skills.

Steve Sedowski
You work hard man. And you never complained once, whether it was after a hard work-out, your medical procedure, or a programming problem. Your composure is a great quality to possesss.

Ryan Noughton
You asked some of the best questions during class. You literally have a pulse on the Internet and always seem to know about the different tools out there. You gave me some valuable insights into my web app business model and I definitely appreciate it.

Alex Bartling
You were always finding shiny objects to help you code. Sometimes we get rooted in our routine and it's okay to change it up once in a while. I am also jealous of your second SSD in your MacBook Pro. I need it!

Tom Brown
My fellow broker. We came into Code Academy wanting to solve the same problem, but with different solutions. Our discussions were always productive and it was refreshing to get feedback from someone with the same domain expertise.

Josh Mangoubi
You are an underrated coder. I loved your directness and the matter of fact way you explained concepts. That's it.

Dan Allison
The quietest of the bunch and one of the most talented. You're an amazing animator and artist. When they say that programming can make you dangerous, you are the person that comes to mind. You have shown me that it's important to embrace what you know.

Raghu Betina
You're a great teacher, but more importantly you have confidence in your skills. You have taught me not to second guess myself. I'm looking forward to working with you in 2012!

Dave Mehrman
I can talk shop, rigs and tech with you all day. Your domain expertise in videography is awesome. I did not know about target-disk mode until the wrap-up dinner--that was smooth. I can't wait to finish our Code Academy wrap-up video!

Dave Levine
You came into Code Academy with a business. Wahdle was pitched, tested, and coded over the past three months. Not only is it better, but so are you. I admire your convictions and you have the mettle to be an entrepreneur.

Tom Cullen
You have a strong sense of community and I love that you're helping us stay and learn together. You also drove me to and from several meet-ups, so thank you for that. Highfive, buddy!

Brittany Laughlin
For someone that is constantly on the go and always busy, you have always been kind and sincere. You're an outstanding example of an entrepreneur who values relationships and respects the craft that is software development. Those are great qualities to have.

Dave Fonveille
I remember working next to you at Groupon late on a Saturday night. I didn't realize how many academic degrees you held. It makes sense because your passion for learning is contagious.

Cesar Pereira
Not only are you an amazing tennis player, but you possess an attitude and humbleness that we should all follow. It will be important for each of us to remember what it was like to be a raw beginner. Thanks for being you, Cesar.

Dave Anderson
What's the opposite of synergy? Whatever that is, that's what happens when we pair program. Perhaps we think too much alike, I mean we both happen to be Wolverines. Maybe we should try communicating in Vim instead. But really, I admire your courage to ask the questions that need to be asked. You've gone from Kenya to Chicago and now you're looking to fix Detroit. I endeavor to be as bold as you.

Matt Duff
You left so much to be with us at Code Academy. But now you're going back to Utah and bringing a piece of Chicago with you. Know that you've left a mark with each and every one of us. Your humor and levity has shown me that coding really is fun.

Charles Jackson
We didn't get to pair that much, but you have taught me that it's not always about programming. Good luck in your future endeavors!

Brian Mehrman
You were my go to Ruby guy. You helped me understand how to manipulate hashes within hashes and form them into arrays with my desired data. Watching you in irb or console was always enlightening.

Kevin "Rudy" Musiorski
You wear your heart on your hoodie. You are definitely an idea guy and it makes me excited to pursue each and every idea that I have. I will never forget your impressions of the other students, your "late nights" at Groupon and your closing "surprise" at demo day.

Alfonso Rush
You my friend are profound. You're an artist at what you do. You are passion embodied and that helped fuel me and everyone else for the past three months. If I see a bunch of Yodas, I will ping you.

Michael Verdi
You also asked questions that needed to be ask, but in a way that was funny and light-hearted. Thank you for playing on my flag football team this Fall. We would have not been able to get to the championship game with you. Now that you're moving to Chicago, buy some cleats for the Spring season. I will literally take you to Sports Authority to buy them. Redemption time!

Arvin Dang
Errrvin. I'm excited that you are moving to Chicago! You see the city in a way that I did many years ago. It makes me excited about Chicago all over again, especially with the tech scene booming. You also see opportunities where others don't. I think hashq.it is the best web app idea, amazing. I can't wait to work with you to make Code Academy even better. And let's hit-up all the places on your bucketlist. Just wait for the neighborhood street festivals--that's my thing.

Luis Vega
My fellow Filipino! You are talented, bright, creative, and apparently the best at Z-type. I've already mentioned this, but I will say it again. We take for granted what we have. All you want is to stay in the States. Like you, my parent's came from the Philippines and wanted to make the States their home. I can only imagine what it is was like for them and seeing you now. I will do what I can to help you level-up and get to the next stage.

Jean Bahnik
Thank you for collaborating with me on my blog so that we could look "active" on gitHub. Seriously, I learned virtually all of my git and Heroku commands by pairing with you. My mornings will now be devoid of your sarcastic humor, which I will sincerely miss. More importantly, you became my friend and confidant. So what's the next restaurant on our list? Just tell me when.

Jeff Cohen articulately said, "You are now part of Chicago's Ruby community." So much in the same way that the community welcomed us, it is now our responsibility to do the same. Welcome the next class into our family and remember that we were in their shoes just months ago. Thank you for the lessons and don't forget to.. rake db:migrate.

Lessons from Code Academy students

Code Academy's inaugural class has come to a close. Over the past three months, countless hours have been spent with my classmates. We've struggled together, learned together and celebrated together. We have also consumed a sick amount of Snarf's, free food and LaCroix. We were strangers to one another coming into Code Academy. But now, I'm happy to say that each of us can call one another a friend.

I've learned lessons from each of you. They are not relegated to just web development, but life. So here's my sincere thanks to the inaugural Code Academy Class of 2011.

Geoff Massanek
What didn't you teach me? Every time we pair programmed, you taught me something new. You were always willing to help when I needed it and I'm grateful for that. I won't forget the day when you punched me in the head with TDD and HAML. Regardless, congratulations on the new job at Groupon and welcome to Chicago!

Jin Hwang
You and I come from strong business backgrounds. Sometimes we forget about our strengths when we focus so much on our weaknesses. You helped remind me of my own. I will always remember the pack lunches you brought to class and how much money you saved by NOT going to Snarfs. Good luck with Eveningflow and let's hangout in our hood sooner than later.

Paul Rosenzweig
You are raw talent. Cash money swaaagg--that's you. In the first couple weeks, Ruby's map method, block functions and ternary operators were foreign to me. But thanks to you, they're part of my coding toolbox. You have the disposition to be an epic developer, so seek out what excites and challenges you. Thanks Paul.

Salta Muslim-Ali
You have an amazing story. Not only did you come from Kazakhstan, but you juggled school and Code Academy at the same time. You're doing what you love and blending it with what you learned. I will always remember to do what I love, just like you.

Scott Sipiora
Many of us were all-in for the past three months, but some of us did not have that convenience. Your mastery of work/life balance should be applauded and admired. You also helped me get my Sendgrid mailer working an hour before demo day, thank you!

Mike Ebert
Your work ethic is unmatched. You use pomodoros the way they were meant to be used. And I hope to do the same. You wore a cap, scarf and fleece almost every day. It looked like you were climbing a mountain and that's exactly what you did. You become one of the most skilled coders at Code Academy without having any prior programming experience. Good for you! And a thanks in advance for holidays with Hartl.

Danica Tiu
I love that you rolled your own API wrapper. I still need to refactor my code into a full wrapper, but you definitely got me started. And you helped my brush-up on my domain and DNS pointing skills.

Steve Sedowski
You work hard man. And you never complained once, whether it was after a hard work-out, your medical procedure, or a programming problem. Your composure is a great quality to possesss.

Ryan Noughton
You asked some of the best questions during class. You literally have a pulse on the Internet and always seem to know about the different tools out there. You gave me some valuable insights into my web app business model and I definitely appreciate it.

Alex Bartling
You were always finding shiny objects to help you code. Sometimes we get rooted in our routine and it's okay to change it up once in a while. I am also jealous of your second SSD in your MacBook Pro. I need it!

Tom Brown
My fellow broker. We came into Code Academy wanting to solve the same problem, but with different solutions. Our discussions were always productive and it was refreshing to get feedback from someone with the same domain expertise.

Josh Mangoubi
You are an underrated coder. I loved your directness and the matter of fact way you explained concepts. That's it.

Dan Allison
The quietest of the bunch and one of the most talented. You're an amazing animator and artist. When they say that programming can make you dangerous, you are the person that comes to mind. You have shown me that it's important to embrace what you know.

Raghu Betina
You're a great teacher, but more importantly you have confidence in your skills. You have taught me not to second guess myself. I'm looking forward to working with you in 2012!

Dave Mehrman
I can talk shop, rigs and tech with you all day. Your domain expertise in videography is awesome. I did not know about target-disk mode until the wrap-up dinner--that was smooth. I can't wait to finish our Code Academy wrap-up video!

Dave Levine
You came into Code Academy with a business. Wahdle was pitched, tested, and coded over the past three months. Not only is it better, but so are you. I admire your convictions and you have the mettle to be an entrepreneur.

Tom Cullen
You have a strong sense of community and I love that you're helping us stay and learn together. You also drove me to and from several meet-ups, so thank you for that. Highfive, buddy!

Brittany Laughlin
For someone that is constantly on the go and always busy, you have always been kind and sincere. You're an outstanding example of an entrepreneur who values relationships and respects the craft that is software development. Those are great qualities to have.

Dave Fonveille
I remember working next to you at Groupon late on a Saturday night. I didn't realize how many academic degrees you held. It makes sense because your passion for learning is contagious.

Cesar Pereira
Not only are you an amazing tennis player, but you possess an attitude and humbleness that we should all follow. It will be important for each of us to remember what it was like to be a raw beginner. Thanks for being you, Cesar.

Dave Anderson
What's the opposite of synergy? Whatever that is, that's what happens when we pair program. Perhaps we think too much alike, I mean we both happen to be Wolverines. Maybe we should try communicating in Vim instead. But really, I admire your courage to ask the questions that need to be asked. You've gone from Kenya to Chicago and now you're looking to fix Detroit. I endeavor to be as bold as you.

Matt Duff
You left so much to be with us at Code Academy. But now you're going back to Utah and bringing a piece of Chicago with you. Know that you've left a mark with each and every one of us. Your humor and levity has shown me that coding really is fun.

Charles Jackson
We didn't get to pair that much, but you have taught me that it's not always about programming. Good luck in your future endeavors!

Brian Mehrman
You were my go to Ruby guy. You helped me understand how to manipulate hashes within hashes and form them into arrays with my desired data. Watching you in irb or console was always enlightening.

Kevin "Rudy" Musiorski
You wear your heart on your hoodie. You are definitely an idea guy and it makes me excited to pursue each and every idea that I have. I will never forget your impressions of the other students, your "late nights" at Groupon and your closing "surprise" at demo day.

Alfonso Rush
You my friend are profound. You're an artist at what you do. You are passion embodied and that helped fuel me and everyone else for the past three months. If I see a bunch of Yodas, I will ping you.

Michael Verdi
You also asked questions that needed to be ask, but in a way that was funny and light-hearted. Thank you for playing on my flag football team this Fall. We would have not been able to get to the championship game with you. Now that you're moving to Chicago, buy some cleats for the Spring season. I will literally take you to Sports Authority to buy them. Redemption time!

Arvin Dang
Errrvin. I'm excited that you are moving to Chicago! You see the city in a way that I did many years ago. It makes me excited about Chicago all over again, especially with the tech scene booming. You also see opportunities where others don't. I think hashq.it is the best web app idea, amazing. I can't wait to work with you to make Code Academy even better. And let's hit-up all the places on your bucketlist. Just wait for the neighborhood street festivals--that's my thing.

Luis Vega
My fellow Filipino! You are talented, bright, creative, and apparently the best at Z-type. I've already mentioned this, but I will say it again. We take for granted what we have. All you want is to stay in the States. Like you, my parent's came from the Philippines and wanted to make the States their home. I can only imagine what it is was like for them and seeing you now. I will do what I can to help you level-up and get to the next stage.

Jean Bahnik
Thank you for collaborating with me on my blog so that we could look "active" on gitHub. Seriously, I learned virtually all of my git and Heroku commands by pairing with you. My mornings will now be devoid of your sarcastic humor, which I will sincerely miss. More importantly, you became my friend and confidant. So what's the next restaurant on our list? Just tell me when.

Jeff Cohen articulately said, "You are now part of Chicago's Ruby community." So much in the same way that the community welcomed us, it is now our responsibility to do the same. Welcome the next class into our family and remember that we were in their shoes just months ago. Thank you for the lessons and don't forget to.. rake db:migrate.

Seventh Week of Code Academy

Apprenticeship vs Internship

As we draw closer to the last weeks of Code Academy, many of us are looking to the future and talking about apprenticeships and internships. There's a significant difference between the two as an apprenticeship is structured and guided whereas an internship is learning on the go. I think that you can learn in both cases, but an apprenticeship makes sense if you want to write good code, not hurt a business, and learn best practices.

Learning how to craft software is hard and that's why I want to continue learning. Athough I have gained valuable knowledge and skills from Code Academy, I know that there is still much to learn. I plan to explore apprenticeship opportunities, so we'll see what's out there.

Bumps in the road

Progress on my real estate web app has come to a crawl. I initially teamed up with two other Code Academy students, but we haven't been working together on a consistent basis. It's becoming clear that we are going in separate directions, which is fine, but it definitely sets me back.

My MVP for Code Academy is starting to look like this blog and and a marketing site for an apartment building that I have been developing. I'm doing some real estate consulting on the side and was contracted to create a template to advertise buildings. It's shaping up, but the main app that I set out to build during Code Academy has taken a back seat. I plan to pair with other students on my web app, so I hope to make some headway in the next couple of weeks.

APIs

Content is king. Having the ability to pull content and insert it into your web site is essentially. All three of the apps that I am working on utilize content from an API. This week I started to play around with the Twitter API and RentJuice API. The Twitter API is well documented and it's just a matter of time until I can incorporate tweets on this blog. Arvin Dang, Jean Bahnik and I were able to successfully pull tweets, but we were doing them real-time from the API and quickly went over our API call limit. I'm not exactly sure how that happened, because none of us get that much traffic on our blogs. Regardless, I'm going to build-out a model and tables to store tweets and learn how to run a rake task on Heroku. That should be a great tutorial to post, once I figure it out.

The RentJuice API is not as well documented and my inexperience with manipulating hashes will be an obstacle. I'm hoping to get some guidance from my mentor so that I can successfully pull listings from the RentJuice API and have them update accordingly. I'm going to go blind if I keep looking at the raw API feed.

Seventh Week of Code Academy

Apprenticeship vs Internship

As we draw closer to the last weeks of Code Academy, many of us are looking to the future and talking about apprenticeships and internships. There's a significant difference between the two as an apprenticeship is structured and guided whereas an internship is learning on the go. I think that you can learn in both cases, but an apprenticeship makes sense if you want to write good code, not hurt a business, and learn best practices.

Learning how to craft software is hard and that's why I want to continue learning. Athough I have gained valuable knowledge and skills from Code Academy, I know that there is still much to learn. I plan to explore apprenticeship opportunities, so we'll see what's out there.

Bumps in the road

Progress on my real estate web app has come to a crawl. I initially teamed up with two other Code Academy students, but we haven't been working together on a consistent basis. It's becoming clear that we are going in separate directions, which is fine, but it definitely sets me back.

My MVP for Code Academy is starting to look like this blog and and a marketing site for an apartment building that I have been developing. I'm doing some real estate consulting on the side and was contracted to create a template to advertise buildings. It's shaping up, but the main app that I set out to build during Code Academy has taken a back seat. I plan to pair with other students on my web app, so I hope to make some headway in the next couple of weeks.

APIs

Content is king. Having the ability to pull content and insert it into your web site is essentially. All three of the apps that I am working on utilize content from an API. This week I started to play around with the Twitter API and RentJuice API. The Twitter API is well documented and it's just a matter of time until I can incorporate tweets on this blog. Arvin Dang, Jean Bahnik and I were able to successfully pull tweets, but we were doing them real-time from the API and quickly went over our API call limit. I'm not exactly sure how that happened, because none of us get that much traffic on our blogs. Regardless, I'm going to build-out a model and tables to store tweets and learn how to run a rake task on Heroku. That should be a great tutorial to post, once I figure it out.

The RentJuice API is not as well documented and my inexperience with manipulating hashes will be an obstacle. I'm hoping to get some guidance from my mentor so that I can successfully pull listings from the RentJuice API and have them update accordingly. I'm going to go blind if I keep looking at the raw API feed.

Seventh Week of Code Academy

Apprenticeship vs Internship

As we draw closer to the last weeks of Code Academy, many of us are looking to the future and talking about apprenticeships and internships. There's a significant difference between the two as an apprenticeship is structured and guided whereas an internship is learning on the go. I think that you can learn in both cases, but an apprenticeship makes sense if you want to write good code, not hurt a business, and learn best practices.

Learning how to craft software is hard and that's why I want to continue learning. Athough I have gained valuable knowledge and skills from Code Academy, I know that there is still much to learn. I plan to explore apprenticeship opportunities, so we'll see what's out there.

Bumps in the road

Progress on my real estate web app has come to a crawl. I initially teamed up with two other Code Academy students, but we haven't been working together on a consistent basis. It's becoming clear that we are going in separate directions, which is fine, but it definitely sets me back.

My MVP for Code Academy is starting to look like this blog and and a marketing site for an apartment building that I have been developing. I'm doing some real estate consulting on the side and was contracted to create a template to advertise buildings. It's shaping up, but the main app that I set out to build during Code Academy has taken a back seat. I plan to pair with other students on my web app, so I hope to make some headway in the next couple of weeks.

APIs

Content is king. Having the ability to pull content and insert it into your web site is essentially. All three of the apps that I am working on utilize content from an API. This week I started to play around with the Twitter API and RentJuice API. The Twitter API is well documented and it's just a matter of time until I can incorporate tweets on this blog. Arvin Dang, Jean Bahnik and I were able to successfully pull tweets, but we were doing them real-time from the API and quickly went over our API call limit. I'm not exactly sure how that happened, because none of us get that much traffic on our blogs. Regardless, I'm going to build-out a model and tables to store tweets and learn how to run a rake task on Heroku. That should be a great tutorial to post, once I figure it out.

The RentJuice API is not as well documented and my inexperience with manipulating hashes will be an obstacle. I'm hoping to get some guidance from my mentor so that I can successfully pull listings from the RentJuice API and have them update accordingly. I'm going to go blind if I keep looking at the raw API feed.

Configuring the Paperclip Gem

I decided that it's time to include photos on this blog. It was looking a bit too minimalistic for my tastes. Although I wanted to handcraft the functionality, I chose to go with the Paperclip gem because I've read good feedback about it. So far, it's working well and it wasn't too difficult to configure.

Also, this blog is hosted on Heroku and, from my understanding, Heroku requires that you have a separate solution for storage. That solution is Amazon's S3 storage service which I'll go over as well.

So let's get started with the first step which is to include the necessary gems for your Rails app. Edit your gem file to include both the paperclip gem and the aws-s3 gem as followed:

#Gemfile
gem 'paperclip'
gem 'aws-s3'

Run a quick bundle to get the gems installed.

bundle

Next step is to create some space in your tables for the image attributes. I created columns in my Post table with the migration command and it looked like this:

rails generate migration AddImageColumnsToPost image_file_name:string image_content_type:string stringimage_file_size:integer image_updated:datetime

Don't forget to migrate your database:

rake db:migrate

Modify the model in which you plan to attach images. In my case, I edited the Post model with the syntax below. It includes styling for different types of image sizes and credentials for connecting to Amazon's S3 services. You will need to create an AS3 account, and get a public and private key. Here's a quick look of my Post model.

class Post < ActiveRecord::Base

  has_attached_file :image, :styles => { :medium => "640x640>" },
                    :storage => :s3,
                    :bucket => 'BUCKET NAME',
                    :s3_credentials => Rails.root.join('config', 's3.yml')
end

Although you can put your S3 keys directly in the model, I found some advice on Stack Overflow that recommends setting up a separate s3.yml file in the config directory of your app with the keys. This will help with discrepancies between your production and development environment. Here's what my s3.yml file looked like:

#config/s3.yml

development:
  access_key_id: AS3 ACCESS KEY
  secret_access_key: AS3 ACCESS KEY
  bucket: BUCKET NAME

production:
  access_key_id: AS3 ACCESS KEY
  secret_access_key: AS3 SECRET KEY
  bucket: BUCKET NAME

Modify your upload form to reference the :image hash.

<% f.file_field :image %>

Also modify your views to include the image method that will call the image stored on AS3 for the given object. My Post object has an attached file which can be called using the image method that I defined in the Post model. It doesn't have to be named image, but it seemed appropriate for a blog.

<%= image_tag @post.image.url(:medium) %>

Push your changes up to Heroku and see if it works. I had to run the following command to get my keys to work.

heroku config:add S3_KEY=abcd S3_SECRET=abcd

If you need additional help check out the following guides which are definitely helpful:

Heroku: Uploading Files to S3

Heroku: Configuration and Config Vars

GitHub: paperclip

Configuring the Paperclip Gem

I decided that it's time to include photos on this blog. It was looking a bit too minimalistic for my tastes. Although I wanted to handcraft the functionality, I chose to go with the Paperclip gem because I've read good feedback about it. So far, it's working well and it wasn't too difficult to configure.

Also, this blog is hosted on Heroku and, from my understanding, Heroku requires that you have a separate solution for storage. That solution is Amazon's S3 storage service which I'll go over as well.

So let's get started with the first step which is to include the necessary gems for your Rails app. Edit your gem file to include both the paperclip gem and the aws-s3 gem as followed:

#Gemfile
gem 'paperclip'
gem 'aws-s3'

Run a quick bundle to get the gems installed.

bundle

Next step is to create some space in your tables for the image attributes. I created columns in my Post table with the migration command and it looked like this:

rails generate migration AddImageColumnsToPost image_file_name:string image_content_type:string stringimage_file_size:integer image_updated:datetime

Don't forget to migrate your database:

rake db:migrate

Modify the model in which you plan to attach images. In my case, I edited the Post model with the syntax below. It includes styling for different types of image sizes and credentials for connecting to Amazon's S3 services. You will need to create an AS3 account, and get a public and private key. Here's a quick look of my Post model.

class Post < ActiveRecord::Base

  has_attached_file :image, :styles => { :medium => "640x640>" },
                    :storage => :s3,
                    :bucket => 'BUCKET NAME',
                    :s3_credentials => Rails.root.join('config', 's3.yml')
end

Although you can put your S3 keys directly in the model, I found some advice on Stack Overflow that recommends setting up a separate s3.yml file in the config directory of your app with the keys. This will help with discrepancies between your production and development environment. Here's what my s3.yml file looked like:

#config/s3.yml

development:
  access_key_id: AS3 ACCESS KEY
  secret_access_key: AS3 ACCESS KEY
  bucket: BUCKET NAME

production:
  access_key_id: AS3 ACCESS KEY
  secret_access_key: AS3 SECRET KEY
  bucket: BUCKET NAME

Modify your upload form to reference the :image hash.

<% f.file_field :image %>

Also modify your views to include the image method that will call the image stored on AS3 for the given object. My Post object has an attached file which can be called using the image method that I defined in the Post model. It doesn't have to be named image, but it seemed appropriate for a blog.

<%= image_tag @post.image.url(:medium) %>

Push your changes up to Heroku and see if it works. I had to run the following command to get my keys to work.

heroku config:add S3_KEY=abcd S3_SECRET=abcd

If you need additional help check out the following guides which are definitely helpful:

Heroku: Uploading Files to S3

Heroku: Configuration and Config Vars

GitHub: paperclip

Configuring the Paperclip Gem

I decided that it's time to include photos on this blog. It was looking a bit too minimalistic for my tastes. Although I wanted to handcraft the functionality, I chose to go with the Paperclip gem because I've read good feedback about it. So far, it's working well and it wasn't too difficult to configure.

Also, this blog is hosted on Heroku and, from my understanding, Heroku requires that you have a separate solution for storage. That solution is Amazon's S3 storage service which I'll go over as well.

So let's get started with the first step which is to include the necessary gems for your Rails app. Edit your gem file to include both the paperclip gem and the aws-s3 gem as followed:

#Gemfile
gem 'paperclip'
gem 'aws-s3'

Run a quick bundle to get the gems installed.

bundle

Next step is to create some space in your tables for the image attributes. I created columns in my Post table with the migration command and it looked like this:

rails generate migration AddImageColumnsToPost image_file_name:string image_content_type:string stringimage_file_size:integer image_updated:datetime

Don't forget to migrate your database:

rake db:migrate

Modify the model in which you plan to attach images. In my case, I edited the Post model with the syntax below. It includes styling for different types of image sizes and credentials for connecting to Amazon's S3 services. You will need to create an AS3 account, and get a public and private key. Here's a quick look of my Post model.

class Post < ActiveRecord::Base

  has_attached_file :image, :styles => { :medium => "640x640>" },
                    :storage => :s3,
                    :bucket => 'BUCKET NAME',
                    :s3_credentials => Rails.root.join('config', 's3.yml')
end

Although you can put your S3 keys directly in the model, I found some advice on Stack Overflow that recommends setting up a separate s3.yml file in the config directory of your app with the keys. This will help with discrepancies between your production and development environment. Here's what my s3.yml file looked like:

#config/s3.yml

development:
  access_key_id: AS3 ACCESS KEY
  secret_access_key: AS3 ACCESS KEY
  bucket: BUCKET NAME

production:
  access_key_id: AS3 ACCESS KEY
  secret_access_key: AS3 SECRET KEY
  bucket: BUCKET NAME

Modify your upload form to reference the :image hash.

<% f.file_field :image %>

Also modify your views to include the image method that will call the image stored on AS3 for the given object. My Post object has an attached file which can be called using the image method that I defined in the Post model. It doesn't have to be named image, but it seemed appropriate for a blog.

<%= image_tag @post.image.url(:medium) %>

Push your changes up to Heroku and see if it works. I had to run the following command to get my keys to work.

heroku config:add S3_KEY=abcd S3_SECRET=abcd

If you need additional help check out the following guides which are definitely helpful:

Heroku: Uploading Files to S3

Heroku: Configuration and Config Vars

GitHub: paperclip

Sixth Week of Code Academy

Code and Coffee
Chicago has a wonderful software development community, especially for Ruby on Rails. I attended my first Code and Coffee which is a weekly meet-up hosted by the good guys at Hashrocket. I met Dave Lyon, the event organizer, and met up with several other Code Academy students. It's a great way to get the morning started--MacBooks fired-up, coffee, like-minded software craftsman and an informal atmosphere.

Pairing
This week I paired with Geoff Massanek and Brian Mehrman. Geoff has been a Java developer for some time now and is easily the most skilled Code Academy student. We built an app without scaffolding or model generation. It was a great learning exercise as I had to remember the base classes from which models and controllers are derived. Geoff wanted to used HAML which is a shorthand for writing tags. Although it was good to get exposed to HAML, I think it's a bit too much for my learning stage right now. Regardless, thanks for the fun pairing Geoff!

Brian comes from the video game industry and is a whiz at just about everything. We paired up to create client side AJAX and had fun manipulating jQuery effects during class.

I still need to pair with some other students, but not everyone gets to class on time. We're halfway through Code Academy, so I hope to pair-up with the rest of the Tuesday/Thursday class.

Sixth Week of Code Academy

Code and Coffee
Chicago has a wonderful software development community, especially for Ruby on Rails. I attended my first Code and Coffee which is a weekly meet-up hosted by the good guys at Hashrocket. I met Dave Lyon, the event organizer, and met up with several other Code Academy students. It's a great way to get the morning started--MacBooks fired-up, coffee, like-minded software craftsman and an informal atmosphere.

Pairing
This week I paired with Geoff Massanek and Brian Mehrman. Geoff has been a Java developer for some time now and is easily the most skilled Code Academy student. We built an app without scaffolding or model generation. It was a great learning exercise as I had to remember the base classes from which models and controllers are derived. Geoff wanted to used HAML which is a shorthand for writing tags. Although it was good to get exposed to HAML, I think it's a bit too much for my learning stage right now. Regardless, thanks for the fun pairing Geoff!

Brian comes from the video game industry and is a whiz at just about everything. We paired up to create client side AJAX and had fun manipulating jQuery effects during class.

I still need to pair with some other students, but not everyone gets to class on time. We're halfway through Code Academy, so I hope to pair-up with the rest of the Tuesday/Thursday class.

Sixth Week of Code Academy

Code and Coffee
Chicago has a wonderful software development community, especially for Ruby on Rails. I attended my first Code and Coffee which is a weekly meet-up hosted by the good guys at Hashrocket. I met Dave Lyon, the event organizer, and met up with several other Code Academy students. It's a great way to get the morning started--MacBooks fired-up, coffee, like-minded software craftsman and an informal atmosphere.

Pairing
This week I paired with Geoff Massanek and Brian Mehrman. Geoff has been a Java developer for some time now and is easily the most skilled Code Academy student. We built an app without scaffolding or model generation. It was a great learning exercise as I had to remember the base classes from which models and controllers are derived. Geoff wanted to used HAML which is a shorthand for writing tags. Although it was good to get exposed to HAML, I think it's a bit too much for my learning stage right now. Regardless, thanks for the fun pairing Geoff!

Brian comes from the video game industry and is a whiz at just about everything. We paired up to create client side AJAX and had fun manipulating jQuery effects during class.

I still need to pair with some other students, but not everyone gets to class on time. We're halfway through Code Academy, so I hope to pair-up with the rest of the Tuesday/Thursday class.

Fifth Week of Code Academy

Building apps was the keystone of this week as we completed the Air app, showcased our "breakable toys" and worked on our main projects. Now that I have a solid foundation of the Rails framework, I can focus on Ruby syntax, refactoring, domain modeling and blending the various concepts that we have learned in class.

Air App
We finished the Air app this week which incorporated all the concepts that we have learned thus far. The Air app displays a list of flights in which a user can book a reservation. The user can create an account, login, book a reservation and search for flights. As simple as it sounds, we needed to create and connect models for Airports, Flights, Users and Sessions. Rendering a search box easy, but returning scoped results required a bit more thought. We spent three class days building the Air app and many of us have rebuilt it from scratch which is an extremely helpful exercise. Props to Jeff on this exercise.

Pairing
This is the first week where I've had some repeat pairings, but they were nonetheless helpful and productive. I paired up with Cesar Pereria and Jean Bahnik both of whom are great to work with. There are still some students in the Tuesday/Thursday class that I need to pair-up with. So if you're a CA student reading this blog post and we still haven't paired-up, I'm coming for you!

Lighting Strikes
In-line with Obtiva's wonderful Geekfest culture, we began doing our own lighting talks on Thursday and Saturday. I gave an impromptu lighting talk which showcased this blog. As plain as it looks, it's a Rails driven web app that I created from scratch. When Neal and Mike asked us to blog weekly, I decided to create a Rails blog for fun. I switched-up the DNS on my GoDaddy account to point to Zerigo DNS and now have this blog hosted by Heroku. No more Wordpress! I have intentionally done everything manually so that I can learn. I created methods to salt my own passwords wich was a definite challenge without the bcrypt gem. I made my CSS simple and went for a clean, simple look.

My mentor, Corey Haines, helped me get the RSS feed working which as way simpler than I had imagined. I still need learn how to incorporate photos and images. I prefer to do everything without a gem, so if I can get that to work it will be another mini-victory. Regardless, feel free to subscribe to this blog!

Web App
Tom Brown, Paul Rosenzweig and I made some significant progress on our web app this week. We successfully pulled from Google Maps using the Javascript API, incorporated the Geocoder gem to drop in latitude and longitude and continued to refine our Address model. Our challenge this week is to plot neighborhoods based on GPS points which should be fun to figure out. I've realized that I need to start learning Javascript like yesterday, especially if I want to use CoffeeScript.

Back Back Forward
A handful of us had a fun outing to the Galloping Ghost on Saturday. Imagine all of your favorite and obscure arcade games in one room, on free play, all day, just for $15. I haven't felt more like a kid in years when I stepped into the arcade. It was fun trying to remember how Raiden can fly across the screen in Mortal Kombat..Back Back forward! Jin unsuccessfully tried to win Samurai Showdown, but I'm sure he fun nonetheless. Several of us won X-Men and TMNT. I played a lot of Tekken, Street Fight vs Capcom, NFL Blitz, Rampage, and Mortal Kombat. Next time Silent Scope. If you ever enjoyed playing arcade games, then you owe it to yourself to visit the Galloping Ghost.

We're almost half-way through Code Academy and I'm starting look for opportunities to further my learning. I'm looking forward to tommorrow's Geekfest which is all about apprenticeships.

Fifth Week of Code Academy

Building apps was the keystone of this week as we completed the Air app, showcased our "breakable toys" and worked on our main projects. Now that I have a solid foundation of the Rails framework, I can focus on Ruby syntax, refactoring, domain modeling and blending the various concepts that we have learned in class.

Air App
We finished the Air app this week which incorporated all the concepts that we have learned thus far. The Air app displays a list of flights in which a user can book a reservation. The user can create an account, login, book a reservation and search for flights. As simple as it sounds, we needed to create and connect models for Airports, Flights, Users and Sessions. Rendering a search box easy, but returning scoped results required a bit more thought. We spent three class days building the Air app and many of us have rebuilt it from scratch which is an extremely helpful exercise. Props to Jeff on this exercise.

Pairing
This is the first week where I've had some repeat pairings, but they were nonetheless helpful and productive. I paired up with Cesar Pereria and Jean Bahnik both of whom are great to work with. There are still some students in the Tuesday/Thursday class that I need to pair-up with. So if you're a CA student reading this blog post and we still haven't paired-up, I'm coming for you!

Lighting Strikes
In-line with Obtiva's wonderful Geekfest culture, we began doing our own lighting talks on Thursday and Saturday. I gave an impromptu lighting talk which showcased this blog. As plain as it looks, it's a Rails driven web app that I created from scratch. When Neal and Mike asked us to blog weekly, I decided to create a Rails blog for fun. I switched-up the DNS on my GoDaddy account to point to Zerigo DNS and now have this blog hosted by Heroku. No more Wordpress! I have intentionally done everything manually so that I can learn. I created methods to salt my own passwords wich was a definite challenge without the bcrypt gem. I made my CSS simple and went for a clean, simple look.

My mentor, Corey Haines, helped me get the RSS feed working which as way simpler than I had imagined. I still need learn how to incorporate photos and images. I prefer to do everything without a gem, so if I can get that to work it will be another mini-victory. Regardless, feel free to subscribe to this blog!

Web App
Tom Brown, Paul Rosenzweig and I made some significant progress on our web app this week. We successfully pulled from Google Maps using the Javascript API, incorporated the Geocoder gem to drop in latitude and longitude and continued to refine our Address model. Our challenge this week is to plot neighborhoods based on GPS points which should be fun to figure out. I've realized that I need to start learning Javascript like yesterday, especially if I want to use CoffeeScript.

Back Back Forward
A handful of us had a fun outing to the Galloping Ghost on Saturday. Imagine all of your favorite and obscure arcade games in one room, on free play, all day, just for $15. I haven't felt more like a kid in years when I stepped into the arcade. It was fun trying to remember how Raiden can fly across the screen in Mortal Kombat..Back Back forward! Jin unsuccessfully tried to win Samurai Showdown, but I'm sure he fun nonetheless. Several of us won X-Men and TMNT. I played a lot of Tekken, Street Fight vs Capcom, NFL Blitz, Rampage, and Mortal Kombat. Next time Silent Scope. If you ever enjoyed playing arcade games, then you owe it to yourself to visit the Galloping Ghost.

We're almost half-way through Code Academy and I'm starting look for opportunities to further my learning. I'm looking forward to tommorrow's Geekfest which is all about apprenticeships.

Fifth Week of Code Academy

Building apps was the keystone of this week as we completed the Air app, showcased our "breakable toys" and worked on our main projects. Now that I have a solid foundation of the Rails framework, I can focus on Ruby syntax, refactoring, domain modeling and blending the various concepts that we have learned in class.

Air App
We finished the Air app this week which incorporated all the concepts that we have learned thus far. The Air app displays a list of flights in which a user can book a reservation. The user can create an account, login, book a reservation and search for flights. As simple as it sounds, we needed to create and connect models for Airports, Flights, Users and Sessions. Rendering a search box easy, but returning scoped results required a bit more thought. We spent three class days building the Air app and many of us have rebuilt it from scratch which is an extremely helpful exercise. Props to Jeff on this exercise.

Pairing
This is the first week where I've had some repeat pairings, but they were nonetheless helpful and productive. I paired up with Cesar Pereria and Jean Bahnik both of whom are great to work with. There are still some students in the Tuesday/Thursday class that I need to pair-up with. So if you're a CA student reading this blog post and we still haven't paired-up, I'm coming for you!

Lighting Strikes
In-line with Obtiva's wonderful Geekfest culture, we began doing our own lighting talks on Thursday and Saturday. I gave an impromptu lighting talk which showcased this blog. As plain as it looks, it's a Rails driven web app that I created from scratch. When Neal and Mike asked us to blog weekly, I decided to create a Rails blog for fun. I switched-up the DNS on my GoDaddy account to point to Zerigo DNS and now have this blog hosted by Heroku. No more Wordpress! I have intentionally done everything manually so that I can learn. I created methods to salt my own passwords wich was a definite challenge without the bcrypt gem. I made my CSS simple and went for a clean, simple look.

My mentor, Corey Haines, helped me get the RSS feed working which as way simpler than I had imagined. I still need learn how to incorporate photos and images. I prefer to do everything without a gem, so if I can get that to work it will be another mini-victory. Regardless, feel free to subscribe to this blog!

Web App
Tom Brown, Paul Rosenzweig and I made some significant progress on our web app this week. We successfully pulled from Google Maps using the Javascript API, incorporated the Geocoder gem to drop in latitude and longitude and continued to refine our Address model. Our challenge this week is to plot neighborhoods based on GPS points which should be fun to figure out. I've realized that I need to start learning Javascript like yesterday, especially if I want to use CoffeeScript.

Back Back Forward
A handful of us had a fun outing to the Galloping Ghost on Saturday. Imagine all of your favorite and obscure arcade games in one room, on free play, all day, just for $15. I haven't felt more like a kid in years when I stepped into the arcade. It was fun trying to remember how Raiden can fly across the screen in Mortal Kombat..Back Back forward! Jin unsuccessfully tried to win Samurai Showdown, but I'm sure he fun nonetheless. Several of us won X-Men and TMNT. I played a lot of Tekken, Street Fight vs Capcom, NFL Blitz, Rampage, and Mortal Kombat. Next time Silent Scope. If you ever enjoyed playing arcade games, then you owe it to yourself to visit the Galloping Ghost.

We're almost half-way through Code Academy and I'm starting look for opportunities to further my learning. I'm looking forward to tommorrow's Geekfest which is all about apprenticeships.

Fourth Week of Code Academy

Just build it. Those three words have been going through my head all week much like a Nike ad campaign.

Four weeks of Code Academy have gone by incredibly fast. I have the basic skills to craft web apps, but I need to hone them, practice them and continue to expand them. I make it part of my routine to build an app or a particular function every week. It may not be pretty, but I'll have gained valuable experience in the art that is software craftsmanship.

Cookies, sessions, and mailers
Jeff taught us how to utilize cookies so that we can create, destroy, and identify sessions. Mailers were surprisingly easy to create, thank you ActionMailer! I'm excited that we know how to manage sessions so that we can blend it with user logins and authentication. I particularly enjoyed knowing about the cryptographic encryption of the cookie or one-way hash. Word to the wise, enable HTTPS whenever you're connected to an unsecured wireless network. It is far too easy for a hacker to intercept cookies "over the air" and store them on their browser. That is a common way to hijack Twitter, Facebook, and email accounts that do not use HTTPS. You don't even need to be hacker to hi-jack cookies, you just need to install the Firefox extension, Firesheep. Scary.

Pairing
Another great week of pairing with Dave Mehrman and Paul Rosenzweig. Dave is a video creator/designer working on a web app with a great business model. It was fun pairing up with him because he quickly identifies and articulates what he does and does not know. We breezed through the first labs with ease and then we got a little stumped on the last lab. We worked it out at the end and it was a great learning experience.

Paul is a University of Chicago student, originally from Boston, who is a simply a whiz. When we worked on our Academy Air app, we decided to calculate the distance of a flight taking the curvature of the earth into account. We added two columns into our airport table, lat and lng, populated them with the corresponding geopoints and used the Haversine formula to calculate the distance. The first two parts were easy, but incorporating the algorithm into an method was much more challenging. Paul was able to figure it out and the method ended up looking like this:

  def calculate_distance
    airport1 = departing_from
    airport2 = arriving_at
    to_rad = lambda { |deg| deg*3.14159/180 }
    a = Math.sin((to_rad[airport1.lat] - to_rad[airport2.lat])/2)**2
          +Math.cos(to_rad[airport1.lat])*Math.cos(to_rad[airport2.lat])
          *(Math.sin((to_rad[airport1.lng - airport2.lng])/2)**2)
    c = 2*Math.atan2(Math.sqrt(a), Math.sqrt(1-a))
    self.distance = (3959*c).to_i
  end

Paul you're awesome. Excited to continue working with you on our project!

Interesting > Impressive
Suneel Gupta, a lead product manager at Groupon, shared some valuable insights into product iteration. He shared the process of focusing on user experience, branding, scaling, and learning. And that you must take what you learn and apply it back to the user experience. I love this concept, especially if your business model can be easily replicated. There are countless numbers of deal sites available to consumers. Why should people go back to Groupon? Because of their product variety and user experience. It's important to create a strong user experience so that consumers come back to you. The business models of the Code Academy students, including mine, are predicated on domain expertise. So with a low barrier to entry for competitors, it will be important to create a strong brand, scale quickly and provide a rich user experience.

Another great concept that Suneel shared was to create things that are interesting not impressive. Far too often, you see software or web apps with too many features. Most of those features are not always added with the user in mind, but for "selling" purposes. Sure it may present well to investors, but it won't necessarily make your product engaging and easy to use. Love the concept of Interesting > Impressive.

Fourth Week of Code Academy

Just build it. Those three words have been going through my head all week much like a Nike ad campaign.

Four weeks of Code Academy have gone by incredibly fast. I have the basic skills to craft web apps, but I need to hone them, practice them and continue to expand them. I make it part of my routine to build an app or a particular function every week. It may not be pretty, but I'll have gained valuable experience in the art that is software craftsmanship.

Cookies, sessions, and mailers
Jeff taught us how to utilize cookies so that we can create, destroy, and identify sessions. Mailers were surprisingly easy to create, thank you ActionMailer! I'm excited that we know how to manage sessions so that we can blend it with user logins and authentication. I particularly enjoyed knowing about the cryptographic encryption of the cookie or one-way hash. Word to the wise, enable HTTPS whenever you're connected to an unsecured wireless network. It is far too easy for a hacker to intercept cookies "over the air" and store them on their browser. That is a common way to hijack Twitter, Facebook, and email accounts that do not use HTTPS. You don't even need to be hacker to hi-jack cookies, you just need to install the Firefox extension, Firesheep. Scary.

Pairing
Another great week of pairing with Dave Mehrman and Paul Rosenzweig. Dave is a video creator/designer working on a web app with a great business model. It was fun pairing up with him because he quickly identifies and articulates what he does and does not know. We breezed through the first labs with ease and then we got a little stumped on the last lab. We worked it out at the end and it was a great learning experience.

Paul is a University of Chicago student, originally from Boston, who is a simply a whiz. When we worked on our Academy Air app, we decided to calculate the distance of a flight taking the curvature of the earth into account. We added two columns into our airport table, lat and lng, populated them with the corresponding geopoints and used the Haversine formula to calculate the distance. The first two parts were easy, but incorporating the algorithm into an method was much more challenging. Paul was able to figure it out and the method ended up looking like this:

  def calculate_distance
    airport1 = departing_from
    airport2 = arriving_at
    to_rad = lambda { |deg| deg*3.14159/180 }
    a = Math.sin((to_rad[airport1.lat] - to_rad[airport2.lat])/2)**2
          +Math.cos(to_rad[airport1.lat])*Math.cos(to_rad[airport2.lat])
          *(Math.sin((to_rad[airport1.lng - airport2.lng])/2)**2)
    c = 2*Math.atan2(Math.sqrt(a), Math.sqrt(1-a))
    self.distance = (3959*c).to_i
  end

Paul you're awesome. Excited to continue working with you on our project!

Interesting > Impressive
Suneel Gupta, a lead product manager at Groupon, shared some valuable insights into product iteration. He shared the process of focusing on user experience, branding, scaling, and learning. And that you must take what you learn and apply it back to the user experience. I love this concept, especially if your business model can be easily replicated. There are countless numbers of deal sites available to consumers. Why should people go back to Groupon? Because of their product variety and user experience. It's important to create a strong user experience so that consumers come back to you. The business models of the Code Academy students, including mine, are predicated on domain expertise. So with a low barrier to entry for competitors, it will be important to create a strong brand, scale quickly and provide a rich user experience.

Another great concept that Suneel shared was to create things that are interesting not impressive. Far too often, you see software or web apps with too many features. Most of those features are not always added with the user in mind, but for "selling" purposes. Sure it may present well to investors, but it won't necessarily make your product engaging and easy to use. Love the concept of Interesting > Impressive.

Fourth Week of Code Academy

Just build it. Those three words have been going through my head all week much like a Nike ad campaign.

Four weeks of Code Academy have gone by incredibly fast. I have the basic skills to craft web apps, but I need to hone them, practice them and continue to expand them. I make it part of my routine to build an app or a particular function every week. It may not be pretty, but I'll have gained valuable experience in the art that is software craftsmanship.

Cookies, sessions, and mailers
Jeff taught us how to utilize cookies so that we can create, destroy, and identify sessions. Mailers were surprisingly easy to create, thank you ActionMailer! I'm excited that we know how to manage sessions so that we can blend it with user logins and authentication. I particularly enjoyed knowing about the cryptographic encryption of the cookie or one-way hash. Word to the wise, enable HTTPS whenever you're connected to an unsecured wireless network. It is far too easy for a hacker to intercept cookies "over the air" and store them on their browser. That is a common way to hijack Twitter, Facebook, and email accounts that do not use HTTPS. You don't even need to be hacker to hi-jack cookies, you just need to install the Firefox extension, Firesheep. Scary.

Pairing
Another great week of pairing with Dave Mehrman and Paul Rosenzweig. Dave is a video creator/designer working on a web app with a great business model. It was fun pairing up with him because he quickly identifies and articulates what he does and does not know. We breezed through the first labs with ease and then we got a little stumped on the last lab. We worked it out at the end and it was a great learning experience.

Paul is a University of Chicago student, originally from Boston, who is a simply a whiz. When we worked on our Academy Air app, we decided to calculate the distance of a flight taking the curvature of the earth into account. We added two columns into our airport table, lat and lng, populated them with the corresponding geopoints and used the Haversine formula to calculate the distance. The first two parts were easy, but incorporating the algorithm into an method was much more challenging. Paul was able to figure it out and the method ended up looking like this:

  def calculate_distance
    airport1 = departing_from
    airport2 = arriving_at
    to_rad = lambda { |deg| deg*3.14159/180 }
    a = Math.sin((to_rad[airport1.lat] - to_rad[airport2.lat])/2)**2
          +Math.cos(to_rad[airport1.lat])*Math.cos(to_rad[airport2.lat])
          *(Math.sin((to_rad[airport1.lng - airport2.lng])/2)**2)
    c = 2*Math.atan2(Math.sqrt(a), Math.sqrt(1-a))
    self.distance = (3959*c).to_i
  end

Paul you're awesome. Excited to continue working with you on our project!

Interesting > Impressive
Suneel Gupta, a lead product manager at Groupon, shared some valuable insights into product iteration. He shared the process of focusing on user experience, branding, scaling, and learning. And that you must take what you learn and apply it back to the user experience. I love this concept, especially if your business model can be easily replicated. There are countless numbers of deal sites available to consumers. Why should people go back to Groupon? Because of their product variety and user experience. It's important to create a strong user experience so that consumers come back to you. The business models of the Code Academy students, including mine, are predicated on domain expertise. So with a low barrier to entry for competitors, it will be important to create a strong brand, scale quickly and provide a rich user experience.

Another great concept that Suneel shared was to create things that are interesting not impressive. Far too often, you see software or web apps with too many features. Most of those features are not always added with the user in mind, but for "selling" purposes. Sure it may present well to investors, but it won't necessarily make your product engaging and easy to use. Love the concept of Interesting > Impressive.

Third Week of Code Academy

The third week of Code Academy was full of new material as we were were introduced to the complexities of database schema and nesting relationships.

Tables and Relationships
We created several models that were related to one another in both One-to-Many and Many-to-Many relationships. Jeff Cohen added the wrinkle of nesting, which led to some serious adjustments in the code. We had a some challenging labs trying to figure out out to reflect the nested relationships in our models, controllers and views. Learning how to create a relational database with many tables will be very important in our web applications. I'm glad that I have working knowledge of tables, keys and database schema. It helped me push past database conceptualization and focus on writing the code to implement the different relationships.

I have to say that Active Record is awesome! I have no working knowledge of SQL queries and Jeff pointed out that the lack of SQL expertise was a barrier to entry for web application development. But with the advent of Active Record, he compared it to a "black hole" that he could simply not resist.

Pairing and Learning Pivoting
This week, I got to pair with the eclectic Alfonso Rush and Cesar Pereria. Both were great pairings and I look forward to new pairings this week. Our instruction was altered this week as we now have lecture without using computers. Jeff introduces concepts, demonstrates them in an application and then we start our lab. I like this approach as it makes me focus on the higher-level concepts and allows me to jot down notes without having to write any code. When we start the lab, it's a much richer learning experience as we need to go through a thought process and write the appropriate code.

Thanks to Neal, Mike and Jeff for always taking our feedback into consideration!

Business Model Canvas
We presented our business model canvas on Thursday last week. I really enjoyed the book Business Model Generation by Alexander Osterwalder and chose to go with the business model canvas rather than the lean canvas. It was very interesting to see everyone's business model and how they plan to execute. There were some strong well-thought out models and some more conceptual and exploratory. A lesson to be learned is that when you're developing a product with the hopes of monetizing it, you absolutely need a sound business model. You also need to have the presence in mind to change parts of your business models as conditions change. I hope we can do more business modeling during the course of Code Academy, love it.

Goodbye Job, Hello Career
I gave my notice to leave my job last week. I have been with Chicago Apartment Finders for almost seven years and, as a Managing Broker, I have surmounted a great deal of real estate experience and have developed strong professional and personal relationships. I've been transitioning myself out for sometime, but the time has come to complete that transition.

I have left a great mark on CAF and, more importantly, the people whom I have worked with over the years have their mark on me. I am grateful to have been part of the best apartment broker in Chicago.

With this change, also comes a new drive and a hunger to succeed. I'm happy to say that I've "emptied my cup" and can now make the most of Code Academy.

Third Week of Code Academy

The third week of Code Academy was full of new material as we were were introduced to the complexities of database schema and nesting relationships.

Tables and Relationships
We created several models that were related to one another in both One-to-Many and Many-to-Many relationships. Jeff Cohen added the wrinkle of nesting, which led to some serious adjustments in the code. We had a some challenging labs trying to figure out out to reflect the nested relationships in our models, controllers and views. Learning how to create a relational database with many tables will be very important in our web applications. I'm glad that I have working knowledge of tables, keys and database schema. It helped me push past database conceptualization and focus on writing the code to implement the different relationships.

I have to say that Active Record is awesome! I have no working knowledge of SQL queries and Jeff pointed out that the lack of SQL expertise was a barrier to entry for web application development. But with the advent of Active Record, he compared it to a "black hole" that he could simply not resist.

Pairing and Learning Pivoting
This week, I got to pair with the eclectic Alfonso Rush and Cesar Pereria. Both were great pairings and I look forward to new pairings this week. Our instruction was altered this week as we now have lecture without using computers. Jeff introduces concepts, demonstrates them in an application and then we start our lab. I like this approach as it makes me focus on the higher-level concepts and allows me to jot down notes without having to write any code. When we start the lab, it's a much richer learning experience as we need to go through a thought process and write the appropriate code.

Thanks to Neal, Mike and Jeff for always taking our feedback into consideration!

Business Model Canvas
We presented our business model canvas on Thursday last week. I really enjoyed the book Business Model Generation by Alexander Osterwalder and chose to go with the business model canvas rather than the lean canvas. It was very interesting to see everyone's business model and how they plan to execute. There were some strong well-thought out models and some more conceptual and exploratory. A lesson to be learned is that when you're developing a product with the hopes of monetizing it, you absolutely need a sound business model. You also need to have the presence in mind to change parts of your business models as conditions change. I hope we can do more business modeling during the course of Code Academy, love it.

Goodbye Job, Hello Career
I gave my notice to leave my job last week. I have been with Chicago Apartment Finders for almost seven years and, as a Managing Broker, I have surmounted a great deal of real estate experience and have developed strong professional and personal relationships. I've been transitioning myself out for sometime, but the time has come to complete that transition.

I have left a great mark on CAF and, more importantly, the people whom I have worked with over the years have their mark on me. I am grateful to have been part of the best apartment broker in Chicago.

With this change, also comes a new drive and a hunger to succeed. I'm happy to say that I've "emptied my cup" and can now make the most of Code Academy.

Third Week of Code Academy

The third week of Code Academy was full of new material as we were were introduced to the complexities of database schema and nesting relationships.

Tables and Relationships
We created several models that were related to one another in both One-to-Many and Many-to-Many relationships. Jeff Cohen added the wrinkle of nesting, which led to some serious adjustments in the code. We had a some challenging labs trying to figure out out to reflect the nested relationships in our models, controllers and views. Learning how to create a relational database with many tables will be very important in our web applications. I'm glad that I have working knowledge of tables, keys and database schema. It helped me push past database conceptualization and focus on writing the code to implement the different relationships.

I have to say that Active Record is awesome! I have no working knowledge of SQL queries and Jeff pointed out that the lack of SQL expertise was a barrier to entry for web application development. But with the advent of Active Record, he compared it to a "black hole" that he could simply not resist.

Pairing and Learning Pivoting
This week, I got to pair with the eclectic Alfonso Rush and Cesar Pereria. Both were great pairings and I look forward to new pairings this week. Our instruction was altered this week as we now have lecture without using computers. Jeff introduces concepts, demonstrates them in an application and then we start our lab. I like this approach as it makes me focus on the higher-level concepts and allows me to jot down notes without having to write any code. When we start the lab, it's a much richer learning experience as we need to go through a thought process and write the appropriate code.

Thanks to Neal, Mike and Jeff for always taking our feedback into consideration!

Business Model Canvas
We presented our business model canvas on Thursday last week. I really enjoyed the book Business Model Generation by Alexander Osterwalder and chose to go with the business model canvas rather than the lean canvas. It was very interesting to see everyone's business model and how they plan to execute. There were some strong well-thought out models and some more conceptual and exploratory. A lesson to be learned is that when you're developing a product with the hopes of monetizing it, you absolutely need a sound business model. You also need to have the presence in mind to change parts of your business models as conditions change. I hope we can do more business modeling during the course of Code Academy, love it.

Goodbye Job, Hello Career
I gave my notice to leave my job last week. I have been with Chicago Apartment Finders for almost seven years and, as a Managing Broker, I have surmounted a great deal of real estate experience and have developed strong professional and personal relationships. I've been transitioning myself out for sometime, but the time has come to complete that transition.

I have left a great mark on CAF and, more importantly, the people whom I have worked with over the years have their mark on me. I am grateful to have been part of the best apartment broker in Chicago.

With this change, also comes a new drive and a hunger to succeed. I'm happy to say that I've "emptied my cup" and can now make the most of Code Academy.

Second Week of Code Academy

The second week of Code Academy was intense and full of new material. We had more instruction on the MVC model, routing and an introduction into database integration. Pairing and pitching would sum up my week.

Pairing
Some of my best learning experiences have been from pair programming. Whether it’s during class or with my mentor, pair programming has been engaging, collaborative and social. I’m going to make a concerted effort to do it more. This week I had the opportunity to pair with two other Code Academy students, Jin Hwang and Jean Bahnik. Jin and I like to rebuild apps that Jeff Cohen creates during class. It’s a great way to test yourself as you must blend your knowledge of Ruby syntax with MVC concepts. Jean Bahnik and I had a great pairing on Thursday as we solidified our knowledge of routing and database administration through the rake command. We even played around with stylesheets to polish our app.

I had a wonderful pairing with my mentor, Corey Haines, this week. He showed me how to seed data into my SQLite3 database and we took a good look at compiler error messages and what they mean.

This week has taught me that I should pair program frequently.

Pitching
Bernhard Kappe, founder and CEO of Pathfinder, came to speak to us about the Business Model Canvas and Lean Start-up practices. It’s great to get coached on the finer points of building a business and making it work. I think it’s important to have the ability to take a step back from software development, look at your product from a high level and see if it’s a viable business. I love the concept of Kaizen, where you must continuously improve and evolve your practices, and the process of Genchi Genbutsu, where you gather facts yourself so that you can make the right decisions quickly. I read Business Model Generation by Alexander Osterwalder last year and it is a must read for anyone working on an MVP.

This week I also pitched my business idea to the class, which went reasonably well. I used one of my older pitch decks, but I was more focused on creating presence, story telling and shaking off the cobwebs of group speaking. I wish there was more time for me to field questions because I love critical questions that challenge my business model, assumptions or expertise.

Looking forward to pitching again and recreating my pitch deck with Prezi—a quick thanks to Michael Verdi for showing me that!

I’ll be rolling out my Ruby on Rails version of this blog this week. So look for it soon!

Second Week of Code Academy

The second week of Code Academy was intense and full of new material. We had more instruction on the MVC model, routing and an introduction into database integration. Pairing and pitching would sum up my week.

Pairing
Some of my best learning experiences have been from pair programming. Whether it’s during class or with my mentor, pair programming has been engaging, collaborative and social. I’m going to make a concerted effort to do it more. This week I had the opportunity to pair with two other Code Academy students, Jin Hwang and Jean Bahnik. Jin and I like to rebuild apps that Jeff Cohen creates during class. It’s a great way to test yourself as you must blend your knowledge of Ruby syntax with MVC concepts. Jean Bahnik and I had a great pairing on Thursday as we solidified our knowledge of routing and database administration through the rake command. We even played around with stylesheets to polish our app.

I had a wonderful pairing with my mentor, Corey Haines, this week. He showed me how to seed data into my SQLite3 database and we took a good look at compiler error messages and what they mean.

This week has taught me that I should pair program frequently.

Pitching
Bernhard Kappe, founder and CEO of Pathfinder, came to speak to us about the Business Model Canvas and Lean Start-up practices. It’s great to get coached on the finer points of building a business and making it work. I think it’s important to have the ability to take a step back from software development, look at your product from a high level and see if it’s a viable business. I love the concept of Kaizen, where you must continuously improve and evolve your practices, and the process of Genchi Genbutsu, where you gather facts yourself so that you can make the right decisions quickly. I read Business Model Generation by Alexander Osterwalder last year and it is a must read for anyone working on an MVP.

This week I also pitched my business idea to the class, which went reasonably well. I used one of my older pitch decks, but I was more focused on creating presence, story telling and shaking off the cobwebs of group speaking. I wish there was more time for me to field questions because I love critical questions that challenge my business model, assumptions or expertise.

Looking forward to pitching again and recreating my pitch deck with Prezi—a quick thanks to Michael Verdi for showing me that!

I’ll be rolling out my Ruby on Rails version of this blog this week. So look for it soon!

Second Week of Code Academy

The second week of Code Academy was intense and full of new material. We had more instruction on the MVC model, routing and an introduction into database integration. Pairing and pitching would sum up my week.

Pairing
Some of my best learning experiences have been from pair programming. Whether it’s during class or with my mentor, pair programming has been engaging, collaborative and social. I’m going to make a concerted effort to do it more. This week I had the opportunity to pair with two other Code Academy students, Jin Hwang and Jean Bahnik. Jin and I like to rebuild apps that Jeff Cohen creates during class. It’s a great way to test yourself as you must blend your knowledge of Ruby syntax with MVC concepts. Jean Bahnik and I had a great pairing on Thursday as we solidified our knowledge of routing and database administration through the rake command. We even played around with stylesheets to polish our app.

I had a wonderful pairing with my mentor, Corey Haines, this week. He showed me how to seed data into my SQLite3 database and we took a good look at compiler error messages and what they mean.

This week has taught me that I should pair program frequently.

Pitching
Bernhard Kappe, founder and CEO of Pathfinder, came to speak to us about the Business Model Canvas and Lean Start-up practices. It’s great to get coached on the finer points of building a business and making it work. I think it’s important to have the ability to take a step back from software development, look at your product from a high level and see if it’s a viable business. I love the concept of Kaizen, where you must continuously improve and evolve your practices, and the process of Genchi Genbutsu, where you gather facts yourself so that you can make the right decisions quickly. I read Business Model Generation by Alexander Osterwalder last year and it is a must read for anyone working on an MVP.

This week I also pitched my business idea to the class, which went reasonably well. I used one of my older pitch decks, but I was more focused on creating presence, story telling and shaking off the cobwebs of group speaking. I wish there was more time for me to field questions because I love critical questions that challenge my business model, assumptions or expertise.

Looking forward to pitching again and recreating my pitch deck with Prezi—a quick thanks to Michael Verdi for showing me that!

I’ll be rolling out my Ruby on Rails version of this blog this week. So look for it soon!

First Week of Code Academy

First Week of Code Academy
If the first week of Code Academy is a measure of things to come, then the next three month’s will be simply amazing.

Coding
In just one week, I learned how to create a blog using the Rails framework. For a learning experience, I intend to re-make this blog using Rails, so don’t get too comfortable with the deceptively nice WordPress theme. More importantly, I learned the underlying concepts of the MVC (Model-View-Controller) and how a little Ruby code can go a long way when combined with Rails. Although Ruby and I are still getting to know one another, it’s just a matter of time until I speak her language.

Program
If I just wanted to learn Ruby syntax and the Rails framework, then I would have stuck to online tutorials and overly bland textbooks. I’ve been there and it’s a lonely learning experience. I came to Code Academy to learn in a rich, collaborative learning environment and that is exactly what it is. David Heinemeier Hansson, the creator of the Rails framework, was kind enough to do a Q&A with us on the first day of class! Neal Sales-Griffin, Mike McGee and Jeff Cohen are passionate about teaching, learning and building a program that will last. I’m honored to be part of the inaugural class.

Mentorship
Every Code Academy student has a his or her own mentor. I was lucky enough to be paired with Corey Haines who is well-respected in the developer community and a consummate teacher. I had a wonderful mentoring session with him and look forward to his mentorship over the next several months.

The depth of our learning experience will be greatly influenced by our mentors. I look forward to events that they can work with us as a group, whether it involves Ruby, Ajax, databases, deployment, or the various disciplines in which they are experts.

Entrepreneurship
Many Code Academy students have left their jobs to be part of the learning experience. Several of them of relocated from other cities. One from another country, the Philippines! Many of us want to create an MVP and start company. Others are looking for software apprenticeships. In any case, we are all driven, passionate and hungry to build, create and learn. That is essential to fostering a collaborative learning environment.

I made commitment to myself over a year ago to learn how to code and become a skilled developer. Code Academy is helping me achieve this goal faster than I had imagined and I can’t wait to learn more.

First Week of Code Academy

First Week of Code Academy
If the first week of Code Academy is a measure of things to come, then the next three month’s will be simply amazing.

Coding
In just one week, I learned how to create a blog using the Rails framework. For a learning experience, I intend to re-make this blog using Rails, so don’t get too comfortable with the deceptively nice WordPress theme. More importantly, I learned the underlying concepts of the MVC (Model-View-Controller) and how a little Ruby code can go a long way when combined with Rails. Although Ruby and I are still getting to know one another, it’s just a matter of time until I speak her language.

Program
If I just wanted to learn Ruby syntax and the Rails framework, then I would have stuck to online tutorials and overly bland textbooks. I’ve been there and it’s a lonely learning experience. I came to Code Academy to learn in a rich, collaborative learning environment and that is exactly what it is. David Heinemeier Hansson, the creator of the Rails framework, was kind enough to do a Q&A with us on the first day of class! Neal Sales-Griffin, Mike McGee and Jeff Cohen are passionate about teaching, learning and building a program that will last. I’m honored to be part of the inaugural class.

Mentorship
Every Code Academy student has a his or her own mentor. I was lucky enough to be paired with Corey Haines who is well-respected in the developer community and a consummate teacher. I had a wonderful mentoring session with him and look forward to his mentorship over the next several months.

The depth of our learning experience will be greatly influenced by our mentors. I look forward to events that they can work with us as a group, whether it involves Ruby, Ajax, databases, deployment, or the various disciplines in which they are experts.

Entrepreneurship
Many Code Academy students have left their jobs to be part of the learning experience. Several of them of relocated from other cities. One from another country, the Philippines! Many of us want to create an MVP and start company. Others are looking for software apprenticeships. In any case, we are all driven, passionate and hungry to build, create and learn. That is essential to fostering a collaborative learning environment.

I made commitment to myself over a year ago to learn how to code and become a skilled developer. Code Academy is helping me achieve this goal faster than I had imagined and I can’t wait to learn more.

First Week of Code Academy

First Week of Code Academy
If the first week of Code Academy is a measure of things to come, then the next three month’s will be simply amazing.

Coding
In just one week, I learned how to create a blog using the Rails framework. For a learning experience, I intend to re-make this blog using Rails, so don’t get too comfortable with the deceptively nice WordPress theme. More importantly, I learned the underlying concepts of the MVC (Model-View-Controller) and how a little Ruby code can go a long way when combined with Rails. Although Ruby and I are still getting to know one another, it’s just a matter of time until I speak her language.

Program
If I just wanted to learn Ruby syntax and the Rails framework, then I would have stuck to online tutorials and overly bland textbooks. I’ve been there and it’s a lonely learning experience. I came to Code Academy to learn in a rich, collaborative learning environment and that is exactly what it is. David Heinemeier Hansson, the creator of the Rails framework, was kind enough to do a Q&A with us on the first day of class! Neal Sales-Griffin, Mike McGee and Jeff Cohen are passionate about teaching, learning and building a program that will last. I’m honored to be part of the inaugural class.

Mentorship
Every Code Academy student has a his or her own mentor. I was lucky enough to be paired with Corey Haines who is well-respected in the developer community and a consummate teacher. I had a wonderful mentoring session with him and look forward to his mentorship over the next several months.

The depth of our learning experience will be greatly influenced by our mentors. I look forward to events that they can work with us as a group, whether it involves Ruby, Ajax, databases, deployment, or the various disciplines in which they are experts.

Entrepreneurship
Many Code Academy students have left their jobs to be part of the learning experience. Several of them of relocated from other cities. One from another country, the Philippines! Many of us want to create an MVP and start company. Others are looking for software apprenticeships. In any case, we are all driven, passionate and hungry to build, create and learn. That is essential to fostering a collaborative learning environment.

I made commitment to myself over a year ago to learn how to code and become a skilled developer. Code Academy is helping me achieve this goal faster than I had imagined and I can’t wait to learn more.

Hello world!

As part of the Code Academy learning experience, we have been asked to create a blog that chronicles our 3-month journey to learn Ruby on Rails. Rather than using a third-party blogging service, I finally took the opportunity to buy my own name as a domain. Tonight I setup vincentcabansag.com on HostGator, installed WordPress, several plug-ins, a clean theme and now have a live blog.
I feel like I’m cheating, but I plan to recreate this blog using Rails. That should be an interesting and fun project. Enjoy the blog!

Hello world!

As part of the Code Academy learning experience, we have been asked to create a blog that chronicles our 3-month journey to learn Ruby on Rails. Rather than using a third-party blogging service, I finally took the opportunity to buy my own name as a domain. Tonight I setup vincentcabansag.com on HostGator, installed WordPress, several plug-ins, a clean theme and now have a live blog.
I feel like I’m cheating, but I plan to recreate this blog using Rails. That should be an interesting and fun project. Enjoy the blog!

Hello world!

As part of the Code Academy learning experience, we have been asked to create a blog that chronicles our 3-month journey to learn Ruby on Rails. Rather than using a third-party blogging service, I finally took the opportunity to buy my own name as a domain. Tonight I setup vincentcabansag.com on HostGator, installed WordPress, several plug-ins, a clean theme and now have a live blog.
I feel like I’m cheating, but I plan to recreate this blog using Rails. That should be an interesting and fun project. Enjoy the blog!