Skip to content

Instantly share code, notes, and snippets.

@RJCuthbertson
Last active February 20, 2018 23:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RJCuthbertson/96567217d51a9a53afb2668d9d9b4ea7 to your computer and use it in GitHub Desktop.
Save RJCuthbertson/96567217d51a9a53afb2668d9d9b4ea7 to your computer and use it in GitHub Desktop.
My goals for personal development projects for the year 2018

Personal Developer Goals

It's that time of the year again: New Year's is almost here and I've been reflecting on the past while looking to set goals for the coming year.

I'm making this list of personal goals that I want to achieve in order to advance my skills as a developer, so that I have a quantifiable means of assessing whether the projects that I'm working through are advancing my skills in a direction that I want. In retrospection I've realized that there have been a few times in my professional development career where my rate of learning has stagnated for some period (typically 3-6 months) - when I've essentially just been grinding out the same types of projects in repetition, while learning nothing or next to nothing new while doing so. Coincidentally, I've realized these periods are also closely linked to the periods I've found myself the least invested in the work that I was doing, which is essentially one and the same for me as being unhappy with my work environment. I acknowledge the fact that I have a need for frequent mental stimulation and to be challenged in order for me to truly thrive. I understand that I can't rely on an employment relationship to offer this to me (nor do I expect them to do so; they call it work for a reason), yet I can take steps to provide myself these mental stimuli through the personal projects that I work on. Recognizing this to be the case, I intend to take steps to prevent this sort of stagnation from happening to the best of my abilities. What is the point of identifying a problem if you aren't proactive in also identifying a path to a resolution?

But how can I achieve this? How do I know that I'm working toward something that will both interest me and simultaneously advance my skill set? One of my Computer Science professors, Prof. Phil Geyer, had a mantra that he applied both to IT and to life: "You can't manage what you can't measure." That one stuck with me, and it's just as relevant here as anywhere else. Without being able to quantify specific experiences that I want to have had, I wouldn't be able to measure whether I'm making progress toward these goals.

First and foremost, I want to reassess my ability to have a separate D/B/A registered for freelance work, and define and establish a "brand" for this. I had registered a D/B/A a few years back, but I haven't been using it since I was hired into my last job full time and regularly worked 50+ hours a week (the highest being 83.5 hours in 6 days). Because of the time investment that position required, I didn't actively try to look for additional contract work. Now that that position has ended, it's time for me to reevaluate this. For general computer science topics I want to focus on the areas in which I am admittedly inexperienced: networking and network administration. At the end of the day, I'm a programmer, and primarily I'm a web application developer. I dabble in a lot of topics outside of this, but that's my core area of experience. In regards to programming, I want to focus on working with different types of languages and design patterns that I may not have the opportunity to use as a web developer. So, without further ado, my list of goals for 2018:

Business Goals

  • Check validity of old EIN (Federal)
  • Reapply for Taxpayer Identification Number and business certification (State)
  • Register web domain(s) and build a simple website
  • Have business cards printed

Administration Goals

  • Configure and use a RAID 0 array

  • Configure and use a RAID 1 array

  • Configure and use a RAID 10 array

  • [/] Upgrade desktop hardware [partially completed]

  • Plan and implement clean triple boot setup (Win 10, Kali, Gentoo). Speaking of Gentoo...

  • Successfully install a working instance of Gentoo from minimal starting point possible (Linux install on expert mode)

  • Boot OS over network (use desktop as thin client)

  • Reconfigure my home network encapsulating groups of components (subnet / VLANs)

  • Set up network wide ad blocking [completed via PiHole and dedicated Pi running next to my routers, acting as DNS proxy and DHCP provider. Will need to change when AD comes in to the picture.]

  • Build a home lab:

    • Use 19" rack mounted cases for these machines:
      • Build and configure a NAS box with redundant drives
      • Build and configure a hypervisor box (I may just merge those last two for the time being...)
    • Build an upgraded 8U LackRack:
    • Create and configure home lab VMs:
      • Set up a domain controller and configure Active Directory
      • Set up local DNS
      • Beefy firewall
      • Security Onion instance
    • Evaluate cost for static IP - if unreasonable, evaluate alternatives (NoIP?). Required for:
      • Set up a private mail server
      • Buy a VOIP phone and set up a PBX

Programming Goals

  • Write an application in F#
  • Write a web application using Node.js as a back end
  • Write a distributed application using the Actor model
  • Write an application based on event sourcing
  • Write an application using the micro-services architecture

Certifications

I haven't earned a new certification since 2014. It's time to change that.

Personal Projects

These are projects that I'm currently working on that are in various states of completion. I may add tasks to this list as I work on personal projects throughout the year.

Angular Starter

  • Implement Swagger
  • Upload to GitHub

Cowbird

  • Implement resolution for missing Google Analytics script breaking pages
  • Upload to GitHub
  • Iteratively improve on this as necessary

PowerShell Scripts

  • Finish Win 10 Setup Script
  • Create tests with Pester

Raspberry Pi

  • Create Raspbian Setup Script

Parents' Farm Website

  • Finish blog functionality
  • Evaluate what needs to be implemented for online sales

Campaign Website

  • Finish front end styling
  • Implement e-mail sign up
  • Implement volunteer sign up form

OBD-II / Windows 10 IoT Core App

  • Finish writing scrapers for code translation data
  • Write scraper tests and test offline first
  • Build WPF UI for diagnostic code scans
  • Design real-time data display
  • Implement real-time data UI
  • Evaluate level of effort for code clearing
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment