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.

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: Configuration and Config Vars