Bill Mill
billmill.org · Personal blog · on HN since 2007
Bill Mill, a programmer, writes tutorials and experiments on Python, HTML canvas games, D3, and data structures like Bloom filters.
What HN saysHN commenters link his canvas tutorial as a way to learn JavaScript through graphics and games.
31HN people shared it
5linked it in comments
36stories submitted
646story points
1 year agolast shared
2007people per year2026
Most-shared posts
- 1How I use Git worktrees (2024)5 people · 40 points · first shared 2024 · 2 comments on HN
- 2Bloom Filters by example4 people · 170 points · first shared 2012 · 61 comments on HN
- 3Html canvas playground4 people · 7 points · first shared 2008 · discussion on HN
- 4Multi-Line Lambdas in Python Using the With Statement3 people · 44 points · first shared 2009 · 11 comments on HN
- 5Serving a billion web requests with boring code2 people · 56 points · first shared 2024 · 13 comments on HN
- 6Pong in 30 Lines2 people · 19 points · first shared 2008 · 7 comments on HN
- 7Complex for Whom?2 people · 5 points · first shared 2024 · 1 comments on HN
- 8An AI tool I find useful2 people · 4 points · first shared 2025 · discussion on HN
- 9Tutorial: Breakout in HTML5's canvas2 people · 2 points · first shared 2009 · discussion on HN
- 10What are the "worst" spelling bee pangrams?1 people · 104 points · first shared 2024 · 85 comments on HN
- 11Radial NCAA Bracket in D3.js1 people · 70 points · first shared 2014 · 18 comments on HN
- 12Modern Unix Tool List1 people · 61 points · first shared 2024 · 11 comments on HN
- 13What Gladwell is Missing: Institutional Memory1 people · 31 points · first shared 2009 · 15 comments on HN
- 14Eslogger: Trace filesystem events using the Mac OS X endpoint security framework1 people · 7 points · first shared 2025 · discussion on HN
- 15Image Programming in JavaScript: The Histogram1 people · 4 points · first shared 2009 · discussion on HN
What HN people wrote when they linked it
llimllib · 2023-04-07
Obsidian, and I export it to https://notes.billmill.org via https://github.com/llimllib/obsidian_notes
bad_user · 2010-03-06
Actually you could say that functions in C# have been first-class since version 2.0.
We of course need to define what first-class is ... if it's the ability to have higher-order functions, than 2.0 fits.
C# 3.0 only adds a light-weight syntax for anonymous delegates plus the really kick-ass ability to get a syntax tree of that method instead of the method's reference (on which Linq is based) ... and I really wish other languages add this capability (it was possible in Ruby 1.8.x, but it's not anymore in Ruby 2.0).
Python kicks ass in regard to first-class functions ... and it leverages that ability with decorators. People using other languages go through great pain to have AOP capabilities (for example), but in Python it only takes like 10 minutes to add a couple of utilities to do whatever you want.
The only frustration I have with it is the lack of multi-line anonymous blocks, but Python is so flexible you can add that using "with" block hacks, like described here ... http://billmill.org/multi_line_lambdas.html
Also, once you understand dynamic-scoping ... it's really not that big of a deal to deal with the situation described above. It's just different.
I like the lexical-scoping in Perl as it prevents all kinds of errors ... but in Python I have real exception-handling, and a kick-ass debugger console just by adding "import ipdb; ipdb.set_trace()" anywhere I want.
j1elo · 2023-11-28
Only tangential. I usually enjoy reading public notes of other people, so that's what I did here too.
On https://notes.billmill.org/programming/json/jq.html the author says that
> jq appears to be largely unmaintained at this point, which is sad
They might be happy to learn that after several years of halted development and unreleased improvements & bugfixes, jq ownership got transferred from the original author to a new organization, which allowed to resume operations:
https://github.com/jqlang/jq/releases/tag/jq-1.7
Twisol · 2010-07-25
I don't know of any good Javascript learning platforms off the top of my head, but I think you'll want to aim for some form of immediate gratification.
One thing you could do is whip up a sandbox page, like what w3schools does with its examples. Basically, create a page with three primary elements: a text box containing the Javascript, an Update button, and a section containing the actual content being messed with. You could come up with multiple "tutorials" or "activities" using this concept, and the Canvas tutorial below [1] is a neat example.
[1] http://billmill.org/static/canvastutorial/
nimrody · 2009-12-23
Might be easier to use Javascript for this purpose since it is available practically everywhere. And HTML Canvas support makes writing graphics/games very easy.
See http://billmill.org/static/canvastutorial/index.html for example.