SPN: A Client can be a Wonderful Thing

Having a client is a powerful thing. We started on a group project last week for SMAC! Sock Monkeys Against Cancer, a local organization that makes sock monkeys for cancer patients. Their founder, Jen Windrum, went through a devastating lung cancer case with her mother, who sadly passed away last year. Her mother lived 2,000 miles away, and she wanted to give her mother something she could keep with her during appointments and procedures when she couldn’t attend.

Jen often gets requests from a patients who would like a SMAC! monkey, but can’t afford it due to their ongoing treatments. When these cases come up, Jen relies on her existing social media channels to find someone willing to cover the cost. She calls them “Angels.”

This process works, but is very manual and time intensive. Many patients don’t realize they can request a SMAC! monkey. Once they do find a match, Jen must communicate directly with both sides to make sure the right information gets exchanged. Even though these are some of the more rewarding situations she deals with, it is a lot of work for her.

Seven of us were tasked with taking some of the friction out of the process. We needed to create a new website for the SMAC! Monkey Angel Program. The site needed to allow people to request a SMAC! monkey, and display their request to people who might be willing to cover the cost for them. We divided ourselves up into specific roles for this project. Johnathon, Todd, Matt and Lochlan were our back-end developers. Britt and Yofred were front-end specialists. I was the technical lead. This was the first time we had a specific focus and this many people working on a single project.

Luckily, we had a great client to work with in Jen. She was very excited to see what we came up with and gave us quite a bit of flexibility with how the site would look. I think we came up with a clean, informative site that really does take the friction out of the equation. With the new site (right), a person can request a SMAC! monkey for either themselves or on behalf of someone they know. People who see their request can share the need using the Facebook or Twitter share buttons right on the page.

If you want to get the first look at what we’ve built, I would like to invite you to come to 1 Million Cups this Wednesday at 9 a.m. 1MC meets in Mammel Hall on UNO’s campus and they have allowed Omaha Code School students to present our projects this week. Our team will be demoing our SMAC! Angels site. Another group of students will be showing off their recent redesign of the omawho.com website. I think both turned out pretty well, so come take a look and give us your feedback.

We are less then two weeks away from graduation. It has been a whirlwind experience. Going back and looking at the first couple of sites we created, it’s clear we have learned a lot and come a long way.

Here are a couple of events open to the public next week:

Allies Workshop

Monday, May 12, 6–8 p.m.

The Allies Workshop was designed by the Ada Initiative “to support women in their workplaces and communities.” Andrew and Zedeka will be conducting their own variation of the workshop. They will discuss allyship as it relates to gender, but also explore race, class, color, ability, identity and orientation. There is a cost to this course, so check out the Facebook page for more information.

Graduation Open House / Demo Night

Friday, May 16, 4:30–7:30 p.m.

This event will take place immediately after we graduate from Omaha Code School. Students will be on hand to show off some of their group or individual projects they have worked on in class. This will be the best opportunity to see how far we have come in 12 weeks.

SPN: Creating something useful for a real-life setting

We’ve had a hectic two weeks at Code School as we approach the end of class on May 16. We completed our first individual projects, and I have had a hard time keeping up.

The project requirements were pretty open ended. Instructor Sumeet Jain gave us some basic requirements to make sure we use the skills we were learning. Other than that, we could work on anything we wanted.

There were social networks, photography galleries, video games and automated bar tenders. Everyone’s personalities started to come through, and you could tell everyone was putting in a little extra effort to get their ideas off the ground.

I came into the class with a project I really wanted to do, and luckily it fit the project requirements. My wife helps coordinate the children’s program at the Acts2 Church in Gretna, Neb, and they needed a system to help check in kids for events. I wanted to help out and see if I could create something for them.

Since I had an actual client, I was able to practice gathering requirements by sitting down with them and getting a list a features. I also was able to lay out some of my ideas about what information would be be tracked, and how everything would interact. Once we understood the scope of the project, I got to work.

One of their key requirements was a way to email families during the week. They wanted to recap the lesson the kids heard on Sunday and offer activities to do to reinforce what they learned. The whole idea is that church is not about Sunday mornings. We need to support each other during the week too. Fortunately, we had just learned how to use SendGrid to send emails from Heroku. So after a little configuration, I got everything up and running. I’m excited to see what this allows them to do.

Eventually, our projects started to look like real web applications. We had layouts with thought out color palettes, images and flow started appearing on our computer screens. At this point we really started to get excited about what we were seeing other people create.

By the end of the week, we were trying get everything working so we could present to the rest of the class. We spent a couple hours watching demos, and I was really impressed by the diversity of ideas we got to see. After we finished, we went out for drinks to celebrate what was a very long week.

When we got back to class, we concentrated on refactoring our code. That’s when you go back and make sure everything is as efficient as possible and looked as good as it can. We were given a long list of things to look for. Everything from using CSS Sprites, to making sure we documented all of our custom methods. As we kept improving our projects, you could see it was making a difference. AJAX calls saved unnecessary page loads, database queries were kept to a minimum. My site started to feel snappy and responsive.

Everyday was a trial of perseverance. I kept running into issue after issue. I couldn’t get my Javascript to load, then I had a very complex database query I wanted to run in a single command, but it just wouldn’t work. Luckily Omaha Code School is setup to help. Sumeet is always available for questions. Abby, our teaching assistant, always has an idea or two to try, and we always try to help out our classmates. You can’t turn around without running into someone willing to help.

Next week is project week again. Who knows what we’ll be doing this time. Sumeet said he has some ideas he thinks we’ll like. Hopefully we keep learning and putting that new knowledge to work. I’m sure it will give me something to talk about next time.

Omaha Code School Wiki

A week ago we wrapped up our first group project. My team decided to create a Omaha Code School Wiki. It’s a wiki about anything related to Omaha Code School. Anyone can read the articles we put together so far. You have to sign up for an account in order to add or modify the articles, but anyone can do it. Make sure you provide a legitimate email, because we figured out how to send email to confirm before we activate your account. We’re pretty proud of that.

Here is the link for your enjoyment. Let me know what you think. It’s on a free hosting service, so I apologize in advance if it’s a little slow to respond.


SPN: Halfway through, balancing work and play is key

Six weeks, officially half way. It feels like we have been here three months already, but at the same time, like we just started. Long days are starting to catch up with me. I can hardly keep track of the days of the week anymore.

My language has changed from English to a weird set of acronyms and terminology I had not heard until recently. I literally code all day, over meals. I even dream about code. But this is what I signed up for, and I’m having a blast.

We had the opportunity to meet with a couple of really talented people. The Flywheel team came down, talked about how they make WordPress hosting easy and some for being truly successful. We learned about some of the problems they face, and how they make plans to overcome them. We also heard from Lemonly, a startup that turns data into infographics. It was really neat to see how their problems differed from the other speakers we have heard from and the unique ways in which they overcome geographic problems within their companies.

Omaha Code School students are working on projects like creating a wiki for the Code School. 

We’ve begun shifting our time to projects, which is a kind way of saying we are really busy. In week five we completed our first group project, an Omaha Code School wiki. We started with some wire frames, created a feature list, assigned responsibilities and got to work.

The wiki has features, including:

  • Articles to have a history stored as many updates.
  • Admins can roll-back an article to a previous update.
  • Updates are written using the Markdown format, giving the author freedom to organize, format, add links and pictures.(Gem RedCarpet)
  • URL should be human readable, not just a bunch of ID numbers. (Gem FriendlyID)

I was given the task of developing everything needed for an article on the wiki. This involved the article itself, a way to store many updates and categories. At first this seemed pretty challenging. We knew how to update a single object, but this was three separate objects. After trying to figure it out on my own, Sumeet told me about ‘accepts_nested_attributes_for‘. This feature saved me a ton of work. It essentially allowed me to create a new article and prompt the user for category and update information at the same time. It really does seem like magic, even though we all know better than to believe that.

Lectures were light all week to give us time to complete our projects, so by Thursday we were close to having a working product. My partners had got users setup with authentication and session management, the front end complete with some sweet CSS to make our pages look nice.

When we are working on projects, we have daily SCRUM meetings in the morning. If you are unfamiliar with that term, it just means we go around the room and talk about what we accomplished in the past day, and what we hope to accomplish the rest of the day. It really helps outline what you need to get done. Since we were working on Thursday, my goal for the day was to break our application—I succeeded.

I acted like I had no idea what I was doing on our site. Clicking on things randomly and on pages with no context to my action. I found that we had broken links, incorrect links, form inconsistencies and style problems. We wrote down everything we found and divvied up the work again. By Friday morning, we had the whole thing running on Heroku and working well.

On Friday afternoon, we presented the Omaha Code School Wiki to the class. We got to demo the app, and talk about one thing we did in code that we thought other people could use. Everyone seemed to like it. As we watched the other groups’ presentations, I learned a lot about what they had done. That weekend, we went back and refactored some of our project to incorporate what the other teams had taught us and we’re pretty proud of the outcome.

Last week was very challenging. We started learning about JavaScript(JS) and AJAX. This was a fundamental shift in the way websites work for me. I always thought simplistically. Servers send HTML to a browser and it is displayed to the user. JS adds another very powerful layer to that, allowing a website to be modified directly in the browser. It’s a lot to take in, especially after everything else we have already learned, but it’s starting to make sense.

This week we start our first individual project. We need to incorporate a complex database relationship, AJAX calls and a great front end—it’s not going to be easy and we only have a week to do it in. Hopefully we can put together all of the techniques we have learned to make something worth showing off on our Demo Day in May—only six weeks away now.

Work hard, play hard

We work hard at Omaha Code School. We show up every morning at 9 a.m., and sometimes don’t go home until after 8 p.m., only to go home and work some more. Throughout the day we need small breaks to keep our mind fresh and give our minds a break.

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.

By far the most popular way to waste some time is an online game called 2048. It’s one of those mesmerizingly simple games you get hooked on. If you haven’t played it before, you have numbered tiles that you have to slide back and forth, and if two 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 only one of our classmates has made that happen, but we are all desperately trying to be the next.

Our instructor, Sumeet, likes to play chess on his small breaks. He plays speed chess online in quick little three-minute games. He says 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. 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.

If you want to get more frequent updates, check out my blog. Or, if you have any questions, shoot me a message on Twitter.

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…

Instead, they wanted it to be usable, so they used handles…

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.