A New Stack
I’m tired of teaching tools that are older than most of the people learning them, butif I teach something that isn’t (yet) widely used my learners won’t be able to collaborate with their colleagues, and most new tools will never catch on. That said, people don’t seem to be excited by the outline I’ve sketched for Research Software Design by Example, so I can either add it to my ever-growing list of books I’ve started but not finished or make it more exciting by using a new set of tools. I can’t reach too far ahead if I do the latter, which makes tool selection a balancing act. I’d be grateful for feedback on the list below.
Old | New | Because | Modified |
---|---|---|---|
Bash | Nushell | risky, but Fish feels too conservative | |
Git | sadly, still Git | I really wish Gitless had taken off… | |
Make | Just | finally, a better build tool I can believe in | 2024-04-19 |
SQLite | DuckDB | a better choice for data science? | |
Python | still Python | despite the mess that is Python packaging | |
Pandas | Polars | better ergonomics and performance | |
Seaborn | Plotly | I like it so much that I joined the company :-) | |
Jupyter | Marimo | also risky, but it really does feel like a step forward | |
LaTeX | ??? | maybe Typst but see below | |
— | Metaflow | the most Pythonic option available | |
— | DVC | preferred to Git-LFS | |
— | Ark | the best little Python SSG I’ve found | |
— | VSCode | mostly for the debugger | |
— | Docker | as ubiquitous as Git but |
A few notes:
-
Several of these tools are implemented in Rust rather than C, which makes me hope that Rust is on the same slow-but-steady growth curve as Python.
-
I really like where Nushell is going with structured data, and being built in Rust is a plus, but my first few experiments with it did leave me feeling that it still has a lot of rough edges.
-
Typst seems to be a plausible post-TeX typesetting tool, but (a) I wish they had used an existing scripting language (e.g., one of the Rust-based implementations of Lua) instead of creating a new one, and (b) it looks like their GUI is web-only and closed source, both of which make me very nervous.
-
VSCode and the various JetBrains IDEs are far too heavy for my liking, but there doesn’t seem to be anything else out there that supports multiple languages well. (Yes, I’m very familiar with Emacs; no, I don’t think it’s the right answer.)
What’s missing:
-
Something for creating diagrams that supports diff and merge. (No, I’m not going to teach a text-to-diagram compiler.)
-
Something on top of that for making slideshows (ideally an extension to Marimo, but that depends on diff and merge for diagrams).
-
I have no idea what to teach people right now about building interactive GUIs. The answer two years ago was JavaScript, but WebAssembly may or may not enable people to use Python instead—i.e., to avoid the considerable overhead of learning a second programming language. I don’t know what that means for React versus Elm versus htmx versus any of a dozen things I don’t even know I should be paying attention to…
-
I also have no idea what to teach people about LLMs, but find consolation in knowing that no-one else does either.