My Last To-Don't List
The best productivity tip I ever got was to keep a “to don’t” list of things that you are not going to do because life is too short and you already have too much on the go. The ones I would most have liked to do were:
- Sex and Drugs and Guns and Code
- Leadership Skills for Open Science
- Software Engineering: Compassion, Evidence, Process, and Tools
- Harper-Lite: Simple Lesson Discovery and Aggregation
- Software Engineering Research Ideas
Others are described below and in my list of unwritten books; if you ever have a chance to tackle any of them, I hope they bring you joy.
- A browser-based drag-and-drop tool for data analytics.
- The TidyBlocks project ground to a halt due to a lack of funding and some difficult technical challenges. I still believe in the idea, though, and think that using Node-RED as a starting point instead of Blockly would circumvent the technical challenges, give non-programmers an interface they could use immediately, and be a natural successor to Yahoo! Pipes.
- A WYSIWYG computational notebook.
- In a better universe than ours someone has already built a plugin for LibreOffice that leverages the the Jupyter messaging protocol, and the 99% of our species who prefer WYSIWYG to Markdown plus YAML plus compilation can create the reports they want the way they want to. It’s not too lateā¦
- Browsercast.
- This tool would replay an HTML slideshow in sync with a voiceover. Tools like Wasim Lorgat’s SVG replay and Scrimba have made me more certain than ever that we shouldn’t turn text and HTML into video streams: we should share them in their original form so that people can search them, style them, copy and paste them, and feed them to screenreaders and other accessibility aids.
- Use case maps.
- Given an SVG diagram showing the elements of your system that produce log entries, be they classes or microservices, and UUIDs to identify the descendents of initiating messages, this tool would draw the diagram we all eventually wind up creating by hand to show what happens when and where.
- A Journal of Comprehensible Explanations.
- We’ve been writing reviews of software engineering research results at It Will Never Work in Theory for years with no noticeable impact on what practitioners believe or how the subject is taught. The lightning talks we organized in 2022 were popular, but I think a set of research vignettes could help as well. The trick would be getting people tenure points for writing them; I think a journal (or a track at a major software engineering conference) might do the trick.
- A superset of Elm for systems programming.
- I’ve been fascinated by pure functional programming since I first encountered it in the mid-1980s. I’d really like to do a version of Software Design by Example in a pure functional language, but want one that is to Haskell what Pascal was to Algol-68: smaller, simpler, and more accessible. I think a superset of Elm with libraries for creating files and directories would be just about perfect.
- Diff and merge for SVG, CSV, and office documents.
- While we’re talking about drawing, I think developers would be much (much) more likely to include diagrams in their documentation if they could diff and merge those diagrams as easily as they do text. GitHub has supported a split-pane view for years, but it doesn’t automatically highlight differences or help you merge them the way punchard emulators (i.e., programmers’ other editing tools) have done for decades. I’d be almost as grateful for a tool to diff and merge CSV files that understood columns as well as rows, and for one that would handle LibreOffice documents.
- A portfolio of learner personas.
- Good lessons are written for specific learners; I think it would be really helpful to create a set that gave us shorthand names for people who want to learn programming and/or data science.
- A portfolio of concept maps.
- A good lesson helps the learner build a mental model of a problem or problem domain. I think it would be really helpful to create a set that encapsulated a consensus view of the core concepts in particular topics.
- A caravan defense game.
- Kingdom Rush: Frontiers is my favorite game of the last ten years, but I’m increasingly uninterested in killing monsters. I want a game where I build towers to defend the travelers from bandits, predators, natural disasters, swindlers, and other threats. It has nothing to do with software engineering, but I think it would be a lot of fun.