Thursday, December 20, 2012

Social Coding, Why Did I Wait So Long?

I have been pretty active on Github for the past couple weeks.  Over the previous six months I have used Github to host my code so I could push to Heroku.  I also found myself on Github reading wikis or readme files for some of the gems I use.  As a beginner, I did not feel comfortable getting any more involved in the open source community.

A couple weeks ago I was watching my server logs and thought to myself "Wow, this favicon error that keeps popping up in my logs is really annoying."  It did not stop anything from running, but every call to a view in my app had an error that the favicon path could not be found.  I saw this error in a couple of my apps, and decided to find out what was causing it.  Come to find out the favicon path was being called in my application layout, which was generated by the twitter-bootstrap-rails gem.  It was a simple fix from what I could see.  I just needed to change favicon_link_tag 'images/favicon.ico' to favicon_link_tag 'favicon.ico'.  I changed my code in the application layout, and sure enough it worked.

When I was going through Code Academy (now The Starter League), we were encouraged to get our feet wet by helping out on some open source projects.  I always have been afraid to get involved.  To be honest I was not even sure how to get involved.  This seemed like a really easy fix to make, and I could get my feet wet by contributing to a project.  I went to Github, forked a copy of the project, and started digging through the files.  I realized the folder structure of this project was much different then I was used to with a Rails app.  There were generators, themes, and everything seemed different from what I was used to.  I was finally able to find the generator files that produce the application layout code, and revised the faulty favicon area.  I had to update erb, haml, and slim versions of the layout.  Now that I revised the code, what in the world was I supposed to do to get it back into the main project?

I searched Github and found their documentation to be very easy to follow.  All I needed to do was create a pull request.  As I created the pull request I started to get very nervous.  What if I did something wrong?  What if my code breaks the project?  I have errors in simple code all the time, so how was I to insure I did not overlook something in my little late night experiment?  I figured there was only one way to find out or learn my mistakes, and that is to submit the pull request.  Three hours later my pull request was merged into the project.

I know the change I made was really simple, but I was overjoyed that I was able to finally get my feet wet on a major project.  This also gave me some confidence to dive into the open issues and try to help out others.  Some questions were easily answered, and others were far more complex for me to handle.  One of the open issues was based off of the fact that the read me file was not clear about "fluid" meaning a responsive design.  I updated the readme file, created a new pull request, and this morning that change was merged as well.

Last week I also forked another gem to create a custom version of it for me.  The gem is called blogit.  I needed to customize some of the views and functionality for creating the Reading Glue blog.  I keep the modified version of the gem on my Github account, and can update my apps gem directly by the link back to my version on Github.  For the most part this gem resembles a normal rails app.  It was easier to know where to find files, and to understand what I am looking at.  It was also a great way to dive into more complicated code, and learn better ways to refactor my own code in the future.

One year ago I had no clue how to code outside of some very basic html and javascript.  Nine months ago I started looking at Ruby on Rails, and felt overwhelmed.  Fast forward to the present and I am feeling comfortable contributing to open source projects or forking other people's code for my own customizations.  I am not sure why I chose to wait so long to start using Github for social coding.  Maybe it was just a fear of getting involved and failing in front of the world.  I did not realize the learning benefits that come from contributing to the open source community.

Are you learning to code and only using Github as a way to store your code?  I highly recommend getting involved in a project.  Even if it is closing out open issues, updating a readme file, or something else that is simple.  You likely have the skill set to help out in some way, and I guarantee you will learn more as you continue to stay connected to the project.

Monday, December 3, 2012

Building Just To Build

8 days ago I was exhausted from a day of Christmas decorating. We went to cut down the tree, I hung lights outside, took care of decorations inside the house, etc. I ended the night on the couch with a Celebration Ale and watching Nation Lampoon's Christmas Vacation with Julie. It is a tradition in my family to watch this movie on Thanksgiving weekend. It is also a tradition that we endlessly cite lines from the movie. Over time I have noticed that we are not the only ones that do this. It seems to be a popular tradition among those that are near my same age. I thought to myself "It would be cool if someone had a web app that released a quote from the movie each day of December until Christmas. Kind of like an advent calendar for Christmas Vacation quotes." In the past I would have wished someone would take the time to build out something stupid like this. But wait, I just took a three month intensive training course to make web apps. Why not just build it myself? Well, I introduce you to Griswold Advent.

After getting done with work around 10PM on Monday I opened up iTerm, TextMate, and started coding away. After about 3 hours of work I had a functional app that spit out a quote, and limited when quotes would be shown and on what day. In other words, the system would not start showing the first quote until Dec 1, and you could not see future quotes until the day it was supposed to be shown.

On Tuesday I threw in some Twitter Bootstrap to help give me some quick styling to work with as well as a responsive design for anyone looking at the site from a mobile phone. By this time I was probably about 6 hours into things. I pretty much had everything done. Just needed to clean up some things, buy the domain name, and launch. That is until I spoke with my Uncle. He said it was cool and all, but he would never remember to come to the site daily. He doesn't use Twitter. What he needed was a daily SMS.

I took that as a challenge, and Wednesday night I dove into the Twilio API documents. I started playing around with the Twilio ruby gem, and in about 15 mins was able to send a test SMS out. I started coding and had a fully functional SMS system that could: receive a phone number from a user, store it in a database, send a verification text, receive the verification reply, mark the database entry as verified, and also remove an entry if they texted STOP back to our number. The API was pretty easy to use. Twilio performed a workshop at Code Academy (now The Starter League) when I was going there, but I had not attended. I had something else going on that evening, but kind of wish I had now. It would have made this integration go that much quicker. Even though I had it working in a couple hours, I still had some bugs and problems to work through. Most of the bugs were actually stupid mistakes you make from coding on no sleep. I ended up messing around with things from around 10PM until 4AM to get it all working right and bug free. That also included jumping back and forth between other work I am involved in, but I would say at least 4 of the 6 hours was playing around with Twilio.

Twilio isn't free, and I knew if for some reason my stupid app caught on it could end up costing me some money. I didn't mind it, but it would be cool if my time and money went to a good cause. I decided to promote a charity: water campaign as a way people could give back for the daily laughs they receive. I set that up on the main page as well as learned how to create a rake task that can be run by Heroku to send out the daily texts automatically. I set up a scheduled task to send out the daily SMS messages to those that had signed up. I also had to clean up a few issues that were seen in IE 7 and 8. I am not a fan of IE, so I really didn't want to spend a whole lot of time making sure the site looked good in them. I did what I could in a minimal amount of time and got it looking somewhat presentable. I am sure those users are pretty used to seeing sites that look like crap, so I am not too worried.

I sent out a few emails, posted it on Reddit, and set up a Twitter account. I decided that sending daily tweets out myself was too much work. I needed something automated like the rest of the site. I grabbed the twitter gem and created a scheduled task to send out the daily quote through Twitter at the same time the system sent out the daily SMS messages. Everything was done, and seemed to be working on my development setup. Now it was just time to wait and see what happened at 12AM Dec 1 when the site would stop redirecting to a coming soon page and go live automatically with the day 1 quote. Everything worked like a charm. The next test was at 10AM on Dec 1 to see if the SMS and tweet tasks worked OK. Boom, the SMS was received, but the tweet did not go through. I later found out that there was a problem with how I was truncating the quote, and it exceeded the 140 character limit. By day 2 the tweets were going out automatically as well.

So in about 12 hours of actual working time I designed and built a simple web app that few people will ever care about. I know the amount of time I put into this is way too much for what this app does. That is obvious. The thing is that I really do not care. I had an idea of something I wanted to see built, and I did it. There is a sense of pride in this process that outweighs the time I could have been doing more valuable work. I also exposed myself to the Twilio and Twitter API's for the first time. Most of all, I learned from the experience. These little mini personal hackathons have always been valuable for me learning and being able to take that knowledge and apply it to something more important like Reading Glue. Once you learn how to build things, you find that you seek out little projects to create just because you can. It can become addictive, but it also becomes a great way to continue learning. That is why I recommend to anyone that they should build just to build.

Tuesday, September 25, 2012

Can You Come Up With 750 Words Each Day?

I suck at blogging on a regular basis.  I am usually too busy to take the time and write about what I learned.  Even more important than this, I hate realizing on most days that I have nothing new to post about.  That isn't a good thing when you are supposed to be putting all of your effort into proving out and building a killer web app.  I can't really post about my full time job activities due to confidentiality agreements, and I am not sure they would be interesting to most.  This week I tried out a new web app called 750words.  The app can be used kind of like a daily journal.  It is to help people just take some time and type about anything and everything that is on their mind.  Some people use it to track metadata, goals, reminders, etc.  It is just a way of forming a daily writing habit.  I decided my primary focus on using the app is to hold my self accountable for the goals I set for myself each day.  My routine I have set up so far goes a little something like this:

1.  In the morning while work email is downloading, I take 5-10 mins to talk about how I am feeling that morning.  Any great ideas that came to mind over night.  I also list down my goals for the day.  This can be anything from tasks that I need to complete on Reading Glue, an area of my code that I need to debug, or figuring out how to spend quality time with my family for the day.  In the evening or  next day I summarize how may of my goals I succeeded on, or why I failed.

2.  I am tracking meta data and listing when I have urges to chew.  I have written about quitting before.  I always end up falling back into the nasty habit.  Too many times I rely on nicotine to get me through stress, which happens to be a lot of my work day.  I am trying to track the time I have strong urges to chew in hopes that I can see patterns in my lifestyle that need changing.  Hopefully 750 Words can help with this, along with a pack of Nicotine chewing gum...

3.  I also plan on using this as a tool to look back and find the connections between the times I am happy and the times I seem down.  I haven't struggled with depression in a long time, but sometimes feel like I slip into it.  Much of it is seems to be brought on by work (my full time job that is), but maybe getting my thoughts out each day will help me truly track down what is the root of the problem.

So you might ask "how is it going?"  Well after only a couple days it feels good.  I am not sure if it is something I will be able to stick to everyday, but I think it is something worth trying.  I always had the habit of reading RSS feeds in the morning.  It feels good to publish my own thoughts rather than read the thoughts of others first thing in the morning.  One thing I realized is 750 words is a lot more than I originally thought.  It seemed like I was typing forever and I was not coming close to finishing.  I am sure it will come easier as times goes along.  Hell if this whole process helps keep me motivated and accountable for the goals I set for myself, then I should have a shit load of content to write about each day.  Before I close out this post, I have to give a shout out to Mike McGee.  He is the one that introduced me to this site, and the idea of writing every morning.  The dude posted for over 1 year straight every day.  Now if that is not dedication, then I don't know what is.  I am not trying to break any records like that, but I am eagerly searching for ways that I can improve myself as a father, entrepreneur, and person.

Monday, July 2, 2012

Control + Alt + Delete

Originally posted on the ReadingGlue.com blog.

If you are a windows user, then you probably know what the Crtl + Alt + Del command does. It basically is a way to kill off a process that is not responding. Over the past few months, we have been working hard to develop solutions for parents to ease their pain of practicing reading with their child. The problem is that each parent struggles with unique problems and we have failed to execute on a solution that works for everyone. This past weekend we decided to hit Ctrl + Alt + Del and start over. We are going back to the drawing board. Instead of jumping into the process of developing solutions we want to truly understand the root of the problems parents face. Only once we understand these problems will we be able to develop a solution that eases the pain parents and children face when practicing reading. If you are a parent of a child in the grades pre-k through 5, then we want to talk to you about the struggles you face when reading with your child at home. The process only takes 20 minutes. If you are in the Chicagoland area, then we would love to treat you to a cup of coffee and have a quick chat. If you can't meet with us in person, then we could set up a phone call or even online chat. After our discussion, you would get the opportunity to help us design and test a solution that transforms the way reading is practiced outside of the classroom. If you are interested then please fill out the form on our contact page, and we will get in touch with you to set something up. Share the link with friends or family if you think they might be able to help as well. In addition to starting over with the development process of Reading Glue, we are proud to announce that starting next week we will have regular blog posts from reading experts. These posts will showcase tips, tricks, and exercises you can use to help enhance practice time with young readers. These posts will be ideal for parents who are looking to improve their knowledge of best practices when it comes to reading. These posts will also be very helpful for teachers who are looking for ways to improve their reading sessions in the classroom. Please feel free to leave us a comment if you have any particular subjects you are interested in hearing about. We want to thank everyone who has supported Reading Glue so far, and we look forward to working closely with the community as we develop tools that everyone can benefit from.

Tuesday, June 19, 2012

Code Academy - So, what now?

I am sitting here scratching my head wondering where the past eleven weeks went.  I can't believe this spring quarter of Code Academy is over already.  It seems like yesterday that I was banging my head against the desk as I was trying to figure out a ruby problem given as homework.  Code Academy has been an unbelievable experience, and I would suggest it for anyone who has struggled to learn how to code on their own.  Here are a few things I walk away from this experience with:
  • Programming is a lot easier to learn when you have a teacher like Jeff.
  • The best practice is muscle memory.  Anytime I did not practice what we learned I usually forgot it by the next week.  Anything I practiced 2-3 times was ingrained my my mind and i never hard to look back a notes.
  • Learning how to 'learn' is as important as learning how to program. 
  • Pair programming is much more important then I ever thought when I cam in on day one.  I learned a lot by working with different people each day / week.
  • The Chicago development community is second to none when it comes to helping people out that are learning. 
  • Passion and persistence can take you further than you expect.
After wrapping up the classroom portion of CA, I participated in my first ever hackathon that was not associated with Code Academy.  The Hackatrain was a unique experience.  While riding the brown line around Chicago, I worked hard at creating something new.  I decided to test myself and see what I was really able to build in 6-7 hours.  My goal was to build a music app that allowed users to upload a MP3.  It would be loaded into a community playlist, and the user could not upload another MP3 until their original one received at least 3 "hell yeah" votes.  If their song ended up getting more than 3 "totally bunk" votes, then it would be removed from the playlist and they could try again.  The goal was to have a streaming playlist my friends and I could use to share new music with each other.  By the time it was ready to present I had created an app that allowed users to sign up, sign in, and upload music to an Amazon S3 bucket.  The music that was uploaded was listed on the main page and a user could select a song and listen to it.  I had to use a backup plan for managing the uploads and it made it a bit hard for me to complete the voting system in time.  It is not the cleanest code, but I walked away with a smile on my face and I did not feel ashamed one bit when showing other more experienced developers what I was able to accomplish.

So, what now?  That is a great question, and I really do not know the answer.  I am still passionate about getting Reading Glue launched.  I submitted an application for the Lean Startup Challenge, and hope to get accepted.  Regardless of the challenge, I will be working hard to prove or disprove the business idea.  At least I now know that I have the skill set to build most ideas that come to mind.  I was also asked to mentor for the summer quarter.  I am really excited to share what I have learned, and I think this will be a great way to stay on my toes.  Something else interesting also came up this week.  I have an interview on Thursday with a local startup for a junior developer position.  When I started this program 11 weeks ago, I had no intentions of making a career change as a software developer.  I slowly fell in love with development, and I am really excited to be seeking opportunities to continue my learning of this craft.

Sunday, June 3, 2012

Code Academy Week 8: Not Just About Coding

On Tuesday I pair programmed with Brian from the M/W/F class.  Before we got down reviewing my code together, we decided to head to Chipotle and grab a bite to eat.  While eating we discussed our backgrounds and what brought us to Code Academy.  We dove into a great conversation about how Code Academy is not just a game changer in our lives, but how Code Academy is part of a much larger disrupt that is taking over education in our society.  I decided to take a little different direction with this week's post, and share my personal opinions on this subject.

We are told from the time we are in high school (and in many cases earlier in life) that in order to be successful you need to go to college.  Is this really true?  It has become normal in our society to pass judgement on a person based on their academic accomplishments or lack there of.  My favorite are companies that have a hard line rule about even interviewing a person that does not have a required degree.  Our society is so caught up in college and degrees that we are forgetting that there are multiple paths to finding success in life, and not all of the paths include getting a college diploma.

Do you know a person that has gone to college and later changed their degree several times before finally finding what they like?  How much of the current college debt is attributed to students not knowing what they want to do?  How many people have graduated from college and are now working in a field that has nothing to do with their degree?  I am confident you know someone that falls into one of these scenarios.  We will all continue to know someone who falls into one of those scenarios if we as a society do not change our mindsets.  Going to college is not the only way to be successful.  Not all students are ready for college right after high school. Once we become more accepting of these facts in our society, I think we will open the door for people to do some amazing things.

To be honest, this subject is very personal for me.  I do not hold a college degree.  I have been judged by others when they find this out.  Too many, it does not matter that I dedicated 4 years of my life as an apprentice in the tool and die trade.  I am a journeyman tool maker.  I started off my life becoming a craftsman who mastered the skills needed to build complex tools.  This includes understanding engineering, design, machining, and in some cases a little bit of black magic to get everything to work.  There is no four year degree (or even masters program) that can give you this type of experience.  I loved my time as a tool and die maker.  After completing my apprenticeship, I left to go to college.  Why?  Because that is what I was supposed to do if I wanted to be a success in the eyes of society.  For the most part I found college boring.  My favorite classes were those that involved labs.  Building and experimenting are my favorite ways to learn.  After two years, I decided college was not for me.  I took an engineering job that seemed to compliment my college and tooling experience.

Thirteen years later I have realized the mistake I made by bending to society's opinions.  I recently realized that one of the reasons I like coding so much is that it is so similar to the tool and die trade I fell in love with as a teenager.  As a tool and die maker we were given a rough tool design to work with.  I would then need to figure out the detailed design of tooling components I was going to build.  This is much like being given a set of user stories, and trying to architect how your software is going to be built.  In tool and die I would start machining parts by lathe, mill, and surface grinder.  Many people know how to run these machines, but only a true craftsman can make art from these machines.  My experience working with some great programmers over the past 8 weeks has shown me the same thing is true when it comes to writing code.  After building a tool you must have a trial and make sure your tool is producing parts that are in spec.  It is important to make sure the tool is running smoothly and does not have maintenance issues.  To the outsider this seems to be the easiest part of the tool and die process.  In fact, it is actually very hard for your common die maker.  One thing I have observed is that some of the greatest craftsman I worked with never spent much time with this process.  They mastered the "black magic" by planning for these issues when they were building the tool.  The same can be said in software development through means of agile and test driven development.

I could go on for days listing how my experiences of tool and die and software development are similar.  I would have never found this out had I not enrolled in Code Academy.  I was able to know in the first 4 weeks if software development was something that fit me or not.  I am not only learning about software development, but I am also learning how to learn.  This is something that is not taught in colleges.  It is my opinion that this type of education setup is going to be critical if we want to try and better our society in the future.  We need to quit pushing college as the only option for a person to find success in life.  In a recent controversial interview on 60 Minutes, Peter Thiel said "We have a society where successful people are encouraged to go to college,  but it is a mistake to think that college is what makes people successful."  If anyone has made it to the end of this blog post, then I beg you to please remember that quote.  Remember that quote the next time you make the assumption that someone is successful because of their degrees.  Remember that quote the next time you meet someone who doesn't have a degree.  Remember that quote the day your child questions the need to go to college or not.

Sunday, May 27, 2012

Code Academy Week 7 & Beyond

Another week has flown by at an even faster pace than the previous one.  It is crunch time for many of the students who are looking to build something amazing to present for demo day.  I made the decision to stick to my guns and work on Reading Glue going forward.  Unfortunately I have not heard from anyone who would be interested in making this a product that would get presented on demo day.  I sent another email trying to rally up some last minute support, but until now the only reply I have heard is the sounds of crickets chirping.  I could really use the front end help.  My focus is on the backend, and I really do not have the time to focus on design or learning any of that at this point.  If I do not have any takers in the next couple weeks, then I will likely just use crowd sourcing for the design based on some wireframes I have put together.  I think that will be good enough to get a MVP released and start testing the waters at the end of Code Academy.

Speaking about the end of Code Academy... I have already been plotting out my plans for what I will tackle when this quarter is done.  The Chicago Lean Startup group is kicking off their Lean Startup Challenge soon.  I am working on my application and will submit it this week.  I feel that the lean Startup Challenge would be an unbelievable learning experience for me.  Lean startup principles are not new to me, and to some point I have implemented them in customer development activities I carried out a few months ago.  I figure luck has been on my side the past year when you consider winning 3rd prize in the Global Education Challenge and getting accepted into Code Academy. Regardless if Reading Glue gets accepted into the Lean Startup Challenge or not, I still plan on hitting the grindstone hard this summer.  It is an exciting time to be me right now.

Sunday, May 20, 2012

Code Academy Week 6

I just completed my 6th week of Code Academy, and have pretty much covered many of the basics needed to build a fully functional web app.  As I have learned new things in class, I have tried to implement them into the version of Reading Glue that I was building.  About once a week I would decide to rebuild most of the app just to get the practice of doing the same programming steps over and over.  This week I decided to not only rebuild the app, but I also rethought how I wanted it to function.  In the past I just jumped into coding without really thinking about the app architecture in great detail.  This time I spent about 3 hours laying out my models and really thinking about how everything would function together.  What I found is that the actual programming goes by so quickly once you have really thought through and planned out what you want to build.  This is a valuable lesson, that I will be sure to never forget.

Also this week we found out how Demo Day is going to work.  Basically Code Academy is going to let students form teams on their own, and 20 teams will pitch on Demo Day.  After the meeting, students gathered in the north classroom to pitch their idea.  I had not planned it at all, but I decided to pitch Reading Glue.  I figured it would be fun to team up with some other people and see what we could make.  I was even hopeful that I might find someone that may turn into a future co-founder.  Unfortunately my pitch was awful.  No seriously, it was brutal.  I tripped over my words.  I stuttered through my explanation of what Reading Glue is.  You would have thought that I had no clue what I was talking about.  We only had thirty seconds, I was extremely tired, and for some reason I was very nervous.  Enough with the excuses.  Ultimately nobody stopped by to discuss my idea afterwards, or has contacted me since.  There were a couple ideas that seemed interesting, but those teams were pre-formed or had formed very quickly.  I am a bit worried at the end of the day I might get left out of a group for the Demo Day pitches.  I am not at 1871 but two days a week, and really do not know anyone outside my own class.  I will probably send a mass email out explaining what I am looking to build for Reading Glue and what I really need help with.  I will also let people know I am open to helping them out from the development side for their ideas.  Hopefully something works out, because I really want to be part of the experience of building something amazing and presenting on Demo Day.

Monday, May 14, 2012

Code Academy Week 5

I am basically at the half way point right now.  We have completed 5 weeks, and have 5 weeks until it is time to start preparing for demo day.  I still feel confident that I am keeping pace with what we are learning in class.  Nothing has totally tripped me up where I feel lost or that I might be falling behind.  I do however wish I had more time to put into coding outside of class.  I am at that point where I want to advance myself much further than what we are covering in class.  I just don't have the time as I try to keep up with 2 full time jobs (being a father / husband and also Chi Cheng).

This weekend Code Academy had their first of 2 hackathons.  Students met up on Friday and pitched ideas.  Teams then formed and they worked on executing those ideas until it was time to present them on Sunday afternoon.  I did not participate.  I have thrown a lot of responsibility on Julie's shoulders these past 5 weeks.  She has basically been a single Mom during the week, and hasn't seen much of me on the weekends either.  This was her weekend, and i did not want to short change her once again.

Even though I did not participate in the hackathon, it was not a totally lost weekend when it came to  programming.  I put in about 6 hours of time  on Friday night and Saturday building a new app idea.  As I was working on my weekly project updates for Chi Cheng, I realized that making a web app version of the report would make my life a lot easier.  My boss could have instant access to my report at all times.  No more emailing the report (and we all know how much I love sending emails...)!  I was able to get it about 50% completed.  I have some complicated model associations that I need to figure out and also setting up user accounts.

While I am on the subject of work, I have to say that I am getting pretty burnt out.  I do what I can to try and stay caught up on Monday, Wednesday, and Fridays.  The emails seem never ending.  Just between Friday at 10PM and this morning at 8AM I had over 125 emails.  It was a weekend, and there were 125 emails sent about the projects I am working on.  Things have not slowed up.  I feel like all I am doing is following up with people and shaking them down for info that they owe me.  The work is endless and I have really lost all the passion I once had for launching the next great electronic product.  I felt like I needed a break from my job when starting Code Academy.  Now that I have fallen in love with coding, the job sucks that much more....

Sunday, May 6, 2012

Code Academy Week 4

Four weeks have past and I have the skill set to build the most basic of web apps.  I went into this experience wanting to learn the skills I would need to launch a MVP of Reading Glue.  Although that is still the overall goal, I have found that I really enjoy programming.  I love the challenges and problem solving skills needed to build a great application.  It is so similar to the skills I use in my full time job, and is one of the reasons I have enjoyed that job so much for the past 10 years.  Launching a MVP of Reading Glue is still my priority, but I have an itch to look into a career change as a developer.

This week we were hammered with the concept of CRUD.  If you can handle those requests, then you can build an app.  The last thing I need to learn is user accounts and how models (databases) can relate to each other.  I feel that once I have these skills down, then there is going to be no stopping me.  To see what I have worked on to date, you can check out http://rglibrary.herokuapp.com/.

Sunday, April 29, 2012

Code Academy Week 3

Another week has passed.  Has it really been 3 weeks already?  This week continued with us building apps using rails.  The important thing we learned this week was building apps that pull data from a model (database).  I learned how to submit form data that can add or update information in my model.  I also can delete info from the model.  I immediately used these new skills to rebuild the Reading Glue library app.  I can view a summary list of all titles in the library.  The information is all dynamic and will automatically update as the database changes.  I can click a title and view all relevant information about that book title.  As with the library summary list, this information is all dynamic.  I added functionality to allow an admin to add a new book, update the details about a book, or delete a book if needed.  In the next day or two, I plan to start adding some search tools to the library.

I am looking forward to what I am sure is going to be taught to us this week in regards to relating models to each other.  This will be helpful so I can start building the functionality to allow a user to add a specific title to their account.

Overall I feel like I am keeping pace.  I don't have a lot of the commands memorized yet.  I am sure that will happen over time as I type them over and over.  I still find myself looking back at my notes for specific command details, but I feel pretty confident in my knowledge and understanding on the general structure of a rails app.  Although I feel pretty comfortable understanding how the routes work, I do have some questions as it relates to paths.  My mentor introduced me this week to using the actual path to link to different pages in my app rather than using the http address.  This is pretty straight forward for general pages, but when you start using params data in the path, then I am getting a bit confused.  I know this is a bit ahead of where we are in class, so maybe my teach Jeff is able to break it down for us where I can understand it a little better.  I would have never thought that in three weeks I would have the skill set to build this much.  Not only do I have the skill set to build these tools, but my mindset and thinking patterns are starting to change.  I seem to have programming and code on my mind 24/7.  It certainly is not a bad thing.

Time management of everything is still hit or miss.  It is really hard juggling class, study time outside of class, a full time job, and being a full time father / husband.  It is only going to get harder in the coming weeks, so I know I am going to need to make some adjustments to allow everything to work without one obligation going up in flames.  So far my family has been awesome during this experience.  Julie is usually the one who gets shafted out of spending time with me.  I have a lot of making up to do on Mothers Day and after this class is over.

Sunday, April 22, 2012

Code Academy Week 2

Week two is officially in the books, and so far I am feeling pretty good.  We started off the week making sure everyone had a good understanding of arrays and hashes.  We also learned how to create a new Class and call methods inside those classes.  I felt confident that I knew exactly everything that was going on four hours into class on Tuesday.  Then the final hour of class came around, and I felt my head was going to explode.

Our TA, Raghu, gave us a challenge of calculating the same shopping cart exercise we were assigned as homework last week, only this time were were to convert it into a program that used classes and methods to make the calculations / print the total.  Usually we pair program, but on this day I was flying solo.  It felt like the entire class was marching forward, while I just sat there trying to think through where to even begin.  I started laying out my thoughts, and deleted them.  I then started again, and once again felt like I was heading down a dead end road.  After about 10 minutes, I asked for a little help on how to get started.  Come to find out, I was originally headed down the correct path.  Raghu reviewed the solution with the class very quickly.  I had no time to copy the solution down, but I felt like I understood the general thought process and how he came up with his solution.

After class, I tried to work on the same problem from scratch.  I was totally stumped, and could not get the program to return the shopping cart total value correctly.  I must have sat there for about an hour and half trying to figure it out before I decided to take a break and head home.  That night I took another stab at it.  I sat there for a couple more hours puzzled why my solution was not working correctly.  My code looked like:

  def total
    total = 0
    @cart_array.each do |i|
      total += i[:item].cost * i[:quantity]
    end
  end

Everything seemed to be correct.  I was pulling out the item, applying the cost to that item, pulling out the quantity from my array.  I then multiply them, and add that calculation to my running total.  I wasn't getting any errors, but I also was not getting the total cost for my shopping cart.  What could be wrong?  What I realized after staring at my screen for 3+ hours is that my method was not returning anything, because I had not told it to return anything.  Just because I was running the calculation did not mean that the method automatically is going to return that info.  Once I added the "return total" to my method, everything worked.


  def total
    total = 0
    @cart_array.each do |i|
      total += i[:item].cost * i[:quantity]
    end
    return total
  end

We also learned how to output data automatically into a html and css file.  It finally seemed like we were doing something real.  Something that I could easily apply to the app I want to build.  I spent that night and next day building a program that would add book titles, author, and reading level into a library.  The program then would output a summary of all books in that library.  This exercise helped me  make sure that I truly understood methods, and how they return information when called.

Thursday was exciting because we jumped into Rails for the first time.  We built a basic web app that had an index page with an ordered list of landmarks.  When clicking on the landmark, you would go to a details page that was dynamically put together by the ruby code embedded in the *.html file.  Once again, I went home and built a version of this same app that related to listing books in a library.  It had dynamic detail pages for each book that would list important information about the book that was clicked.  I really feel like all of this is coming together.

On Friday, I went to Eight Bit Studios to meet with my mentor Don Bora.  We went over the library app I had made the night before, and he introduced me to the "before_filter."  Basically this can be added in your controller file.  You can add a method that will then be used in all of your pages without repeating the code each time.  Don and I spent some time discussing my app, and where I should begin.  Basically I mapped out everything I want to build in the next 10 weeks.  I broke this up into the main sections such as user accounts, library, and backpack.  Under each of those sections I have a list of the the functions and sub-functions that will need to be built.  I am going to try and bite off a piece each week with what I learn in class.  I am really excited to get going on this.






Sunday, April 15, 2012

Code Academy Week 1

Back to blogging on a weekly basis.  I tried to keep up with it before, but kind of came to a point where I was too busy to sit down and type my thoughts out.  Neil, Mike, and the other members of the Code Academy team encourage weekly blogging.  I am going to be totally honest and share what I find to have been easy, hard, and even stupid mistakes.  I know sometimes I am afraid to admit stupid mistakes, especially when it seems I am the only one that is making them.  It is also hard sometimes to reach out for help when you feel the area you struggle with is something that everyone else has mastered already.  By sharing these experiences on my blog, I hope it encourages others to feel free to admit when they need help.


Week 1 went by in a flash.  Only ten more weeks until demo day.  This week was pretty laid back.  Tuesday was consumed with introductions, general info, and some playing around with html and css.  We also created our first ever ruby file.  Thursday ramped up a bit.  We started learning more about some of the ruby methods and how to create our own methods.  We were also introduced to lists and how to create and extract data from an array or hash.  I can see that we will be building upon concepts pretty quickly.  I am trying to create a habit of immediately after class trying out all the examples we worked on in class to see if I can complete them by memory.  I was actually surprised at how much I had to revert back to notes when going through these problems only 1 hour after class ended.  This is a pretty good indication that I need to practice more, so that is what I did this weekend.  We were assigned a simple shopping cart exercise to work on over the weekend, and I decided to sit down last night and take a stab at it.  I was able to get about 90% of it completed on my own.  I struggled to complete the last part of the exercise which was make the code change the quantity of one of the items in my shopping cart.  I knew exactly what to do, but I kept getting an error.  After trying to figure out what was going on for nearly an hour, I cracked and took a peek at the answer.  I had typed the following statement:

shopping_cart[1[:quantity]] = 3
print_total(shopping_cart, sales_tax, params)
My mistake was that I thought ":quantity" needed to be included within the array item number's "[ ]".  After looking at the correct solution, I found out that it should look like:

shopping_cart[1][:quantity] = 3
print_total(shopping_cart, sales_tax, params)
I guess this is my first taste of pulling my hair out for an hour.  I was trying to debug something that is such an obvious oversight to me after the fact.  I guess that is all part of the learning process.


Another interesting thing that happened this week was that I met my mentor Don Bora.  I think this was the most exciting part of my week.   Don is one of three owners of Eight Bit Studios in Chicago.  Come to find out, Don has a passion for transforming education in the same way that I do.  He has worked on many projects in the past that are focused on education.  I think this is going to be an awesome fit for me as I look to build Reading Glue during the next 3 months.  I am not sure if this pairing was intentional or not.  If it was intentional, then bravo to Dave Hoover or whoever put this pairing together.


Today I am working on Chapter 2 of the Hartl Ruby on Rails Tutorial and also chapter 7 of Learn to Program by Chris Pine.  It is only one week and I know a lot more then what I ever had before.  I am so pumped about the exciting atmosphere of Code Academy.  My classmates are all very inspiring.  I said it before, and I will say it again.  This quarter we are going to see some magic happen in Chicago.

Friday, March 9, 2012

Bring It!

I haven't posted in a while.  To be honest I have been so busy.  The last thing I had time for was blogging.  Some cool things have developed in the past few weeks.  I mentioned in my last post that I had applied to Code Academy.  Last week I received the good news that I am in!  Starting in April, I will be part of the Spring semester Tuesday / Thursday developer class.  I could not be more excited.  Learning the skills I will need to build Reading Glue will be essential to the company's success.  Even more important, I will work with mentors and make connections that will give me an advantage that many people do not have.

I am trying to wind down projects, so that I can cut my work hours down to basically 3-4 days a week.  The next 3 months are going to be the most challenging time of my life.  If I can successfully make it through this experience, then I know I can tackle any challenge the world of entrepreneurship brings my way.

The past year has been truly unbelievable.  I have been blessed in so many ways.  At the same time, I have been challenged more than ever.  Right now I am consumed with excitement, fear, and stress.  It is a good feeling through.  I get bored when I am not presented with challenges.  Needless to say, I don't think I will be bored for the next few months.  I am living life by a new tag line these days, "Bring it!"

Monday, February 13, 2012

More Customer Interviews an Adviser and Code Academy

This past week I knocked out a few more customer interviews.  So far I have been getting some great feedback as to what parents see as being a product that provides them with a value added solution to practicing reading with their children at home.  Each time I conduct a new interview the process seems to go smoother.  It still amazes me how this is such an easy thing to do, yet it seems to get overlooked by so many people who are starting up a new business or service.  I have found some of my hypothesis to be true, and other areas that need to be adjusted accordingly.  I might have wasted a lot of time, effort, and money had I not taken a few steps back and worked through this process.

Also this past week the Reading Glue team officially brought on our first educational content adviser.  I am so excited to have this person on board.  She brings a ton of experience to the table.  In one hour, she blew me away with some of her creative thoughts on how to improve the product.  I have a really good feeling of what the Reading Glue product is going to be with this valuable resource now part of our team.

One of the big things that has been on my mind lately is bringing on a technical co-founder.  I have never built anything from scratch, and all my experience has been on hacking at the front end.  I do not have the slightest clue how the back end runs or is programmed.  I decided to dedicate my time to understanding this a little more, and even applied to Chicago's very own Code Academy.  Code Academy is en intensive 11 week program designed to teach a beginner the fundamentals needed to build web apps using Ruby on Rails.  This is essential if I want to code any part of Reading Glue on my own.  It will also allow me to understand the programming environment that I can build a solid technical team.  My fingers and toes are crossed that this works out and I am accepted into the program.  Either way, I am going to start dedicating some time each week to learn a little more about the Ruby on Rails framework.  It can't hurt, and I might just find an awesome technical co-founder in the process.  If you have any great resources or tips, please share.  I am always open ears to some great advice.

Tuesday, January 31, 2012

Lean Canvas and Customer Interviews

This past week I have been working laying out a lean canvas and starting to apply some of the customer development lessons I have learned so far.  I almost feel like I am back in sixth grade science again making a hypothesis and setting up experiments to help prove that hypothesis.  My goal was to lay out my problem, solution, customer segments, unique value proposition, and revenue streams on paper.  There is a great free tool for this at  http://leancanvas.com.  I then created some initial experiments to test if the assumptions I have made are really true or not.  Getting all of this info down in written form has helped free up my mind, and easily visualize my idea.  It is similar to a business plan, but takes less time and provides a lot of the same thought pattern.  It is also a lot easier to modify than a formal business plan.

My initial hypothesis experiments are being done through customer interviews.  Last week I reached out to several friends for referrals of people who meet may target demographic for a customer (parents of children grades k-3).  I also posted a request in some of my LinkedIn groups, Twitter, and Facebook.  I was surprised to get a few emails within 24 hours from interested participants.  Some were not local, and so those interviews had to be done by phone.  Others were in the Chicagoland area, and I was able to meet up for a cup of coffee and get some great insight to what parent's are currently using for reading practice, what problems they face, what solutions they envision, and the price point of which they would be willing to pay for a solution that meets their needs.

The whole customer interview process has been exciting so far.  I have to admit I was a little scared to find out that my idea was not really something people would want.  The results seen so far are very positive, but I have been surprised by a few responses I have received.  Those responses are helping me refine the real problem parents find in practicing reading with their children.  I was also presented with a few features that I had not thought of, but parents seem to think were important.  Overall the process has been refreshing.  It is helping me narrow down a MVP solution that my customers will want to use and spend money for.

My goal is to get about 10 more interviews completed before I take further steps forward in building an actual product to test.  If you are a parent of a child in grades k-3 that would be interested in participating in some of our early development activities, then I ask that you email me at james@readingglue.com.  We can do it over a cup of tea / coffee if you are local to the Chicagoland area.  I am also open to talking to you over the phone if you are distant or feel more comfortable having a discussion this way.  Anyone that helps out in the early customer development period will have first access to the software when it is ready to test.  I am proud of the great customer advisers we have started building relationships with so far, and look forward to working with all of these people as we continue down the road to a full product launch.


Tuesday, January 24, 2012

Seeking Customer Interviews For Reading Glue

I am looking to conduct some customer interviews with parents of students grades k-4. The interview will consist of discussions around how you currently practice reading with your child at home. The interview will be brief, and will provide some valuable insight on how I can design Reading Glue to most benefit our customers. If you are interested in grabbing a cup of coffee or a quick phone call, then please email james@readingglue.com for more info. I am very appreciative of any help you might be able to provide.

Tuesday, January 17, 2012

Slow Week

Last week was pretty much a wash for being productive and meeting goals for my startup.  I kind of knew that would be the case ahead of time when I found out that I would be spending the week at CES for my day job.  The days were filled with browsing new technologies and scouting the latest trends.  Nights were filled with email, conference calls, and more email.  My plan was to spend the evenings putting together some of the details for my business plan, but that never seemed to happen.  Each night I would finish catching up on the work that had piled up through the day, and then was too exhausted to be productive at what I really needed to get done.

The week wasn't a total wash though.  On my flights to/from Las Vegas, I was able to catch up on some reading.  In particular, one of the books I read on my flight to Vegas was "The Entrepreneur's Guide to Customer Development" by Brant Cooper and Patrick Vlaskovits. The book summarizes some key points from "The Four Steps to the Epiphany" by Steven Blank, and it reminded me that I really need to take some time up front to work with actual customers.  I realized that I have been building a solution based on the feedback I have received from teachers and those affiliated to the fields of education and literacy.  All of these people have given positive feedback, but ultimately most of these people I have discussed details with are not going to be my customer.  Before I get too far in determining my business plan, I need to establish a formal hypothesis and start working with actual customers to make sure my assumptions of problem, solution, and willingness to spend money on my solution are correct.

As I was reading on the plane, I slapped myself on the forehead and had one of those "duh" moments.  How could I have overlooked this essential part of the lean startup methodology?  It is kind of embarrassing that I did not sit down and start customer interviews two months ago when I first started to refine the Reading Glue idea.  I guess it is better to figure this out now instead of later when I can't develop or maintain customers.

The next couple weeks should be interesting as I basically "cold call" customers and get critical feedback of my product.  This will help provide some initial validation that I am headed down the correct path or where I need to make adjustments to insure I am providing a solution people are willing to spend money on.  My assignment for the next couple days is to figure out the right questions to ask that will truly give me the critical feedback I am seeking.  I am open ears if anyone has any suggestions or feedback on the initial customer interview process.  I will be sure to post a follow up blog in the coming weeks with some of the results and lessons learned from this exercise.

Monday, January 9, 2012

Finding a Mentor

When I first decided to take the Reading Glue idea seriously, I knew that it would be beneficial to have a mentor.  I had read everywhere that having a great mentor was key.  I faced the question that I am sure many people do, and that was "how and where the hell to I find a mentor?"  I know people that have started businesses, but none of these people have experience in the tech or education sectors.  I know people who are very successful executives, but most are connections through my day job.  I do not want to mix my day job and startup activities.  So how in the world was I going to find a mentor?  To be honest, I just ignored this question and and told myself it will happen when it happens.  I even tried to convince myself that it might not even be all that important for now.

About three weeks ago I was reading my RSS feeds and a IM came through.  A friend of mine was sending over a link to a story that I had actually seen earlier in the morning.  It was from the local newspaper and talking about how some local small businesses were utilizing the Fox Valley division of SCORE.  I had breezed past the article earlier without really reading it.  I thought to myself "I know everything about the available local resources for small businesses."  After getting the IM, I decided to go back and read the article.  The article discussed how SCORE offered local businesses and entrepreneurs mentoring services for free.  After going to the SCORE website, I found out that they offered meetings in DeKalb as well as Elgin and other places.  I decided to set up an appointment.  If it did not work out, then nothing was lost except maybe an hour of my time.

This past week it was finally time for my meeting.  I met with two gentlemen who were excited to hear about what brought me in, what I was trying to build, and what help I was seeking.  It turns out that each of them came from backgrounds similar to what I am dealing with in education and software startups.  As I was 30 minutes into what was supposed to be a 5 minute explanation, it quickly dawned on me what these guys would be able to help me out the best with.  I needed someone to help settle down the 100+ directions my brain was going everyday, and give direction activities I am working on right now are most important to focus on.  The past few weeks I have been trying to develop prototype wire frames.  I have been trying to establish the legal sides of the business.  I have also been thinking about marketing, launch, scaling, etc (yeah I don't know why I am thinking ahead so much, but for some reason I was).  My mind has been running all over the place and getting way ahead of me.  For the most part it has been a distraction.  These guys reminded me that right now the most important thing is to get my thoughts down on paper into a business plan.  Get it written down so it can be visualized by myself and others.  It doesn't have to start off being a very detailed business plan, but I needed to get a start somewhere.  My new mentors gave me a worksheet to fill out and it lays the foundation for the info that will go into the business plan.  I started working on that this weekend.  I will be working on it as I head to Vegas to attend CES for the day job.  My goal is to sit down next week and start writing the formal plan.  I will then review it with my new mentors and see where we might need to adjust or rethink.

I understood the concept of a mentor, but never really understood how beneficial one could be until sitting down this past week with the team from SCORE.  It only took 1 hour and 45 minutes, and I realized that one of the most genius decisions I had made so far was to set up this meeting.  I not only was able to find mentors, but I also feel a lot more grounded.  I look forward to developing a relationship with these two gentlemen further.  Best of all, this came at a price that would make any entrepreneur happy... FREE.  If you have not checked our SCORE before, then I suggest you do.  They have a ton of volunteers that come from a wide range of backgrounds.  I only wished I had found this resource about 4 weeks earlier.

Monday, January 2, 2012

A Little History


Let me start things off by giving you a little history about myself and my situation.  I am the father of 2 beautiful children, and am lucky enough to have the help of my wife Julie to help raise these bundles of joy.  I am currently employed full time as a sales and business development manager for an electronics component manufacturer that is located in Asia.  Although I joined the team as an engineer, I have moved into a strategic new project development and management position for the past few years.  Being that my customers are located in the US and co-workers in Asia, my work hours are usually all over the place.  The job can have long hours, and little down time if any.

While working my day job, I became interested in finding a way I could help build something that would make a positive impact on the world around me.  My wife, Julie, is a first grade teacher.  She had expressed to me several times that parents need a better way to help teach their children how to read using the same strategies that teachers use in the classroom.  This past summer Houghton Mifflin Harcourt announced a new idea competition called the Global Education Challenge.  I took the base of Julie's idea and built a vision for a product around it.  The submission was originally called eGuided Reading.  Being from the electronics industry, I have always been required to keep details of new products secretive and cover my ass when it came to legal aspects of sharing secretive info.  Releasing my idea for the world to see, critique, and possibly steal was all new to me.  Opening up my idea for everyone to discuss was the best decision I could have ever done.  I learned a lot of what my product could be, and how to make the idea better.  People were not interested in running off and stealing my billion dollar idea.  They were too busy consuming how brilliant their own billion dollar idea was.  I was able to find out that the problem I was looking to solve was really there, and people were eager to learn more about a solution.

A few months after the voting ended, I received a phone call that would change my life as I know it.  A representative from  Houghton Mifflin Harcourt told me that eGuided Reading was selected as third prize in the competition.  My heart was racing, and my body was overcome with joy and fear.  I was happy to have won, but I was so fearful of what to do next.  I have never been part of a startup team.  Hell, I had never even taken business classes in college.  I was an engineer who happened to fall into the business development side of things in my career.  Prior to going to Washington DC for a press conference to announce the winners, I quickly branded and put together a simplified Reading Glue site.  At the press conference I was completely full of nerves.  Major players within education, ed-tech, and seed / VC investors were present.  Everything I had told myself (listen more than you talk, ask questions, etc) went right out the window. As I walked back to my hotel, I realized I had a lot to learn when it came to building a startup.  The next 3 months would be critical if I wanted to turn this idea into a successful product.

I have quickly tried to immerse myself into the startup culture around the Chicagoland area.  I attend as many Lean Startup Meetup's as possible, and have been trying to network with other local entrepreneurs.  One of the most difficult aspects of my situation is that I have to try and build a startup while looking after my "day job."  At the same time I decided to run with this idea, I was awarded a new project at the "day job"  that happens to be the most challenging I have worked on in my career.  This project has consumed almost all of my time.  So much that it has created a lot of stress in my family life.  It is frustrating that I am putting in so many hours on such a challenging project for someone else while trying to take advantage of the opportunity I have with building Reading Glue.  I feel the past 3 months have been wasted time.  I now completely understand where people are coming from when they say you either go in 100% on a new startup or not at all.  With a family to care for (and low pay scale teachers work for) I am not in a financial situation that will allow me to quit the "day job" and jump into this idea full time.  Maybe something will change in this upcoming year.  Until then, I will have to find ways to increase productivity and carve out time to dedicate to making Reading Glue a success.  It is not ideal, but it is unfortunately the situation I am in right now.

I am going to try and post at least once a week to share with everyone my experiences and lessons learned. I am excited to share this experience with everyone.  I invite you to comment and add any advice or questions as well.

Blog Revamp

I am revamping this blog.  I really had not kept up with the old blog for the past couple years.  With all the other social media outlets I use, it really just did not make sense to post family or life updates on a blog anymore.  As I kick off 2012, I decided to utilize this blog differently.  I wanted to find a way that might help motivate me to stay on track with my goals of getting Reading Glue launched this year.  I also thought that by sharing my experiences publicly, maybe it will end up helping another young entrepreneur that is in a similar situation as myself.  I hope you enjoy the blog.  Feel free to follow me on Twitter or add me on Google+.  I look forward to sharing my experiences and thoughts with everyone, and maybe we can have some healthy discussion related around it as well.