And so, with barely a chance to anticipate and prepare for it, the new year is upon us. Entering a new year has always been a reflective process for me; Usually I'm filled with equal parts determination and excitement punctuated with a hint of personal, not self-loathing, maybe self-disappointment is a better word. The new year comes and I typically find myself looking at my year in review. Like most, my subconscious takes mental inventory of all the good, bad, and strange that may have happened throughout the year. This year (like most years) was mostly good; I have my health, I have my mind and determination, and most importantly, I have my family. No major losses have been suffered, I haven't lost anything irreplaceable. I'm mostly content. So then you may be asking,
Bruh, your year sounds damned good. Why the disappointment?
Or not, you don't have to be asking that at all. You may not even care, but I'll tell you anyway! I think this self-disappointment stems from my innate desire for excellence, at least, I'm preeety sure that's where it comes from. This innate need for excellence in what I do often drives me. At the same time however, I like to think of myself as practical. I try not to get in too deep or get in over my head. Its the little voice inside my head that nags at me whenever I'm working on a project for myself, work, or school that says:
Hey so, you've already fulfilled the requirements and then some. You don't need to kill yourself over this project. Pinky promise.
This practicality acts as a limiter on my idealistic sense of excellence. It also keeps me out of trouble. I have a pretty bad habit of engaging in "wingin' it" behavior. For the most part I am able to wing things pretty well. I am either a really good subconscious judge of my limits and what I can wing, or I have an inordinate amount of good luck. Either way, I don't want those to fail me to the point where I'm left high and dry by my bad habit. Being practical has helped mitigate this somewhat.
So, when you combine borderline fairy tale idealism with solid-ground practicality, you get a part of my essence. And things tend to work out for me the majority of the time. Except, this combination has the unintended byproduct of trace self-disappointment residue. It doesn't really become something noticeable until after 365/366 days, when all this self-disappointment coalesces into a small mass of self-frustration and self-disappointment.
This used to bother me on an existential level.
This mass of supposed negativity would nag and eat away at me; it would get bigger and more prominent with the more attention that I would give it. It got to the point that it would become this swirling spiral of self-demotivation, self-depreciation, and self-loathing. I couldn't focus on any of my perceived failures or misgivings at the end of the year. I would become touchy, negative, and bitter for about a month into the year. A whole month wasted on negativity is a terrible thing (not to mention that my birthday is in January; that added insult to injury). I don't remember what got me out of this suck-cycle, but it was probably my wife. She calls me out on my childish behavior all the time. I may be upset with her when she mentions it, but more often that not she is spot on with her assessments of me. The root of my problem was exactly that which pushed me forward. This desire for personal excellence also acted as a catalyst for beating myself up when I didn't achieve what I had set out to do. Failure was unacceptable. Except its not, not really.
Failure and this coalescence don't bother me anymore and I'm better for it.
This isn't to say that this small mass of self-disappointment doesn't get my attention, it totally does. But it doesn't envelope my life and become something more than what it is. I have come to relish the opportunity to poke and prod at this metaphorical ball of energy and emotion. Its a gauge and meter on my performance, but more than that, it allows me to reflect upon both my accomplishments and failures in a positive light. It reminds me that I have completed much, but there is ever more that I can do. This fuels a hunger, and I love it. The end of the year is not just rebirth for me. Rebirth implies that I am being made the same as I was. This is a chance for self-examination tempered by disappointment that becomes an opportunity for me to extend myself and my capabilities. Every year acts as an eternal ladder of evolution and self-improvement.
And man, self-improvement (in regards to New Year's resolutions) is hard. I suck at coming up with resolutions. So this year, I cheated. I was lucky and stumbled upon a fantastic article by University of Utah Computer Science Professor, Matt Might. It outlines 12 resolutions every programmer should embrace and strive for. Without further ado, here are my resolutions for 2016:
This might not be easy. I live and subsist in the digital realm. Which is why this resolution is so perfect for someone like me. I've decided to go native in 2 ways:
I used to do the latter a lot in high school, so I figure its time to get back on the horse. Cooking is something I've always kinda done. I'm competent and I can feed myself, but I have a friend who is pretty great at it and makes meals that are these high-caliber restaurant quality creations that both fill me with culinary joy and envy.
This one is also hard and not just for me. Embracing the uncomfortable is hard for everyone. Personally, I dig writing; be it prose, poetry, or statistical analysis. I like putting ink to paper. I'm not too much of a fan of other people reading it. Don't get me wrong, I love praise, I just have a hard time with scrutiny in this aspect. Writing reveals my thoughts, my thinking process, how I feel -- In a sense, its sorta like baring my soul for everyone to see.
So, in order to get over this reservation I tend to have about writing, I've decided to do this! Write a blog, showcase my thoughts for everyone to see. Truly, I'm embracing the uncomfortable right now.
I'm pretty okay with imperative languages, object-oriented languages, dynamically typed languages, web languages, etc. I've been exposed to all of these. I don't particularly consider myself in expert in any; again, I'll re-iterate that I think there is a proper tool for every job. Something that I've never really played with before is a functional (or mostly functional) programming language such as Scala, OCaml, Erlang, etc. Functional programming seems to be the wave of the future, so I figure I better get on that. And even if it isn't I'm sure that learning it will make me a better developer overall.
As such, I'm gonna try to learn Haskell. It definitely isn't something that I'm used to, but it should be fun.
Robots. And auto-deployment. I've been fascinated with the idea of automatons ever since I was a kid; now that I'm an adult (in name only), I want to realize this fascination, at least partially. As such, I'm thinking about getting a Raspberry Pi or Arduino and hackin' something up.
Automation is great for lazy devs and I fit the bill. I'm gonna create an auto-deployment process for this site (statically generated in case you were wondering) and free up much of the time I spend testing and pushing code up.
I've got this covered by attending college. I'm taking a calculus class, a CS stats class, a database theory class (heavy in relational calculus), and an advanced C++ class (heavy on lambda functions). I'm pretty sure I'm either gonna die or transcend and become math.
This is something I've always felt weak in. I'm not a crypto-geek by any means (although I think its super cool and wanna learn more), and I try my best to follow best practices. However, often 'best practices' can end up contradicting each other, opening up different (and more dangerous) vectors of attack, or are incredibly obscure. So this year I want to learn more about security. I'll also start implementing some security stuff, but in baby steps of course; getting an SSL cert from Let's Encrypt or Cloudflare, understanding RSA to the point that I can implement it, encrypting my compy's disk, things like that.
Sadly this is another thing I'm bad at. For this website I'm thinking about backing it up in a variety of ways:
Luckily I feel that school will help me meet this resolution as well. I'm taking a class on software design patterns and principles along with a database theory course. I will also be doing some self-study on my own on functional programming (maybe).
I don't have a single artistic bone in my body. Last year I don't think I did anything remotely artistic or related to the humanities.
This is bad.
This year I intend to try to change that. I'm (slowly) taking up sketching, I'm going to try to read literature outside of technical manuals, and I may pick up guitar for funsies again.
I've always wanted to learn LaTex. People make incredibly beautiful documents with it and I believe that presentation is just as important as content.
I also feel the need to actually learn and maybe master git. I'm totally guilty of this:
Courtesy of XKCD
Maybe the hardest of all. Starting a project (like a blog, or a resolutions list) is easy. Actually sticking to it and finishing is incredibly difficult.
Courtesy of CommitStrip
This year has a lot of things I'm gonna try, which also means there are probably going to be a lot of things I'm gonna fail at. I'm okay with as long as I learn from it.