Little (Rust) learning victories
I’m attempting to learn Rust. And really make it stick this time around. A lot of the “making it stick” part is making lists and having the discipline to stick with crossing items off them!
A smaller part is figuring out how I can notch very small victories no matter how much progress I make. This is crucial because I’ve got about a half an hour each morning to work on this!
My current favorite sort of small victory is to write up what I’ve learned if it doesn’t seem like I’m going to get far enough to commit new code behavior. This happens a fair bit when you’re working with a type checker after years of using a very implicit language.
So far I’ve written up what I’ve learned about the web frameworks Nickel and Actix so far.
The motivation for these little chunks of progress are the learning journals Brent Simmons has published over the years.
Pardon the dust, learning in progress
I’m trying a few things while I learn how ray-tracers work:
- learning Rust and graphics programming
- collecting my thoughts and discoveries in the repo, aka blogging
- doing it all in public, rather than a private repo
- tackling very math-y programming and domain problems, despite my lack of acumen in the area
Brought to you by: more folks should do blogging-like things, even if it’s not entirely on their own platform or using blog-software and more veteran programmers should be naive and not know everything in public.
It’s true that Twitter took some air out of blogging. I suspect it’s also true that they formed a positive feedback loop when they overlapped. Longer-form writing informed tweets, tweets responded to or inspired longer-form writing. We can have our tweets and eat blogs too!
Listening to a DJ live set and it opens with the whitest, most English version of a 90’s hip-hop sketch I’ve ever heard. This person learned the exactly wrong lesson of possibly every album after 3 Feet High and Rising.
Gil! Scott! Heron! man crush on LCD Soundsystem intensifies itunes.apple.com/us/album/…
Why blogs are still lovely, part fourteen: shawnblanc.net/2019/01/s…
Corollaries to “new languages won’t achieve career-sustaining critical mass": 1) frameworks become the important point of leverage 2) framework/language harmony or outright integration ala Elm or Erlang become even more important.
Long bet: Java, PHP, JavaScript, Python, Ruby, and C# will be the last languages that achieve a critical mass such that they can sustain developers through their whole career. From here on out, it’s a melting pot of framework and technology choices.
Increasingly convinced houses only exist in two states: brand new and invisibly needing repair, lived in and visibly needing multiple repairs. This adage may apply to societies too.
We don't have to agree about code style
Will we ever come to agree on writing code?
Ruby folks like short methods. One-liners even; maybe for their concision, maybe to show off their language and code golfing skill.
JavaScript folk like often like a bit more heft in their functions. No matter how good a function name is, logic is easier to understand if it's all in one place.
Despite the mechanical similarities of this sample size of two languages, programming communities have chosen very different styles. This has been happening for decades, since the beginning. It will probably always happen.
As sure as Keith Richards sounds different than George Harrison or Pete Townsend, developers will disagree on the structure and little details of code. Like music, like code.
Luckily, now we have pretty printers and code formatters like prettier, gofmt, rustfmt, or RuboCop. This is a welcome advance from even ten years ago, when some code reviews could bog down in "there's an extra whitespace here" or "this function seems too short, can we merge it with its callers?"
We don't have to agree, we just have to act like professionals when it comes to the little things.
It's 2019 and I'm signing my jokes like its 2019
A stranger walks into an elevator. I say “how about this weather?!” They smirk, or let out a small laugh. It’s easy to think, “I am funny guy!” But: that’s not a joke, it’s not funny. It’s just small talk and politeness in action. I am not, actually, the funny guy in this scenario.
When I was fourteen, I was really into standup comedy. I managed to find a club above a bowling alley that let me do a 2 minute set. The only constraint was that I couldn’t work blue. So I wrote two minutes of jokes, performed it a couple times, got a few laughs, and that was that. I figured out that I could get in front of people and tell some jokes, and I didn’t need to rely on slapstick cursing to do it.
Also, I was fourteen and surrounded by teenagers. Teenagers make a lot of jokes at each other’s expense, because they’re cruel, don’t know better, and aren’t practiced humorists. I had experienced my share of being the subject of those jokes and decided I didn’t want to be that kind of funny. Eventually, I came to the formulation that the best jokes aren’t at someone else’s expense.
As random things in one’s youth go, these two were pretty formative. I decided that if you can’t get a laugh without cursing or making a joke at someone’s expense by punching down, you weren’t actually funny.
Turns out these principles are pretty handy for the world we live in (and have always lived in, but some the future is not evenly distributed, etc.)
You can work blue, you can demean other people, you can say what’s really on your mind, and you can punch down. You may get laughs, but they’re because people are sympathetic to your anger or cruelty. Or, maybe you’ve been bombing so long they’re just relieved you said something almost decent and the laugh to diffuse the situation. But, that’s not funny.
When a joke misses, when a standup flops, it doesn’t mean we’ve become a humorless or prduce society. None of this means the end of humor or satire. It means we’re going to separate the really excellent humorists from those who are merely humor-adjacent.
Who has two thumbs and is pretty excited for Enumerable#to_h and the proc composition/chaining stuff in Ruby 2.6! 👍👍
Which came first: the theory of productivity or the Singularly Great Work?
Point: GTD and XP are both based on what worked Really Well for One Singularly Productrive person. Counterpoint: we all need our own theory of what might work for us personally before we get started.
In honor of Ms. Jackson’s imminent induction into the Rock Hall of Fame: is Rhythm Nation 1814 a concept album? 🤔 ✋🖐️✋
Fortnite Creative looks like a combination of private servers and exposing most of the map building tools through a clever game item. Seeing as how nothing in Fortnite should work, on paper, I’m excited to see what folks do with it!
In lieu of coffee, I took a five minute walk yesterday when I hit the mid-afternoon groginess. This was at least as effective, if not more than a coffee. 100% success rate, would recommend! 😉
I like how the module systems in ES6 and Clojure solve the “where the heck did this function come from?" problem. I’m optimistic that adding some kind of module system to Ruby can make working with Rails and large apps even more pleasant!
The New Yorker’s “Touchstones” essays on classic albums are quite good. The inline samples of Missy Elliott’s musical references and supercuts of other artists borrowing Janet Jackson’s chair dance are a great evolution of online music writing. (There’s also one on Nirvana 🤷♂️)
Wherein a mind is kept clear(er)
A couple things making me feel more productive lately:
Jot down a theme for the day: at the beginning or end of the day, I make up some kind of near-platitude to help me focus and get stuff done. Recently: “Hack like a writer”, “Finish like a shipper”, “Focus on code”. They’re a bit hustle-y, nearly cringe-y, and function only to get me back on track should I field a bunch of curveballs.
“Sync" written notes to a daily page: usually after lunch and before I wrap up work for the day, I transcribe any notes/sketches/todos/etc. I wrote down, on pen and paper, to a note (in Bear). This seems to help me keep a clear head and not get overwhelmed on hectic days.
A couple things that feel right but haven’t “stuck” as habits yet:
Set out clothes for tomorrow before I go to bed: check the weather, set out what I’ll wear tomorrow. I often forget, but when I don’t I thank myself the next day.
One big thing, a dozen or so little things: I don’t think I’ll go so far as eschewing a productivity/todo app, but using One Thing as a guideline when organizing my tasks often helps me reduce implausible lists to tractable plans.