Go generics, are you sure?
I have had the rare pleasure of working both as professional engineer and 3d artist. One of the most interesting parts of doing this is there is a so much overlap that those in either domain don’t seem to realize. This is my first blog post ever because I wanted to give some thoughts from this alternative perspective.
Currently I’m spending most of my day working in Go, which is a dead simple language for getting shit done. While there are quirks about how to initialize variables in a number of ways and the chance to shoot yourself in the foot with races it is about as get out of the way as possible, except when its not.
Right now the big debate is whether generics should be included in version 2 of the language. Those against it say roughly “Go isn’t other languages” “You get use to it” “Generate code” “No need for me”.
Usually I sit back and take in the discourse without much opinion because in the end programming languages to me are a tool, just like the hand planes and CNC in my garage. Fit the tool to the task. However this debate gave a feeling of a disturbance to the force I had not felt in a long time.
In the 3D world changing tooling seems to be a nearly constant endeavor but overtime my host of tools began to narrow down to just a handful and the most notable amount of time was spent in Blender. Overall it was simple, fast and got the job done 95% of the time. In fact it was the first open source I really dug into as a 3D artist.
One feature that Blender didn’t have was a prompt to ask if were sure when you hit quit. This may seem like not a big deal until you acknowledge that every GUI tool in the world has this behavior. Also normal usage in the software was one hand on keyboard and one on the mouse utilizing heavy use of quick key combinations that could easily close you out with no warning. Yes you had in saved off in a backup .blend file but this was an odd to say the least to the end user.
The lack of prompt was debated for at least 15 years as far as I know. Those saying it wasn’t needed were saying roughly “You get used to it”, “Blender is a power user tool” “Git gud” “Blender isn’t every other tool”. ← Sound familiar?

Easy is good. Simple is better; though where you put the abstractions matters.
Most of my time programming generics never cross my mind when solving a problem. They tend to be most valuable down the stack from where I spend my time. Lately though I’m working on a project in Go where generics would mean less and clearer code. Personally I’d love to see something like Typescript’s generics with their ability to interface on both methods and data.
The current escape hatches of interface{} and reflection are band-aids on the fact that there is a host of problems that generics solve in a concise way. Sure they can be abused, but so can using an array when a map would be more efficient, and vice versa. When I’m looking to “code generate all the things” when generics would solve it directly, it makes me wish for prompt saying “Are you sure?”

PS. Blender finally added the quit prompt and its better for it.