I can honestly say that over the last year I have gone from a beginnermediate developer to an intermediate developer. This was something that was most definitely hard won, but thoroughly pleasing. I just hope the quantity of stuff I have learned in the last year and half will hold through the next year.
Lets Start at the Beginning
About 18 months ago I started doing development in ASP.NET MVC on the Asian Live Action Database (Site no longer around ~ 2018 udpate). To be honest it was the first solid idea for a project I have really ever had so it was a great learning experience. There was a lot of new design patterns I learned and became familiar with, along with more advanced features of C#.
I developed a good base of knowledge and really got something going, it was a lot of fun and it pushed my brain. Sometime around there a friend convinced me to get a Mac so I can make mobile apps with him, and get some money, and I think that is where things really took off for me. Not because of the mac, but because of everything else.
New Computer and New Language/Framework
After getting a base of knowledge from ASP.NET MVC I was really getting the hang of the MVC design pattern and could tell my programming skills were getting up to par, for the most part. About 2 weeks before my fall semester started I decided I wanted a new application to help me with my Japanese class. On a dare from a friend I decided to try it in Rails. This was a major shift not only was I on a new OS, but using a new language and framework all in a new dev environment.
Riding the Rails to Vim
Pretty much over the next several months I dove deeply into Ruby on Rails. I wrote a ton of little apps in Rails and really got familiar with it. I even did a couple of contract things with it, and helped a friend migrate over to it. While I never finished the site I set out to do originally, I realized there were a lot of problems doing it as a back end, site and dropped it.
At some point I saw a video of someone using Vim and doing some amazing things with it. The idea of never using the mouse while coding has always intrigued me, but Vim had always been too big of a learning curve, ever tried to quite vim ;), plus my brain wasn’t ready. After staring to use a new OS, and new programming language I was ready to devote myself to learning Vim, so I started to, and still am.
Github is Awesome, but I Hate the Pricing
Along with all the new changes I figured it was time to start learning git as well. I was finding many problems with SVN and I really loved the branching and merging features in git. I signed up for Github and started paying the $7 a month and was fine with that since I had only 2 private projects. One was a rewrite of the Asian Live Action Database and a contract app. Around February I had an accident and had some unexpected Medical expenses even with my insurance covering most of it the bills still hurt. So I had to tighten up my belt which included getting rid of github temporarily.
After some talking with a friend we agreed that $7 was a bit expensive for only 5 repositories. We really wanted all our code under source control in separate repos, and not with an archive repo taking up one of the private repositories. So began the path to sourcehold, which of course would be written in Rails.
Sourcehold: Success or Failure?
I spent the next 6 months, starting in March, learning and coding sourcehold. It was a very very fun time and I learned a lot. I can actually break it out into 3 distinct sections.
As a beginnermediate developer up to this point doing something like a source control site similar to github was a doable task, but required quite a bit of learning. I had a cursory knowledge of ssh and git. Along with no knowledge of cloud computing other than theory. I proceeded to read the following books just to get started.
- Pro OpenSSH
- Host Your Web Site In The Cloud: Amazon Web Services Made Easy
- Distributed Programming with Ruby
These were all good books and I was able to really dissect them and advance my knowledge. I am not sure I could have done this project without reading these books, and it gave me a new respect for programming/technical books. After reading the books I sat down and played with combining as much of it as I could. So I could see how to get everything working together. It was a fun experiment to learn how to get things working together.
Once I read all the books and played around. It was time to start actually coding and designing the site. This is really where things got interesting. As a beginnermediate developer I could roll my own code for features, but using 3rd party libraries or especially api’s were almost impossible.
Through this process I had to use 3rd party libraries so it forced me to learn how to interact with them and start using them. It even got me closer to more advanced topics like creating my own reusable code to add to libraries. My goal is to be able to make libraries at some point which really starts to show you are a more advanced developer, I feel like I am at the cusp of doing this.
Along this process I became very familiar with SSH, Ruby and Command Line. 3 things that are very powerful when used together properly.
I was able to get sourcehold launched, running, and people using it. However, due to how it worked the site was resource intensive and I learned a valuable business lesson:
“Customer growth is slow so manage costs”
I was stuck in a situation where the lowest cost was still a bit high, but my customer adoption rate was so slow it would not be able to cover the costs quick enough. So after 4 months in service I pulled the plug before I ran completely out of money.
One thing to note about when you create something which helps developers is this phrase:
I will use it on my next project.
That is the phrase of death. Make sure your project is so good they need to use it now.
Update from 2018 - At this point in my life I was making $15,000 a year working server support part time, and contract work here and there. While doing college full-time. I did not have a lot of money to dedicate. If I did this today I could have incurred the cost of this project longer.
Coworking, TulsaWebDevs, Hackathon followed by Startup Weekend
In August I met up with Luke Crouch a guy that forever changed my life. He invited me to our local web developer user group TulsaWebDevs. I met a lot of cool people there, and immediately started learning new things by being able to interact with other developers. It was a whole new world of people, and has stretched my brain immensely.
From the TulsaWebDevs I learned about a local coworking venture that started up for local freelancers, and people whom can work remotely. We meet up every Friday for the day and do our work and interact. It turns into a learning experience and exchange of ideas, as well as a place to get help with problems we are having. As someone that doesn’t work on a dev team It has been invaluable because problems I have pounded my head against the wall on I can just ask on fridays and usually someone can answer it for me.
I learned about Hackathon type events from a newspaper article several years ago. I had wanted to do one for a couple of years, but never had an opportunity. I even thought about starting one until Luke managed to organize one himself. It was an awesome event to meet new people and play with new projects. I am definitely in favor of them. 2 weeks after the Tulsa Hackathon I went to Startup Weekend which was just as fun and got to use a new technology which is now shaping some of my blogging efforts.
GoDjango and Python
Over the course of the last few months I took on learning Django and python. It has been a lot of fun to finally find a framework and language which really fits well with me. One of the biggest problems in learning Django though were the lack of video tutorials, so I decided to start GoDjango in a similar vain of RailsCasts where there are weekly updates of 5 to 10 minute videos on doing something with Django.
The really cool thing is that Mozilla has started up with the Mozilla App store, still in preview, and it was super simple to get it on there since it is based on web technologies. All I had to do was add an app manifest and poof it worked. You can install it yourself as well: Couch to 5k Mozilla App Store (App Store Now Defunct ~ 2018).
I have left a few things out, but I tried to hit most of the highlights of what I have done. Please checkout my github profile to see more of what I have done. It has been an exciting year and a half, and I look forward to the next year. We shall see what it holds.
Update 2018 - I don't have a 2012 in review post, but I ended up getting married to a wonderful christian woman who is the love of my life. I also ended up starting software development full time in 2012 as well.