Now that 2016 has arrived, what sorts of things are you planning to work on for the rest of the year? Feel free to ask for help, advice or feedback!
I’m at a bit of a crossroads in my professional life; I’ve been programming professionally for almost 25 years, and recently have come to the realization that I probably don’t have that many more jobs left in my career. In addition, I’m 44, which is right on the cusp of being “too old” in the eyes of many potential employer, although anybody who’d ding me for my age is someone I don’t want to be working for regardless. But it’s sobering, as I still think of myself as a beginner. I need to find a job, but I have an unusual freedom in doing so, as our family is financially stable even without my income.
So 2016 is a year for me to reflect on what I want to be doing next. I’ve been a programmer, and a manager of programmers, and I’m pretty good at both. I find that I’m more personally invested in problem domains than particular technologies, although of course that line isn’t particularly easy to draw, much of the time.
Otherwise, I’m writing an MPEG-4 Part 14 container manipulation library in OCaml; it’s my standard “learn a new language” project, and I like OCaml well enough so far. I may extend it into an ISO to MPEG-2 transport stream multiplexer/segmenter, but that’s getting ahead of myself. I miss QuickTime when I’m not writing OS X software – for all its admitted warts, it’s still remarkably prescient and clever.
This year, I intend to make a good fist of learning Haskell and probably Prolog; to start a public project (perhaps a media manipulation library?); to blog weekly. I’d like to get better at writing; like anything else, writing well, and thinking clearly, improve with practice. I want to get dry-suit certified; not that I want to spend a lot of time in Lakes Ontario or Erie, but I don’t get to Monterey or Thailand often enough to scratch the diving itch. I’d also like to devote some serious time and energy into becoming less alienated from my body. I’m a creature of the mind, and I’ve spent way too much time in the last decade or so trapped in my own head.
Anyway. That’s a start for a jfb 2016.
Job change: I joined a company last January for a specific role that no longer exists, not by my mistake, but because investor-level changes also brought a change in technical direction that is contrary to my objective (which was to build an elite Haskell team– as opposed to the open-plan body shops that 98+ percent of VC-funded “startups” are– in a place not on the coasts). I’m still employed there, and I have nothing bad to say about the place, but I’d like to get back to a technical direction that I believe in.
Chicago Haskell: I was planning to teach a weekend Beginning Haskell seminar (similar to my course last summer) in December. That got pushed by changing priorities (see above) so I’ll probably be doing it in March or April.
Health: I’d like to get back into triathlon shape so I can run a Half Iron Man before the open water gets too cold (in the North, that’s September). Hoping to get my panic attack count to zero; seem to be down to 1-2 per month. Really hoping that my next job isn’t in yet another open-plan office, because I never did view the 9-hour economy-class flight to nowhere to be a very productive experience, and the vertigo I get from being constantly visible from behind was unhealthy when I was young, which I’m increasingly not. Also, I’d rather be paid to work than be paid to be furniture, and we all know that open-plan offices are really about sending an image (to investors, and clueless young hires who are nostalgic for college and attracted to the halfway-house picture) because they’re not productive.
Savings: my wife and I moved to a cheaper apartment and are cutting restaurant meals because it’s time to start reversing the fuckage of my finances by multiple failed startups and the general stupid, pointless job volatility (“We decided to replace you with 4 incompetent juniors off the street. It’s more expensive and it won’t work, but they’re easier to control and less challenging to manage because they don’t know anything. In 2 years when everything’s fucked up and we beg you to consult for us, please don’t price-gouge us!”) of tech. We’re fine, and I’m not going to complain when I still make several times what average people do, but I’m way behind where I should be at my age (32).
Diving: Planning a trip to Honduras, and one to Florida to get my Advanced Open Water certification. I’m not really interested in cave or wreck diving, but I’d like to be able to go deeper.
Conferences: Attending Compose in NYC for sure. Lambda Jam and Strange Loop likely. Would like to present, working on a talk related to a project (see below) entitled “What I learned by writing very bad Haskell code”. It’s actually about the UX questions that Haskell and its emerging competitors (Purescript with monad transformer stacks replaced somewhat by extensible effects, Elm with it’s less featured type system) raise, what it means to write “good” code in a language that most people don’t understand, and various things I’ve learned by teaching functional programming and static typing in resource-constrained corporate environments.
Projects: On somewhat of an exploratory basis, I’ve been working through what it would take to make it easy for a board or card game designer to write the rules for a game and have the server/client stuff (and the state management, logging, etc.) on the back end set up “auto-magically”. Ideally, I’d like to make it easy for designers not only to deploy games but also to test rules changes easily. This seems like it might be a land war in Asia, and perhaps it won’t work, but I want to see how far I get. (I might have to give up on aggressive type discipline and move toward either a more dynamic-ish approach or do it in a dynamic language. We’ll see.) This is taking a long time and it’s in an embarrassing state right now, but here is what exists now. The real objective is to find a way to make games compose, since most games are built out of many subgames. Then, as a test case, I’ll use this to deploy Ambition because the game’s 12 years old and it’s just embarrassing that I don’t have a web presence for it. Maybe I’ll make an iOS and Android app out of it, although I might have to contract out the front-end stuff because I’ve only done a few front-end projects and, if I’m putting apps out there, I want them to be more polished than I can realistically make it (because polish is everything in mobile games). I’m nervous about that, though, because I refuse to monetize Ambition in the traditional way (by showing ads). I’d rather the game languish in obscurity as something occasionally found and played by college students than become a vehicle for selling Viagra on cell phones.
Nice-to-haves: Rust, more assembler code, more security. I’d like to learn more about Spark (and, ugh, Hadoop) because in the long run I’d like to replace it or see it replaced with an off-JVM Haskell offering that does the same stuff. That’s probably far too ambitious for one person in one year, though. I’d need to find a job where I could build a team to do just that.
Completing a book on applying some functional programming concepts in Ruby, then starting the next book. Writing some small projects in Haskell - studying Haskell a lot, actually, it’s a great gateway into CS concepts.
Changing gears on video games from mostly twitch action games to turn-based strategy (on deck: Endless Legend, Endless Space, Invisible Inc., Sins of a Solar Empire; suggestions very welcome). Powerlifting. Enjoying married life.
Not turn based, but I enjoy the scope of the Paradox historical grand strategy games. They offer historical settings (as in countries start with that level of power as they did IRL) and gameplay tweaked to make sense in the era. (for example, Crusader Kings lets you play as a member of a dynasty in place of a country, and Victoria has population modelling - your population has needs, ideologies, cultures, jobs, etc, and it’s simulated.) Victoria 2 is very much a favourite game of mine.
Problems I have with them are flawed and bloated mechanics and it may be hard to get into them. The newer ones have improved usability though.
I really enjoyed the novelty of Cruasder Kings 2, I loved that the gameplay was mostly in arranging succession and financing the empire. Nice to see new game mechanics at work. I’ll have to check Victoria, it sounds similarly fun. I think you’re spot on about Paradox’s flaws, too. I would’ve bounced off CK2 if not for rave reviews from a trusted friend and a set of fan tutorial videos that ran several hours.
Crusader Kings is what got me into programming, the game was very easy to mod and I quickly found myself creating a few mods, one of them actually got fairly popular and was forked when I no longer had the time to maintain it. (The ancient religions mod)
The Endless series are great games, endless space can get a little boring, but it has its good sides, and theyre working on the second one! Myself I’m getting way too excited about Stellaris by paradox interactive.
I can see this upcoming year being a long slog working on my own programming language, called kropaya. I had somehow naively thought it would be finished in 2015, but it isn’t even close to done enough for what I need.
Other than that, I am planning to work on getting contracts as a freelance developer, finish my tarot deck, and write a bunch of groupware type software (of all things).
I want to finally get Dart properly supported on OpenBSD (recently helped a guy successfully build it on FreeBSD) I’m close to having a proper platform added and up-streamed.
I also plan to hack on OpenBSD in various ways (maintaining my ports, trying to get my wifi dongle more reliable and some other stuff).
In the professional space more work at (killing off remaining bits of ruby, doing more C, Go & Dart) koparo.com and moving to the UK.
Mostly Hypothesis as per usual. :-)
My major focuses for 2016 are:
Coreboot on T430s, GuixSD and Propellor. Trying to make this year, a Haskell year.
In 2015 I started writing a book on UI which I think is actually 5 different books in disguise. A sign that I bit off too much content I think (the topics covered varied from design to CSS/PostCSS, React, state management, Universal applications, etc). So I’m going to split up those books into a series and make each one more scoped while dropping one or two of the topics entirely. Looking at it like that, it seems like a multi-year project so I need to chunk out some of the content I’ve already written as a starting point. I kind of like the idea of having such a project.
I also want to put out another revision of Snap for Beginners. I started a revision that was based on the 1.0 version of the framework but there have been a few intermediary releases since then and unfortunately I can’t say that I’ve been helping push a 1.0 forward much in 2015 :/
My blog has been stagnating because I tried to move away from WordPress and got stuck in a giant yak shave. That looks just about done so I should be back to writing posts in Jan some time. The result of the yak shave is really interesting and is basically a Universal React application that uses Relay/GraphQL for data fetching && renders to a static site. More on that later.
Other than that I want to speak more this year. I spoke at some meetups and such last year, but want to get into a conference slot or two in 2016.
2016 is the last year of college so i have started planing for the future.
Top priorities are:
Torn about pursuing my side project in 2016. I took a few months off from client work to focus on it, and accomplished quite a bit (nodejs+docker app with almost 60 proof-of-concept plug-ins; a total of something like 26k lines of coffeescript). It would be a long road to make it productized, user-friendly, documented, reliable, etc. to the point where anyone would use it, nonetheless contribute to it. I’m confident showing it to the world as it is would yield zero users, zero contributors, and countless criticisms of my choice of language, runtime, container technology, plug-in api, coding style, or goals. It was a neat thought experiment and prototype, but I’m ill-equipped to make it much more than that.
Instead I’m settling back into client work, which is challenging, fun, and lucrative (enough). Starting this year in Santiago, Chile, and just passed the 8 year mark of traveling while working. I haven’t spent more than 3 consecutive weeks in any one city since 2007 and might as well keep that streak going this year.
By the end of this year I will have finished all my math and science prereqs for the computer engineering degree, so thats mostly what I’ll be working on. I had originally planned on studying econ, so never did any science classes).
I’m also hoping to get a job or internship in tech this summer, so I can put my current knowledge to work. (If you work in canada and know of opportunities, let me know).
Lastly I’ll keep chugging at my home learning, trying to get better at lower level programming with c and rust and higher level programming with lisp and haskell. Cant wait to see which will turn out to be me favorite. As Im learning these languages, Im also planning on using them for exercices in books on operating systems and artificial intelligence.
Happy new year everyone!
Moving sometime around March to be closer to my wife’s family and near a better education situation for our children. Along with that, work to create more sustainable ways of caring for our children and ensuring that we each get a break every once in a while.
Edit and self-publish a YA fantasy novel I wrote a few years ago. Finish the steampunk novel I’m currently working on. Finish Prose for Programmers.
At work, begin the implementation of the new UI architecture that I planned. (Decomposing a giant monolith into lots of small microapps based on Typescript and Angular.)
Moving sometime around March to be closer to my wife’s family and near a better education situation for our children.
Where from and to, if you don’t mind me asking? If it’s too personal, don’t answer. I’m just fascinated by what I hope is a Silicon Valley exodus. The talent is definitely leaving, although it’s not clear whether there is a condensation point (Chicago? Denver? Boston?) or even whether that’s desirable. I’d like to see the North rise again, though; let the Prop 13 NIMBYs have (and kill, if they so wish) the Bay Area.
Currently working remotely from the New Orleans area (near my family) and likely moving to New Hampshire (near hers.) Never worked in the Bay Area and only ever interviewed for one company there, so I don’t know much about the situation their beyond what I read here and on HN.
My general tech intentions/wishes, rather than specific plans, for the year are: get better at erlang & lua; work towards feeling at properly home with a *BSD; develop the MIDI tools I’ve been hacking on to where I can use them to make music that I’d actually let anyone listen to :-)
Job: Open-sourcing an internal office plan layout tool. Finishing another milestone of an internal self-service deployment system.
Job Hunt: “Outlook cloudy. Ask again later.” - Won’t know what’s up here until Jan/Feb timeframe. Some really interesting possibilities (esp. one at Apple), but unknown what I’ll be offered yet. Had been thinking about going the consultant route, but loneliness is a big concern for me there, so I’ll go on another deployment in the Software Industrial Complex.
Training: Going to do some in-person training on the side, focusing on the Docker ecosystem, Java, and Go. Working on an online course series in programming because very, very few of them seem to understand how to teach adults. Honestly, if I see one more course that starts out with detailed dives into syntax and control structures before seeing anything meaningful, I’m going to scream. I very much believe there’s a need for more reading, example-focused way of teaching how to program. The market will let me know how right (or wrong) I am…
Learning: Continue to avoid learning more about Big Data (Spark, et al), but may start playing with it if I end up in a role where Scala is prevalent (and I’ll have some actual interesting data to work with). Learn Go more deeply. Learn the ins and outs of Linux more methodically, than my current know-enough-to-be-dangerous.
A few random programming languages, maybe some games for my kids. Want to write some kids books, too. Want to play more with openbsd, surf more, bike more, write more, draw more, photograph more. Eat less sugar, more greens. Maybe try Soylent.
Finally, and perhaps most importantly, figure out where our family should settle.
I want to find a way to get back into Octave development. My resolution for this year is to find a way to give the project some measure of financial stability. I hope that by publicly declaring this, others will hold me up to this goal.
I’m now almost exactly halfway through my apprenticeship at Position Development and I’m staying on afterward because I love the folks I work with (all 3 of them!) and our clients and the work we’re doing.
Outside of work, I’m a member of The Learning Collective, a group of activists learning to code together. I don’t really have my own big world-changing project, unlike some of the other members, so I want to focus on supporting my fellow learners. We’re all at different levels of programming experience and using different technologies, so that’s a bit of conundrum? But it’s still pretty rewarding. :D
Also I want to finish at least a couple of my personal projects. Even if I finished one of them I would be so happy (especially my KiSS doll viewer). But there are so many new shinies all the time… Also I want to contribute to some of my favorite OSS projects (AO3 is one of the reasons I want to get better at Rails). I’d like do more public speaking and writing this year as well.
I also want to get back in roller derby shape, even if I’m not going to play. I miss skating so much!
On the programming hobby side, learning about type systems and compilers, by building one, maybe. More writing about stuff I find interesting.