A
Austin Henley
web.eecs.utk.edu/~azh · Personal blog · on HN since 2018
Austin Henley, a computer science professor at the University of Tennessee, writes about programming projects, developer tools and teaching software engineering.
What HN saysHN links his project ideas, compiler tutorial and favorite blogs list; commenters engage with his posts on seeing past code and useless projects.
16HN people shared it
10linked it in comments
77stories submitted
7.5Kstory points
5 years agolast shared
2018people per year2026
Most-shared posts
- 1Challenging projects every programmer should try3 people · 917 points · first shared 2019 · 297 comments on HN
- 2What’s wrong with computational notebooks?3 people · 387 points · first shared 2020 · 221 comments on HN
- 3Let's make a Teeny Tiny compiler3 people · 271 points · first shared 2020 · 44 comments on HN
- 4Let's make a Teeny Tiny compiler, part 33 people · 7 points · first shared 2020 · discussion on HN
- 5Why I prefer making useless stuff2 people · 772 points · first shared 2021 · 270 comments on HN
- 6More challenging projects every programmer should try2 people · 757 points · first shared 2020 · 223 comments on HN
- 7Why is it so hard to see code from 5 minutes ago?2 people · 523 points · first shared 2021 · 408 comments on HN
- 8Books I recommend to my software engineering students2 people · 431 points · first shared 2020 · 116 comments on HN
- 9Lessons from my PhD2 people · 407 points · first shared 2021 · 130 comments on HN
- 10“This project will only take 2 hours”2 people · 404 points · first shared 2021 · 271 comments on HN
- 11Progress bars still lie2 people · 204 points · first shared 2020 · 227 comments on HN
- 12A theory of how developers seek information2 people · 127 points · first shared 2021 · 42 comments on HN
- 13Human-Centric Tools for Navigating Code [pdf]2 people · 124 points · first shared 2018 · 25 comments on HN
- 14Building solutions to problems that no one knows exist yet2 people · 96 points · first shared 2021 · 17 comments on HN
- 15Navigate your code like it's 20212 people · 63 points · first shared 2021 · 18 comments on HN
What HN people wrote when they linked it
azhenley · 2021-09-20
I find blogs by periodically asking my friends for suggestions. I recently made my list of favorites:
https://web.eecs.utk.edu/~azh/blog/favblogs.html
lucgommans · 2021-08-21
Via Austin Z. Henley's favorite Wikipedia articles about science: https://web.eecs.utk.edu/~azh/blog/favwikiarticles.html
TeMPOraL · 2021-04-29
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…
leohonexus · 2021-09-19
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
brigandish · 2021-08-05
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
tuankiet65 · 2020-12-21
Their previous article mentioned it: https://web.eecs.utk.edu/~azh/blog/challengingprojects.html.
kriro · 2020-01-28
Direct link to the preprint: http://web.eecs.utk.edu/~azh/pubs/Chattopadhyay2020CHI_NotebookPainpoi…
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".
rgoulter · 2019-06-14
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.
eatonphil · 2021-02-21
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.