Projects and Presentations

Last week we spent the majority of our time working on our first big group project. It was pretty open-ended, so we could come up with anything we wanted to do. I teamed up with Matt and Cara. After some brainstorming, we came up with the idea of creating a Omaha Code School Wiki. We could create pages about each of the classmates, teachers, projects, and topics we are covering in class.

Omaha Code School Wiki

Omaha Code School Wiki

On Monday, we pitched the idea to the rest of the class. That’s when we realized just how unprepared we were. Compared to the other groups, we were behind. The other groups had detailed wireframes for each page, and a flow already figured out. As soon as we got back into our groups we tried to catch up. Cara has a design background, so she volunteered to handle the front end development. Matt and I would handle the backend.

One problem I knew we had to solve was the actual content of an article. When we started, all we knew how to do was collect very plain text from a user through a form. This wasn’t going to look good when another user wanted to read it. It wouldn’t have any headings or organization, so I needed to find a better way. One idea was to copy what we do on GitHub readme pages. For our project, we create a readme page that describes what the project does and why that matters. We edit the page in a syntax called Markdown. It allows you to use a common syntax that then gets rendered into formatted HTML when someone else views the page. After some digging, I found exactly what I needed. Turns out GitHub uses a GEM called RedCarpet to render markdown on their site, and we could use RedCarpet too. After some reading and a little trial and error, I got it working. Now if you view one of the pages, it can have organization, links, images, and is much more readable than plain text.

We also used a GEM called FriendlyID. The URL in the browser is very important in Ruby on Rails. Developers use it to pass information from one page to another. Most of the time, the information is pretty cryptic to the user, maybe just a random number. FriendlyID changes the numeric ID for an object into a readable string. Here is an example:

Twitter could have used ID’s…
http://www.twitter.com/509309843

Instead, they wanted it to be usable, so they used handles…
http://www.twitter.com/andyvondohren

This is exactly what FriendlyID does. It converts an ID in the URL into a username or title, and makes it much easier to understand. Once you get it setup, it’s really easy to use. Check it out.

We wrapped up our time on Friday and presented our product to the class. It was really cool to see what everybody had been working on for the last five days. Everyone got theirs working and had all of the functionality they set out to accomplish. Some of the other projects included…

  • Flipbook (Upload pics through Instagram and automatically create a flip book animation)
  • The Nag (To do application that nags you if you do not complete your tasks on time)
  • Work Hang (Checkin at your favorite remote working location, others can see where you are and come work with you)

We are pretty proud of our projects, and our group is even working on it some this week to get some of the rough edges taken care of. Hopefully I will be able to send a link out to the live program later this week so you can take a look yourself.

Advertisements

Downtime

We work hard at Omaha Code School. We show up every morning at 9, and sometimes don’t go home until 8pm, then go home and work some more. Throughout the day we need small breaks to keep our mind fresh and give our minds a break. I thought I would elaborate on some of the things we do during our down time.

A bunch of us have put together a puzzle. We’ve officially branded it “Puzzle Club.” Our first puzzle was a picture of a cat coming out onto some grass. We worked on it every day over lunch until it was done. Each person who wanted to contributed their own part. Johnathan is supposed to be brining in another puzzle for us to work on, but he keeps forgetting. Hopefully we will have another one to work on soon.

By far the most popular way to waste some time is an online game called 2048. It’s one of those mesmerizingly simple games that you get hooked on. If you haven’t played it before, you have numbered tiles. You have to slide them back and forth. If 2 tiles with the same value collide, they combine and the number doubles. The goal is to get a tile with the value 2048 on it. So far Cara is the only one to have made that happen, but we are all desperately trying to be the next.

Sumeet likes to play chess on his small breaks. He plays speed chess online in quick little 3 minute games. He says that he plays a pretty unconventional game when going fast and because of that his ranking has dropped quite a bit. He jokes that he gets upset when he gets a draw because he’s probably playing against a 6-year-old, and he should be able to beat a kid.

My personal favorite is flying quad-copters. Omaha Code School is meeting in a 8,000 square foot retail space with 18 foot ceilings. That makes it the perfect space to fly small, light-weight remote control vehicles. Brandon introduced me to the Syma X1. It’s a cheap, $30, quad-copter that comes completely ready to run. It’s remarkably stable. Once you get a little practice, you can zip from one end of our space to the other pretty quick. We have even started to stack objects and practice flying between them. It’s the perfect break activity since you have to get back to work once the battery dies.

As you can see, even though we put in a lot of work, we also find time to have a good time. I would love to know some of your favorite activities for when you need a little break. Leave a comment below and we can debate which is best.


New SPN Guest Blog: A third of way home, with a lot more to learn

A third of the way done, a lot more to learn

New SPN Blog Post

Today Silicon Prairie News(SPN) published my new guest blog recapping the first four weeks of class. I’m writing a post about every-other week as a way to get the word out about what we are doing at Omaha Code School.

Please give it a read. http://spne.ws/q0c

If you don’t know about SPN, they are a technology blog that focuses on the midwest. Primarily Omaha, Des Moines, and Kansas City. They are pretty well-known and have very loyal followers, so having the opportunity to write for them is a huge blessing.


Let’s Catch Up

CodeSchoolAdventureA lot has been happening at Omaha Code School. Looking back, I can hardly believe we’ve only been class 3 1/2 weeks. Let’s recap and make sure everyone is up to speed with where we are at.

OCS is structured in a very deliberate way. Learn the basics, and then build on top with more advanced topics. During the first week, we learned Ruby. It’s a programming language that prides itself with having readable code. It wasn’t hard to learn, and we were writing our first command line programs in no time.

Just when we thought we were understanding everything we switched from the command line to the browser. This was a game changer. I have had more experience than most in my class coding, but nothing like this. Defining routes and methods is a completely different way of thinking and took some time to get my head around.

After a little practice, it began to make sense. Unfortunately, we weren’t standing still. We learned about file storage, then SQL, then ActiveRecord. It was a lot to take in, but every step seemed to make life a little easier. Each layer added methods and helpers that can be used like Lego blocks to build whatever your heart desires.

This week we put it all together. We switched to using Rails as our framework and web server. It seemed pretty intimidating at first, but it’s started to grow on me. Rails is a framework, a set of rules. These rules force you to build your application a very particular way. Rails is also stubborn. If you don’t follow the rules, Rails refuses to work. It can be maddening at times. But once you get everything just right, it works beautifully.

With what we have learned so far, we can create almost anything. We even created our own blog from scratch. It’s amazing how a little Ruby, a database, and some CSS can create a sophisticated website. I can’t wait until we get to build some of the projects I have had rattling around in my head for the last couple years. Hopefully we’ll start publishing our sites online so I can share some of the things we are building.


Our First Project

This week we started our first project, creating a blog from scratch. We were told to research different blogs and put together a list of features we would like to implement. I looked at a couple of the blogs I read regularly and put together the following list.

  • Static Pages
  • Posts with pagination
  • Comments
  • Polls
  • Contact Us page that emails form comments
  • Ability to sort by category

We learned how to use GitHub to build a project plan. Using the ‘Issues’ feature to create a buildout checklist was really easy, and made sure I didn’t leave anything out. I used a whiteboard to sketch out some of my ideas and took a pictures so I could add them to my documentation. Once I finished my plan, I sent it off to Sumeet for approval. He wanted to make sure that our plan was achievable with what we have learned in the first three weeks.

Once I got the okay, I started coding. We are using SQLite for our backend database and Sinatra for the web server. It took a little trial and error to get my database relationships defined correctly, but eventually it started working. I started knocking out features pretty quick. First users, then posts, then pages. I was feeling pretty good, but then I tried to get comments working. My comments are tied to two other objects, users and posts. I got them working with posts pretty quickly, but users were just not working. This is where Omaha Code School really comes into it’s prime. I got up and went around to get idea’s from what other people were doing. Having 12 other people working on the same thing as I am is a great resource. After asking some classmates, and looking at their code, I figured out I had capitalized the ‘u’ in ‘users’ when it was supposed to be lowercase. Errrg. The one thing I dislike about coding is how sensitive the syntax can be.

My Blog

My Blog

By Friday afternoon, I was feeling pretty happy with my project. It wasn’t complete, but the basics were working well. Unfortunately, it didn’t look as good as it worked. Everything was black text on white background. Since we had an Open House at OCS that night, I wanted to make sure my project was something I could demo if needed. So I decided to look up how to do some basic CSS(cascading style sheets) even though we haven’t talked about it yet in class. In a little less than an hour, I had a blog that I was pretty proud of. I’m glad I put in some time on the aesthetics, because I did get to show it to a handful of people and they all seemed to like it.

I’m still really enjoying my time at OCS. I can’t believe it’s already been three weeks. We are bonding as a class and everybody seems to be keeping up pretty well.