So this post probably should have been written sometime back in December of 2018, but here we are in late April 2019 and I’m starting to think about it.
I was home sick the other day and had started this post after stumbling upon some “digital nomads” site, where the nomad had described some of his goals for the year. I thought that it would probably be a good idea to reflect a little and also plan a little. So I’ve written this for 2019, but it’s kind of just a loose roadmap for a year or so.
So I’m just going to list some goals:
- Write 20 blog posts
- Limit to 5 hours a week of TV
- Finish the following technical books:
- Pro SQL Server Internals
- SQL Server 2017 Query Performance Tuning
- TSQL Fundamentals
- Concurrent Programming On Windows
- Concurrency in .NET
- Programming Clojure
- Clojure Applied
- Get Programming With F#
- Structure and Interpretation of Computer Programs (SICP)
- Expert F#
- Elements of Programming Interviews in Python
- Pro .NET Memory Management
- Writing High Performance .NET Code
- Read the following non-technical books:
- Thinking Fast and Slow
- Basic Economics
- The Organization Man
- Boyd: The Fighter Pilot Who Changed the Art of War
- Tubes: A Journey to the Center of the Internet
- Misbehaving: The Making of Behavioral Economics
- Skin in the Game: Hidden Asymmetries in Daily Life
- The Black Swan
- The Long Tail: Why the Future of Business is Selling Less of More
- The 1-Page Marketing Plan
- This is Marketing
- Take discrete math course on Coursera
- Be able to jog 5 miles
- Get weight to 180 pounds
- Finish SICP exercises in Clojure/Scheme
- Write Monkey interpreter in F# and Clojure
Now, this is a pretty ambitious list, but based on the last year I think that it’s basically doable provided I cut back on the video intake. It’s so easy to just start watching Netflix or Prime and the next thing I know the day is over. I’ve started to wake up early in the morning which has helped with productivity, but of course, even then it’s easy to just put on some stupid show.
I’m already working through seven of the technical books right now (I tend to work on books in parallel) and one of the non-technical books, so I definitely think it’s possible to finish all of them within a year. I’m interested in all of these topics, and I’m excited about learning Clojure, F# and Python this year and becoming proficient in all of them. Finishing SICP with Clojure will be a nice way to get some practice with the language.
Python has been a great language to pick up, although I’m no where near expert level with it, it’s already been useful. I’ve used it to write a simple blog utility, and can see where it will be helpful to write simple programs and scripts to accomplish things quickly.
Clojure seems to be a very exciting language to learn, as does F#, and both of these will tie in nicely with my plans to learn more about PLT and compilers. I have some books that are more geared towards Scheme and SML with regards to writing interpreters and compilers, but I believe the concepts should be easily transferable to these modern takes on those languages.
The focus on SQL Server is driven partly by interest and partly by professional reasons. My current professional track is being driven towards .NET and SQL Server, and really getting good at SQL Server from a performance and query writing perspective should serve me well. There are miscellaneous technologies that frequently show up in job listings for .NET jobs, and SQL Server is one of the more common denominators that I’ve seen. Again, a lot of the knowledge here is fairly transferable to other RDBMSs as well, and I’ll probably play with Postgres as well.
The focus on performance related topics is mostly driven as a potential resume differentiator, but it’s also interesting to learn about and will lead to a deeper understanding of .NET and SQL performance. The focus on functional programming topics is applicable to modern C# language idioms and libraries, and it’s fairly accepted that these approaches have a positive impact on writing correct and readable code. I have run into professional situations where misunderstandings of LINQ and performance concerns have led to resistance in utilizing these techniques. However, learning them more in depth and developing more effective persuasive techniques to overcome resistance and help introduce functional concepts to decision makers will be useful.
Notably absent is any web framework or GUI development on the list. I’m pretty sure I’m going to use Clojure or F# to develop a blog commenting system with Postgres, and I’m planning on using some machine learning to develop an anti-spam system. I’m leaning towards using Clojure and ClojureScript with Reagent for the GUI to accomplish this, which uses React under the covers, so I’ll pick up something there even if Reagent isn’t a common technology in job listings (Yes the books are already in my shopping cart on Amazon for the ML…).
Anyway, despite this being an ambitious list, knowing myself there is a good chance I’ll get distracted and end up reading some of these books and some other ones. I am making more of an effort to read more non-technical books while also cutting back on reading the news as much as I used to. I’m in the middle of ‘Thinking Fast and Slow’ which is a really interesting book, and the other ones that I’ve thumbed throw I’m pretty excited to read.
I’m also close to my goal of getting down to 180 pounds, I managed to get up to about 225 about six months ago, and I’m down to about 190 now. The jogging I need to work on, a few years ago I was able to make it about four miles, but I haven’t been doing it at all lately so it’ll take some work to get up to five.
In addition to just reading, the comment system I mentioned, working through the interviewing prep book, finishing the SICP exercises and writing the monkey interpreter in F# and Clojure will provide some real things to work on and keep me busy.
It seems like it will take a long time to get through all of this, and as always there is way more stuff out there in the tech sphere than there is time to learn. I also would at some point be able to have my own consulting or software product business but this realistically a fair ways off, so in the mean time some of the learning has to be optimized towards traditional software development jobs, but the non-technical books will help here, as will the blogging.
After reading ‘The Power of Habit’ and also reading some of ‘Atomic Habits’ (which I need to finish), being more productive with regards to this stuff is definitely only made possible by building some better habits. Reading these books and general life experience has made it clear that optimizing to improve and take small positive actions that compound over time is important to learning and growing any number of things. In the same vein, it’s clear that limiting the seemingly small actions wich compound negatively is just as important. It’s cutting out some of the negative habits which will also allow for easier acquisition of the positive habits. I certainly have a lot of room for improvement, and ironically taking more time away from the computer allows me to focus better on what I want to do on the computer.
In fact one of the habits that I need to develop is getting the mail from my box downstairs which is long overdue. So on that note …