Sunday, October 2, 2016

History and Future of Programming

I watch a lot of YouTube videos about software and I came across a very interesting video by "Uncle" Bob Martin called "The Future of Programming". It is actually more about the history than the future. It was very interesting for a budding programmer such as me.

He starts by talking about Alan Turing who wrote the first code that we would identify as code in 1936. In 1960 there were a could hundred computers in existence and a couple thousand programmers. Just 5 years later there were around fifty thousand computers and a hundred thousand programmers. So in about 20 years we went from one programmer to a hundred thousand programmers. Just 5 years later again in 1970 there are over a million programmers. After this the number of programmers doubles every five years. That means half of all programmers have less than five years experience and the profession is in a perpetual state of inexperience.

Programming has only been around for about 80 years.



Wednesday, September 28, 2016

Better than I thought?

I often listen to coding podcasts and watch coding videos on YouTube. One of the YouTube channels I watch a lot is called FunFunFunction. He has done a few pair programming videos.

One of his more recent videos is Cellular Automata - Pair Programming. This is an hour-and-a-half, almost unedited video of the host, MPJ, pair programming with another person. It was so interesting to watch what it is actually like to program with no editing. There was a lot of looking things up on Google, making small mistakes, and forgetting how to do simple things. MPJ is a developer at Spotify and has a very popular YouTube channel about programming. It was very encouraging to see him struggle to write a program.

Maybe I'm not as bad at programming as I thought.

Sunday, September 25, 2016

Using templates: Is web design a solved problem?

I purchased my first domain name back in the year 2000 while I was a senior in high school (November 27th, 2000 to be exact. Thanks whois.net!). But I think I made my first website on geocities when I was in middle school. The most exciting content was the "joke of the week" that got updated at least every two months. I'm not sure templates even existed back then. Since I started out with no templates, it took me a while to realize how great they are.

My life goals have changed a few times over the years. I wasn't always planning on making a career of web design and software development but I have been making websites for people periodically since my first site in middle school.

Thanks to the Wayback Machine, we can see one of my first websites created in 2001! Yes, that is my face on a cow's body in the corner. The first time I was paid to develop a website for a business was in 2006 and they haven't done any major update since! See it here.

It wasn't until about a year ago that I realized how great website templates are. Everything I created before that was from scratch. I have found that starting with a template makes things easier, makes everything look better, and allows me to focus on the actual content of the website. Also, most templates nowadays are mobile responsive designs so a template helps guarantee your site will look good on all devices. It is still important to have an understanding about what makes up the template. An understanding of HTML, CSS, and JavaScript allows me to make customizations so the site can be directly tailored to the needs of the client. Thanks to templates, my more recent sites look so much better than my earlier sites. Here is one I created for an organization called P.A.C.T.

All this makes me think about a quote from the most recent episode of the Shoptalk Show, a podcast I listen to about web development. The host was quoting an (unnamed) friend that said "maybe web design is a solved problem." The most important thing to most users is ease-of-use. Using common design patterns makes websites easier to use and therefore makes the website more effective. Trying to reinvent the wheel every time only hurts the overall project and wastes time.

Compare the first website I created for the Houghton-Jones Neighborhood Association to the current website I created for them. The first was before I used templates, the second was after. I am never going back.

Saturday, September 17, 2016

Learning Ruby on Rails: Pragmatic Studio vs. The Ruby on Rails Tutorial


I first started learning Ruby on Rails back in January based on the suggestion of a friend. We decided to complete the Pragmatic Studio Rails course together. I have now successfully finished both the Pragmatic Studio Ruby on Rails: Level 1 course and Michael Hartl's Ruby on Rails Tutorial. I am going to do a brief review of the pros and cons of each course. I found both the courses to be very well-done and professional and both would be good for a beginner learning Ruby on Rails However, that does not mean I would recommend people do both courses. At the end I will offer a suggestion for people trying to decide the best route to take to learn Ruby on Rails.

Pragmatic Studio Ruby on Rails: Level 1
This course costs $149. After some discounts I paid $126.75. Before completing this course, I also went through their Ruby course to learn the fundamentals of Ruby. The course is broken up into 26 different sections and each section has a video and exercises. Text within the exercises section goes over pretty much everything covered in the videos so it is easy to find specific information.

The videos are professional quality and they all feature a husband/wife team. The interaction between the two hosts make the videos more interesting. They break everything down so it is very easy to follow. In the exercise section that goes along with each video, they guide you through creating a project that is similar, yet still different, to the project that they create in the videos. Since the exercise project is different than the one they create in the videos, it forces you to think through things a little more instead of just copying and pasting. This helped me learn the material better.

The project for this course was to make a move review site. Check out the  website I made with this course.

Michael Hartl's Ruby on Rails Tutorial
I completed this course many months later, partly to get a refresher on Ruby on Rails. One of the best parts about this course is that it is free. This course is basically an online textbook and tutorial. The free version does not contain any videos. This course covered a lot of the same concepts as the Ruby on Rails course. However,  compared to the Pragmatic Studio course, it seemed a little more advanced and I got the feeling that the work-flow was more aligned with what it would be like in an actual job environment. I did not complete the Pragmatic Studio Level 2 course but this tutorial covered many topics from the Level 2 course such as users, authentication, and admin privileges.

As far as I can tell, the Ruby on Rails Tutorial is the most popular way to learn Ruby on Rails. Also, Micheal Hartl is constantly updating it. I e-mailed him about a very minor error and he fixed it within a day. While I did not run into any major errors in the Pragmatic Studio course, I feel more confident about the accuracy in Hartl's course just because of it's popularity combined with very quick updates to any mistakes that are found.

One thing that could be a pro or con is that the current version of the Ruby on Rails tutorial focuses on creating a project through Cloud 9, a cloud-based IDE, while Pragmatic Studio suggests to use a local installation. So Pragmatic Studio gives a little more detail on how to install everything locally.

Both courses give instruction on using git, Heroku, and Amazon AWS.

The project for this course was to create a site similar to Twitter. Check out the site I made with this course.

What I would do differently if I had to do it again
Though they are both great courses, if I had to do everything again I would not do the Pragmatic Studio Course. In addition to going through Micheal Hartl's free course, I would join his Learn Enough society for $29.00 /month that includes videos to go along with the Ruby on Rails Tutorial. This subscription also includes other material as well. I did not do this so I cannot speak to how these videos compare to the Pragmatic Studio course but based on how well done the free tutorial is, I would assume they would be very good videos.

One last thing to consider is that the Pragmatic Studio course may be a little easier for people with little programming experience. While both courses give detailed step-by-step instructions, the Pragmatic Studio course breaks down some concepts a little better.

Friday, August 12, 2016

Stuck? Start!

I just finished creating a Roguelike game from scratch using React.js for a project in the FreeCodeCamp curriculum. It is called Internet Dungeon. Even though it was part of a curriculum, they do not give you any help whatsoever on how to complete the project. There is no tutorial. It's just: "Here are the objectives. Do it!" I suppose this is similar to a real job environment.

I can honestly say I had no clue where to start. I kept trying to learn more about React hoping that this would get me going. Here are some of the resources I used:


  • Thinking in React - Directly from Facebook, the co-creator of React.
  • Lynda.com: Learn React.js: The Basics - While I already finished my software development degree, the inculded subscription to Lynda.com is still active! I am actually getting more use out of it after graduating than before graduating because I have more time.
  • React.js Fundamentals - This is a great free course.
Eventually I realized that learning more was not actually helping me to know where to start on the project. I just needed to start doing something, anything. I already had a few more basic React projects under my belt. I decided to start by making some modifications to a project that had some minor similarities to the one I was creating. The previous app was The Game of Life. That app has a grid of squares that change color based on set rules. My first step to making my Roguelike game was to use the grid from 'The Game of Life' and see if I could make a square that you could move around the grid using arrow keys. 

After I finally just started programming more ideas came to me and I was basically able to make the rest of the game without getting stuck for too long. I still had to do more research about things such as creating a randomly generated dungeon and creating a 'camera' that followed the player but once I just got started these things came easier. And the interesting this is that I used almost none of my original code from 'The Game of Life' that got me started.

Now I want to recreate the entire game using Angular 2 instead of React!

Thursday, July 7, 2016

Reader Mail

I've received my first reader mail! He asked a good question that I still haven't completely figured out the answer to.

Hello,

What made you decide to change careers? Was being a special education teacher draining? I currently work as a programmer/IT Support and I’ve been contemplating on making a move to teaching. Was finding a teaching position difficult with a WGU degree?
-Tony 

 Below is the response I sent to him:


I am still figuring out why I decided to change careers. I know some of the reasons, though. I don't know if they will apply to your situation.

Being a teacher is very stressful. (It is also possible that being a programmer will be stressful.) I have taught in an urban school district. Maybe some of my challenges as a teacher would not have been so bad in a different setting. One of my main struggles as a teacher has been classroom management (getting the kids to do what they are supposed to do). There are people out there that say that anyone can become good at classroom management with the right techniques. That could be true but personality seems to play a big role. I feel my personality makes things more challenging in this area. It is easier for me to understand how to become a better programmer than how to become a better teacher.

Also, while it is nice to get summers off as a teacher, there is very little flexibility in a teacher's schedule. We get two personal days per year. So while we do get more time off than other jobs, we do not get to choose when the time off is. Also, I will never be able to have 'flex time' as a teacher. And as far as getting summers off, most teachers I know, including me, work during the summer as well. Teachers often work well over 40 hours per week during the school year so that kind of makes up for some of the extra time off.

I became a teacher because I wanted to make a difference in the lives of others. I now realize that I can still make a difference as a programmer. I still enjoy working with kids and I plan to teach students programming in the urban area that I live in. The students in this demographic have almost no exposure to computer programming and it will be good to give them this opportunity. Also, I think I can have more of an impact on youth in a non-school setting. I have found that it is easier for me to form meaningful relationships with kids if I am not forcing them to do something they don't want to do (like math). My wife and I actually specifically moved to our inner-city neighborhood to try to show God's love to people in the neighborhood. We have tried to get involved with the great things that were already happening in the neighborhood. It is actually my hope that becoming a computer programmer will open up more opportunities to serve people in our neighborhood and city. My current dream is to get a remote software job that allows me to work a little less than 40 hours per week (it's not possible to get a job like this as a teacher). This will open up more time for mentoring youth and serving in other areas.

Besides the above reasons, another key reason that I want to switch to computer programming is that I am very interested in computer programming! I wrote my first computer program when I was in middle school and have been interested in it ever since. I actually took some programming classes in college (that I enjoyed) before eventually deciding I wanted to become a teacher. I think it is fun to try to solve programming problems. Hopefully it will still seem fun after it is a job.

You asked about how difficult it was to get a teaching position with a WGU degree. I got a position one month after a graduated. However, I probably just got lucky. My host teacher from student teaching got another job and I was hired for the exact same position where I was student teaching just one month previous.

-Beau Carnes

Monday, July 4, 2016

Free Code Camp Calculator

I have been cruising through the material at Free Code Camp.   I should be finished with their Front End Certification pretty soon. I recently made a calculator in JavaScript as one of my projects on Free Code Camp! Click result below to see it.



See the Pen calculator by Beau Carnes (@beaucarnes) on CodePen.