An ultimate goal is a goal that is not necessarily achievable; it is rather a compass north point: where do we want to be, eventually? Writing down ultimate goals has an almost magical effect on focusing our energies (and I am NOT referring to the Law of Attraction, which frankly gives me hives). Here are some of my career-related ultimate goals for 2017.

  1. Algorithms: Complete 25 Project Euler puzzles (without looking at other peoples' answers). Done. We completed 40 of them and learned a ton about performance and about thinking before starting to code.

  2. Object Oriented Programming: Create a set cue cards that has two cards for each of the Gang of Four design patterns. One card has the pattern's definition, the other card has the pattern's structure. Memorize this set of cards. Done. We gave ourselves a written test and exceeded 95% verbatim recall. We also gave a presentation on Design Patterns to .NET BC.

  3. Tooling: Learn how to navigate a project structure in Vim. That is, learn how to find/replace across files, how to open a file by a fuzzy search of its name, and basically how to manage files in Vim similarly to how we manage files in Visual Studio Code. Done. Some parts of this were more trouble to me than I thought they would be worth. My skills with Vim are stronger now than they were before, but I remain attached to something like VS Code.

  4. Open-Source: Bring aurelia-open-id-connect to version 1.0.0 (i.e. to a production ready release), publish it to NPM, propose an article about it to the Aurelia team, and update the OpenIddict Implicit Flow sample to this version. Done.

  5. Forum Answers: Answer 100 StackOverflow questions. That's about two per week. Historically, I answered 65 in 2014, 192 in 2015, 181 in 2016. Done. As of 08 August 2017, the count is 114.

  6. Income: Invoice (and receive payment) for 1,000 billable hours at my normal rate. Done.

Obstacles

Some of the above goals need to have more specific finish lines. For instance, what does 1.0.0 release of aurelia-open-id-connect mean, exactly? I have found that goals without specific finish lines are much less motivating. How will we will know success?

Distractions

Other career-related shiny things, which tend to distract me (and which may become ultimate goals for 2018).

  1. Concurrency... explore it further.*
  2. Language development... same.
  3. Creating more videos with Anthony Chu.
  4. Visual Studio Code.
  5. .NET Core csproj system.
  6. Deep learning.
  7. F# and functional programming.
  8. Scala.
  9. Use Linux regularly as an alternative to Windows.
  10. Create an app with Aurelia that is a personal terminology dictionary.
  11. OpenID Connect... explore it further.
  12. Web Application Security via www.sans.org
  13. Upgrade my blog to Ghost 0.11.4; improve my blog workflow; style my blog.
  14. Write a book.
  15. Take the Khan Academy course of Algorithms. Done.
  16. Look into other design patterns such as the State Machine.
  17. Study chess.
  18. Do the 80,000 hours career decision course.
  19. Retake the GRE after studying for x hours for it.
  20. Apply to graduate school at UVIC and UBC.
  21. Study chess tactics.
  22. Read up on the debacle in USA politics.
  23. Use LetsEncrypt for all the websites that BigFont hosts.
  24. Spend ~40 hours on the Azure LetsEncrypt plugin.
  25. Contribute one commit to github.com/HTBox/allReady
  26. Create a Bitcoin wallet or wallet for another cryptocurrency.
  27. Write a blog post on Model-View-ViewModel. Where does the ViewModel belong?