May: Refactoring and the MEAN Stack

May is one and done! Here’s what I had planned for the month:

  1. Complete the Network Monitor in full.
  2. Learn the Vi and Vim editors and start using them.
  3. Complete the Full Stack JavaScript track on TreeHouse.
  4. Finish Refactoring by Martin Fowler. 
  5. Have a large chunk of Front End complete for ticketing system.

This month has been crazy hectic with work, and with the summer vacations taking up a chunk of time, I wasn’t able to meet all of them.

Work hasn’t allowed any of the development projects to move forward, since some people are out of office, and my own projects are keeping me pretty bogged down.

Full Stack JS

fs

I was able to complete all but 15 hours of the Full Stack JS track on Treehouse, mostly because the latter half was brand new tools and resources I’ve never used. Gulp, Node.js, and Express have slowed down the learning.

This shouldn’t be much of an issue, since I have several free months at the end of the year, and lots of leeway on what gets studied. Most of my later studies are things I don’t use, but were added to the list because they sounded interesting.

Books

I was able to finish the Refactoring book just fine, and what a great one it is. Both a reference library of techniques and a general guide to cleaning up existing code, it’s a must have for anyone in my opinion.

As for vi and Vim, I’ve been using the editor on all of my computers without issue. I’ve yet to master the shortcuts and the command mode in depth, but am still relying on the mouse and menus for most tasks. I have yet to start the book itself, and hope to pair it up with Practical Vim later on.

Next Month

With all the crazy stuff I’ve had going on this month, and also feeling a bit burned out, next month will probably be a month off. I’ll pick up and continue the learning missed this month if I do anything. I’m going on a cruise for 1/4 of next month, and will be off for about 10 days, so that will take up a large portion of the time. Once I’m rested and back in the groove of things, I’ll tackle the rest of the year.

In July, I’ll be finishing anything left behind from this month, and start on the Java and Java Web Development tracks through TreeHouse. If I have time, I’d also like to look through the famous Design Patterns book.

 

April: Front-End Development and COBOL

A little late, but April is one and done! I feel like this month was probably my most productive so far, but a lot of this mood change is probably due to some changes in my own personal philosophies over the past three weeks. I’d like to start posting about books that I’ve read outside of programming, but I’m not sure if I’ll do that on this site, or on another, more personal site. Regardless, here were the goals for April, and whether they were completed or not:

  1. Complete the Network Monitor in full. (Not Complete)
  2. Complete the Front-End Web Development track on TreeHouse. (Complete)
  3. Complete the Beginner SQL track on TreeHouse. (Complete)
  4. Have a large chunk of Front End complete for ticketing system. Back-end is mostly finished as of this post! (Not Complete)
  5. Finish Murach’s Mainframe COBOL and our company in-house conventions manual. (Complete)

Work Projects

This months wasn’t all too productive towards work projects. With some minor setbacks and waiting on other things to come through, just not much got done. Plus with an added workload with recent changes, things have gotten pretty bogged down. I’ll aim a bit more realistic next month (plus, the setbacks should be done soon).

TreeHouse Learning

Enough with the negatives! TreeHouse learning went great this month! I completed the Front End Web Development track a week early, and have already been working on Full-Stack JavaScript for next month.

2017-04-24 16_54_02-Treehouse _ Tracks

Most helpful was learning Git on the command line, something I’ve put off time and time again, since the web GUI always worked for what I needed. But with the things I’ve been running into at work, it’s time to pick it up. Most of the time, the GUI within Visual Studio’s Git plugin worked fine, but like PowerShell it’s just going to make me 10x faster and more knowledgeable.

COBOL

Photo Apr 24, 10 42 31 AM

COBOL learning went well, although I decided to tone it down and just get a general overview. I focused more on the in-house guide we have at work (aptly titled “ALL I NEED TO KNOW IS IN THIS BOOK”), using Murach’s as a supplement where the reading didn’t make sense or wasn’t in depth enough for me. I don’t have a working knowledge of the language, but I know the structure and function of it well enough that I should be able to pick it up easily if needed. I’ve also got a book on IBM DB2 that I have on retainer in case I need it.

So What’s Happening Next Month?

I’ve decided to pick up some books for reading in the next few months, and I’ll be starting with Martin Fowler’s Refactoring: Improving the Design of Existing Code. I feel like this will be a great start for me, allowing me to get better at cleaning up my code, and typing it efficiently in the first place.

I’ll also be going through Learning the Vi and Vim Editors from Arnold Robbins. Since this is a universal text editor, it would be good to learn, and faster than most available. I considered getting UltraEdit, but Vim is free and already installed on Unix systems. For Windows I have GVim installed. Eventually I plan on moving towards Linux System programming, so it will be useful for each of my studies.

 

I’ll also try to complete the work projects as much as possible, while continuing my tracks on TreeHouse to get proficient at mainstream web development.

So in total, next month will see the following goals:

  1. Complete the Network Monitor in full.
  2. Learn the Vi and Vim editors and start using them.
  3. Complete the Full Stack JavaScript track on TreeHouse.
  4. Finish Refactoring by Martin Fowler. 
  5. Have a large chunk of Front End complete for ticketing system.

March: TreeHouse and Work Projects

Goodbye March! Definitely a busy month in the office, so I wasn’t able to make as much progress as I had hoped on books and projects, so this will be a short post. However, it was still a productive month!

I completed the “Teach Yourself Active Server Pages 3.0” and reviewed my JS/jQuery books, and also completed what I needed from the Web Design track on TreeHouse. I skipped the Adobe Illustrator course since most of my design work will be in Photoshop. I also skipped the SASS course, which was very short and I can come back to if needed. The refresher and deep dive into CSS really helped on the Network Monitor project I have been doing at work. I’ve really been enjoying the site and I’ll continue to incorporate their paths and courses into my learning this year.

2017-04-03 10_25_13-Your Profile

pic

A Change In Priority

To really focus (as well as compensating for busy days at work), I’m stopping my learning in other avenues, such as art, politics, and reading through my current library of non-fiction books. Priority #1 is becoming a software developer, and everything else can wait until that happens. I’ll still make sure I’m taking enough down time, since I have easily burnt myself out before on studying.

Priority #2 is gearing my studies towards a programming job at my current employer. This means things like .NET, JS, Handlebars, COBOL, and other technologies that we currently implement and use. Extra things like PHP, Ruby, mobile-dev, and Linux system programming will be placed more towards the end of the year.

The Next Nine Months

With this in mind, I drafted out the rest of the year into a calendar. The main goal was spreading out the books and TreeHouse tracks, as well as giving the last part of the year towards algorithms and programming interview problems. Since my brightest prospects are getting a job at my current employer, I focused the coming months on what would be most relevant to that. This will probably change over time as my current plan has, and I’ll still need to add in time for my own personal projects and portfolio.

Goals for April

Here are my current goals for April:

  1. Complete the Network Monitor in full.
  2. Complete the Front-End Web Development track on TreeHouse.
  3. Complete the Beginner SQL track on TreeHouse.
  4. Have a large chunk of Front End complete for ticketing system. Back-end is mostly finished as of this post!
  5. Finish Murach’s Mainframe COBOL and our company in-house conventions manual.

You can check out the progress of my 2017 studying on GitHub, or read my post about it: 2017: A Year of Learning.

TreeHouse and How It Changed My Learning

I’ve recently found and joined the website TreeHouse, which is an online video learning site dedicated to programming. After doing their free trial for 7 days, I think I have found the tool I’ll go forward with in my learning. Books may be on the back-burner! Here are some of my favorite features:

Tracks

tracks.png
Tracks allow you to easily focus on your area of work.

This is probably my favorite feature. Most online learning sites I’ve tried out are horribly unorganized, and while they may offer a wealth of content, it’s hard to find what you need. With TreeHouse, it’s easy. These are pre-made collections of courses designed to teach you a specific subject, such as Web Design, Java Web Development, or iOS development. This lets you easily set goals and plan out your studying. This leads me to my second (and very closely related) feature…

Course Organization and Flow

topics.png
Courses are organized by topic on the main page.

Courses are organized by topic, and easy to find based on topic, difficulty, or type. The PRO subscription offers additional workshops and conference videos, as well as the ability to download these courses for offline viewing.

course.png
A course preview.

Courses themselves are easy to navigate, with notes and transcripts on the bottom of the page. Teacher’s Notes almost always go into more detail than the video, so while not required reading, anyone looking to get more understanding can open these up and master the topic. The video player was pretty flawless, and also offers an in-browser text editor so that you can work alongside the video. Cool beans!

workspaces.png
WorkSpaces allows you to work alongside videos with no additional downloads or setup.

Personal Achievements and Motivation

I’m a very badge/achievement oriented person. I’m the guy who explores the whole game, has to do every side quest, and fill up all the bars on the progress screen of any game I play. Getting the highest number in each field feels great, and the goal keeps me focused!

TreeHouse takes this system of motivation and applies it to learning, offering badges and achievements, plus a points-based score that represents your overall level of learning. I found it very similar to Khan Academy, which I like a lot.

profile1.png

profile2.png
My low-scoring profile so far.

How This Affects My Learning Plan

I decided to currently focus most of my attention on TreeHouse courses, since my aim is mostly in the web development area. I will continue to study my books, hopefully still finishing all by the end of the year. These will help give the backup theory and a more in-depth understand than most self-taught web developers.

I’ve added TreeHouse tracks to my learning goals on GitHub, which you can see by clicking here. By the end of this year I hope to complete the following tracks, aiming for 1-2 paths a month:

  • Web Design
  • Beginner Game Development with Unity
  • Front-End Web Development
  • ASP.NET Web Development
  • Beginner Android Development
  • Beginner iOS Development
  • Learn Swift
  • Full Stack Javascript
  • Learn React
  • Learn Python
  • Learn Flask
  • Learn Django

I may also add some of the more basic tracks, as a refresher on topics I haven’t worked with in a while. By completing these courses, and finishing through my books, I’ll have an in-depth understanding of algorithms/CS and web development with popular tools.


This article is related to my 2017 Computer Science study, which you can read about in my previous post. You can also follow my progress and any projects I’m working on through my GitHub.

 

 

February: Algorithms and Web APIs

February is over, and I was both able to complete more than I had anticipated, and still be behind where I intended at the start of the year.

Most of this is due to the addition of some “new” books tailored more towards the current programming tasks I’m doing at my current job. I’ve placed these on the highest priority since the main goal this year is getting a programming job full-time.

Photo Mar 06, 10 38 35 AM.jpg
Missing one other book, Beginning ASP 3.0 by Wrox Publishing

Also, Sedgewick’s algorithm course is split into two parts, of which I completed the first this month. The last couple of sections were just lecture, no implementation, so I didn’t get much coding done for my personal study repos these past couple of weeks. The second part still hasn’t been given a release date yet, so I’ll jump into that when it comes back up. Still, I’ve been able to do a lot of coding at work.

Work Projects

Since I haven’t really mentioned them before, here are the two current projects I’m coding at work:

  1. Creating a web-based ticketing system to replace my IT departments current implementation of Spiceworks. I’ll be doing mostly back-end work on this application.
  2. Creating a web-based Network Monitoring application that constantly tests connection to our locations nationwide, so that we are alerted of any network outages. I’ve been doing both front and back-end on this application.

Most of the work I’ve done so far is getting routes and data setup with Microsoft’s ASP.NET WebAPI, and completing a simple front-end for the Network Monitor. Eventually we’ll also implement a Google Maps API to have something flashy for display.

Goals for March

Here are my current goals for March:

  1. Complete the Network Monitor in full.
  2. Start back-end work for ticketing system. Complete as much as possible.
  3. Finish the following books:
    1. SQL Queries for Mere Mortals
    2. Teach Yourself ASP 3.0 in 21 Days
    3. Review my JS/jQuery book
    4. The Art of Unit Testing
    5. Why Programs Fail: A Guide to Systemic Debugging

 

You can check out the progress of my 2017 studying on GitHub, or read my post about it: 2017: A Year of Learning.

My Java Problem

Most of my Computer Science books for the year use Java as a primary language. I prefer C variations and Python, but as much as I have tried to avoid it, I will be picking up Java as a learning language for algorithms.

I quickly realized that going through Sedgewick’s Algorithms 4th Edition is going much slower than anticipated because I’m having to translate all the code while learning into Python, C#, or C. I planned on translating my code to each language regardless, but it hampers the learning process. On top of this, Sedgewick uses his own Java libraries in his code that are provided with the online resources, which would be immensely helpful to have.

I’ve downloaded IntelliJ, which I’ve used before for other Java classes, onto my machines and plan on starting over with Sedgewick’s courses. I was only through Week 1 of the coursework, so we’ll see how this helps me get through.


 

This post is about my year-long study of Computer Science and Algorithms for 2017. To keep up with my progress, see my study plan on GitHub, and check out my initial blog post.

January: An Update + Cool News!

Hello, everyone! It’s been some time since my last update.

I was able to finish through The C Programming Language and Write Great Code: Volume One before the end of January.

c

The C Programming Language is by far the most highly recommended book for learning C, and is sometimes even referred to as required reading for any programmer. It’s a very simple, easy language, that lets it be used in very complex ways. It’s been around for a very long time, making it easy to find solutions and documentation on. I paired this book alongside some more modern courses on C and C++ from Pluralsight, which I also recommend highly. This language will be one of the languages I practice in my coding of algorithms this year, alongside C# and Python.

write

Write Great Code: Volume One is all about the internal workings of computer systems. Written in 2004, it’s a bit dated, but as a reference this is an amazing book. I’ll definitely be coming back to this time and again once I get to Linux and Assembly language programming.

I’m currently working through Algorightms 4th Edition by Sedgewick, and taking his accompanying Coursera course. It’s been a very dense dive into the basics of algorithms. The course only covers half of the book, and takes six weeks. I plan to try and push through it much quicker, however, finishing by the end of the month.

Alongside the learning I already have planned, I am now working with the programming team at my current job doing two large web-development projects. It’s exciting work and will speed along my readiness for a programming job. Since working on this heavily these past few weeks, I haven’t been posting much code on my GitHub, but plan to start picking that back up soon.

conttribuit
Hasn’t been much activity these past two weeks, due to current work projects.

If you want to follow along with my progress, check out my main blog post about this year’s learning journey here, or check out my GitHub.