Austin Henley, a computer science professor at the University of Tennessee, writes about programming projects, developer tools and teaching software engineering.
HN links his project ideas, compiler tutorial and favorite blogs list; commenters engage with his posts on seeing past code and useless projects.
We need to tease out several different things here. In my opinion:
- Information density is good. If you can stuff more data on screen, by using annotations, underlines, fringe markers, whatnot - it's usually a win. As long as the indicators don't interfere with each other, human brain can quickly learn to filter them with near-zero effort.
- Clicking is bad ergonomics. It has high enough overhead compared to keyboard that it's enough to interfere with focus and the state of flow.
- Most animations are bad ergonomics. This, ironically, applies to the author's CodeRibbon[0]. It looks like a great idea. Then you think how to implement it in Vim/Emacs, with less animations. Then you realize that you can get this with some tweaks to how you switch buffer/window configurations, and it'll give you same benefits with better ergonomics.
- The article underexplores the third choice of the predator - enriching the environment. Or, perhaps, we should introduce a fourth choice[1]: meta-enrichment, or developing technology. That is, reconfiguring and extending your tooling to offer you more/different contextual cues (foraging), navigation tools (navigation) and operations (enrichment). This is where Emacs shines above all - for a proficient Emacs user, meta-enrichment is something one just does. Of course, as a developer living in Emacs, I suffer from confirmation bias[2] :).
--
[0] - https://web.eecs.utk.edu/~azh/blog/coderibbon.html
[1] - Incidentally, one that distinguishes…
Take a look at https://web.eecs.utk.edu/~azh/blog/challengingprojects.html and https://web.eecs.utk.edu/~azh/blog/morechallengingprojects.html for some good summaries.
For me, I started building programming languages (and standard libraries) years ago as personal challenge and to learn more about how various languages work. Later on that branched into emulation (x86/amd64, armv8/aarch64) and more recently databases. (You can find these kinds of projects on my github).
Before that when I was more focused on web tech, I'd build clones of React or Bootstrap or Flask to increase my understanding there.
It helped being surrounded by people with a lot more experience than I so I'd keep being in a situation where I knew nothing about some field and wanted to not be embarrassingly naïve :D so I'd try to build something from scratch to learn it.
It doesn't always work out! An example of a topic I haven't yet been able to get into is the TCP/IP stack. I got somewhere into the IP layer on top of userland raw sockets but TCP complexity and may poor C skills failed me as the algorithms needed for tracking state came up.
Direct link to the preprint: http://web.eecs.utk.edu/~azh/pubs/Chattopadhyay2020CHI_NotebookPainpoints.pdf
Interesting study, I like the mixed-method approach. A quick glance at the industry of the participants suggests that there might be a bias towards structural data (which I think is actually acceptable as that makes up a huge chunk of the non-academic ML-Notebook work)
Edit: The authors acknowledge this in the "Limitations".
http://web.eecs.utk.edu/~azh/pubs/Henley2018bDissertation.pdf
FWIW, for those interested, there's some discussion of the "Code Bubbles" environment which allows arranging working sets on a canvas. (IDK if this falls under "limited canvas" or whatever).
I think a big part of why this hasn't caught on is that the benefits of a layout which maps to a mental model are _generally_ less than the cost of arranging things.
I'm currently using one in a personal app because I'm learning a lot about a new language for me (Crystal). It's why, like this author[1], I also like writing useless apps.
[1] https://web.eecs.utk.edu/~azh/blog/makinguselessstuff.html
Ah, this reminds me of YesterCode, a tool that lets you scrub through code changes like a timeline.
Relevant HN thread: https://web.eecs.utk.edu/~azh/blog/yestercode.html