The Programs of the First Week of 2018
This Week’s Program: Jan 1 - Jan 5
I am entering into 2018 filled with just a mild sense of rage and/or
despair at this code. After a big breakthrough in getting my
cross-platform Racket image sink to actually run, this week I
discovered that it is very slow. I spent a good portion of this week
getting the GStreamer cairooverlay
to work. It kind
of works, but it’s finicky and crash-prone. This C/Racket interop is
tricky business, and I’d like to get back to just making a fun
framework for streaming.
As has become tradition, I’m going to take some time to reflect and write out what I would like to work on and explore in the year ahead.
In 2017 I Did
- Elm
- Ansible
- D3
- Racket
- C
At the beginning of 2017 I finished up my first exploration with the
Elm programming language
and hive-city
. Elm is a
fantastic language, and I think it has a huge amount of promise. I
likely won’t be returning to Elm anytime soon, though. There are a ton
of technologies in web development left to explore, and Elm has a
tough row to hoe to become as mainstream as it aspires to be. In 2017
I also published my first Medium post, a retrospective
on the months I spent building Hive City. Like just about everything
else I write, publishing to Medium is done through
a custom Jekyll plugin. In 2018, I’d like to
publish some more stuff to Medium, especially now
that
Tinyletter appears to be doomed.
Early in the year I wanted to do something with my FreeBSD server
hanging out on DigitalOcean, and thought it would be a good
opportunity to mess with Ansible. Ansible was straightforward and
pretty easy to wrap my head around. I
created mechwarper
to house
my studies in server administration. I’ll be revisiting this soon, I
think. I’d like to get Plex Media Server
running on my server. Maybe even get up to speed
with FreeBSD Jails
in the process.
2017 was the first year I have worked with D3. I whipped up a quick little project to visualize my Tinyletter Metrics. D3 is very good. Bl.ocks.org is great. Without a doubt I will be revisiting D3 again; it’s just a matter of what I’ll be visualizing.
2017 was dominated by Racket and one
project: overscan
. It looks
like this will carry over into a good chunk of 2018 as well. Racket is
a good language, with a community of academic enthusiasts. The thing
that keeps me sticking with this project is the domain. Video is
cool and hard. After coming up with
a working proof-of-concept, I dived
really deep
into GStreamer. Originally I
thought I was creating a neat toolkit for video streaming. Overscan
has grown to become a DSL for live-coding with GStreamer, and that’s
fine by me. This project has got me messing around with a bunch of
different C libraries: GLib, GStreamer, and
now Cairo. Every day I work on Overscan I
learn something new about how computers work at a basic level, and
that’s been so rewarding.
But this project has also been very frustrating. As I said above, I’m a bit over this C/Racket stuff, and I need to take a step back and just focus on the streaming bits that I really care about. I’m going to try to get a first release cut of Overscan before the Spring.
In 2017, my list of things to explore included Racket and D3, but it also included some other things. I’m committed to starting at least one new project in a new programming language in 2018.
In 2018 I Will
- Elixir. Once I’m done with Overscan, I have an idea for a web app and I’m going to build it with Elixir.
- JavaScript. I’m going to write a web application which means I’m going to write a whole lot of JavaScript. More JavaScript than I would like. The state of JS is always changing, and every time I pick it up it feels like there’s a new toolset to understand and (maybe) appreciate.
- Go. Long time readers of this Tinyletter might be surprised to find Golang on this list. I’ve knocked Go quite a bit. It’s a language that I find useful but can’t get excited about. I think the time has finally come to give it a whirl. I have an idea in mind that might fit the language pretty well.
In 2018 I Might
- Unity. Game development still seems like a fun thing to try. Last year I said I would do it, but Overscan took over.
- Swift. I messed around a bit with Swift in 2017 during Harry’s Hackday. It was neat! iOS SDK’s are quite good!
In 2018 I Won’t
- Rust. In 2016 Rust was on the “I Will” list. In 2017 Rust was on the “I Might”. Sadly, I won’t. Rust is still very cool to me, especially in light of the pain I’ve experienced working in C. Alas, it’s not likely to happen.
- Haskell. Will have to wait another year.
- F♯, Prolog, Pharo, PureScript, ClojureScript, Python, Kotlin, etc.
What are the projects you plan on embarking on in 2018? What about the ones you won’t be committing to?
Let’s learn together this year. Stay warm,
🤗 Mark