1. Really Learn to Touch Type
No, I don't stare at the keyboard whilst typing, but yes, I do glance at it occasionally, most notably for passwords.
Ever since I switched to Vim, I've been feeling more and more like my control over the keyboard could use some improving. This will be the year I take that seriously.
2. Write Every Week
I need to write more.
In addition to posting more on this blog, I want to write a newsletter. I run into so many interesting links almost very day, from a number of sources, and I always end up sharing them via Twitter and Slack with a select few, and with very little permanence. I'd like to experiment with a consistently delivered newsletter, perhaps every week/two weeks/month, with links and short blurbs about why I'm including them. I even wrote a few drafts last Feburary, when I first thought of this, but never sent them.
Between the blog and the newsletter I'll have plenty of available outlets.
3. Learn a New Programming Paradigm
Last year I learned Vimscript to make myself a Vim plugin. It wasn't what I was thinking of when I set my goal of learning a new language, nor was I thinking of said goal when I did it, but the happy accident counts anyway.
This year I'd like to learn a new paradigm. The likely candidate is functional programming, mostly because I find it interesting on its own, but also because I find Elixir and Elm very appealing. In fact, I expect to learn it through Elm, as I'd like to add an enjoyable frontend tool to my skillset.
4. Up My Python Game
I <3 me some Python.
I write it nearly every day, as it's my primary language both at work and for personal projects. I have an (at times very high) interest in a number of other languages, like Elixir, Elm, and Rust, but I still enjoy Python the most, and want to be better at it, even if my programming career takes me elsewhere.
I'm not talking about learning some esotheric syntax or just getting more practice with list comprehensions—I'm talking about understanding Python on a much deeper level. I want to delve into language design choices and how its object model works and why, in search of the Pythonic. I want to attain something that could ostensibly be seen as a certain level of Python expertise.
5. Release One Project Each Month
Inspired largely by 1PPM, this is an attempt to battle the scope creep and distractions that kill so many things I start.
- Commit to working on one project for each month, to the point of not working on anything else until it's released.
- Releasing is required, every month. No exceptions.
- Finishing old projects is encouraged, but starting new ones is also on the table.
- Months/projects don't have to be planned out ahead of time, and changes to the schedule are allowed.
- Continued work on released projects is allowed, but not at the expense of releasing something else. Exceptions can be made only if scale is achieved.
- Projects beneficial solely to me are discouraged, but finishing something only to the point of putting it in personal production for testing purposes is acceptable.
- Open source preferred, but not required.