Top all-time · #557
Steve Hanov
Personal blog · stevehanov.caprogrammingbusiness
Steve Hanov's personal blog at stevehanov.ca covers programming and business. Since 2009, 107 different Hacker News readers have linked it 135 times, most often “Qb.js: An implementation of QBASIC in Javascript (part 1)”. It is still writing: the last post was on 2026-05-26, and you can follow it by feed.
Sometimes recommended · 8 of 40 sampled comments recommend it?
Why HN links it
HN readers link this blog for its programming articles on tries, succinct data structures and QBasic, and for the bandit A/B testing and salary negotiation posts.
- Recommended for · 8 comments
- Called very good programming articles, a classic, a good primer on tries, a nice example, and a read before interviews.
Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
I know how to make and sell software online, and I can share my tips with you.
Most-linked posts?
- Qb.js: An implementation of QBASIC in Javascript (part 1)9 people · 10 mentions · first linked 2010-01-10
- 20 lines of code that beat A/B testing every time9 people · 9 mentions · first linked 2012-05-29
- How a programmer reads a resume6 people · 6 mentions · first linked 2010-08-11
- Game Theory, Salary Negotiation, and Programmers5 people · 5 mentions · first linked 2010-09-14
- Minimal Perfect Hashing5 people · 5 mentions · first linked 2011-03-10
- C++: A language for next generation web apps4 people · 4 mentions · first linked 2010-01-26
- Fast Levenshtein distance using a Trie4 people · 4 mentions · first linked 2011-01-15
- HR vs. programmers – how they reads your resume4 people · 4 mentions · first linked 2010-12-07
- Succinct Data Structures: Cramming 80,000 words into a Javascript file4 people · 4 mentions · first linked 2011-03-21
- Succinct Data Structures: Cramming 80,000 words into a Javascript file.4 people · 4 mentions · first linked 2011-03-23
What Hacker News says?
See Steve Hanov's classic article on the topic: http://stevehanov.ca/blog/index.php?id=120
Comment linking /blog/index.php?id=120
on “Ask HN: What are some cool but obscure data structures you know about?”Submitted 20 lines of code that beat A/B testing every time as a story · 989 points
HN discussionSuccinct Trie http://stevehanov.ca/blog/?id=120 Super effective way to store a searchable list of items, like a dictionary of words.
Comment linking /blog/?id=120
on “Ask HN: What are some cool but obscure data structures you know about?”Submitted 20 lines of code that beat A/B testing (2012) as a story · 545 points
HN discussionVery cool. Reminds me of Steve Hanov's work: http://stevehanov.ca/blog/index.php?id=33 http://zwibbler.com/ https://www.websequencediagrams.com/
Comment linking /blog/index.php?id=33
on “Show HN: RoughJS – Create hand-drawn graphics using JavaScript”Submitted Lines of code that beat A/B testing (2012) as a story · 379 points
HN discussionMost or all of the points suffer from: Let's address them one by one. is that actually true? In every case, yes. does regular a/b testing not also face that issue? For the big ones, regular A/B testing does not face that issue. For the more complicated ones, A/B testing does face that issue and I know how to work around it. With a bandit approach I'm not sure I'd have noticed the issue. was it suggested that you mus…
Comment linking /blog/index.php?id=132
on “20 lines of code that beat A/B testing every time”Submitted The multi-armed bandit problem (2012) as a story · 303 points
HN discussionCould you apply what you learned to improve this qb js interpreter? http://stevehanov.ca/blog/index.php?id=92 Fairly useless but would be a nice nostalgia trip to be able to run some of the 90s qbasic code that's still lying around in unswept corners of the internet :)
Comment linking /blog/index.php?id=92
on “Snakisms”Submitted Fast and easy Levenshtein distance using a trie (2011) as a story · 168 points
HN discussion> A trick that might help: create a separate SQLite table containing just the article titles to autocomplete against. Another one: build a directed-acyclic-word-graph [0][1] of just the page-titles and download it to browser's localStorage for prefix-based searches. In our usage, ~5M entries take ~18MB. Wikipedia has ~6.3M articles [2]. [0] https://github.com/smhanov/dawg [1] http://stevehanov.ca/blog/?id=115 [2] ht…
Comment linking /blog/?id=115
on “Show HN: Static.wiki – read-only Wikipedia using a 43GB SQLite file”Submitted Succinct Data Structures: Cramming 80,000 words into a Javascript file as a story · 126 points
HN discussionA few links gathered from a quick google search as a primer: http://stevehanov.ca/blog/?id=97 https://www.evanjones.ca/portable-linux-binaries.html https://insanecoding.blogspot.com/2012/07/creating-portable-... https://rpg.hamsterrepublic.com/ohrrpgce/Portable_GNU-Linux_... https://github.com/wheybags/glibc_version_header In other words: there are a lot of steps and a lot of gotchyas to doing this that you're gloss…
Comment linking /blog/?id=97
on “Thank You, Valve”Submitted “Your program is stupid. It doesn't work,” my wife told me (2010) as a story · 115 points
HN discussion+1 for Steve Hanov's blog. I enjoyed his post about how programmers/HR review your resume: http://stevehanov.ca/blog/index.php?id=56
Comment linking /blog/index.php?id=56
on “Ask HN: What programming blogs do you read daily?”Submitted How to detect if an object has been garbage collected in JavaScript as a story · 113 points
HN discussionhttp://stevehanov.ca/blog/ -- Updates infrequently. Very good programming articles. http://duartes.org/gustavo/blog/ -- Updates infrequently. Good articles on Linux and Programming. Start here: http://duartes.org/gustavo/blog/best-of http://catonmat.net -- He doesn't update much anymore since he's working on his startup but the archives are still good. Mostly unix tools and CompSci stuff IIRC. http://chneukirchen.or…
Comment linking /blog/
on “Ask HN: What programming blogs do you read daily?”Submitted Fast Levenshtein distance using a Trie as a story · 107 points
HN discussionThere's a create blog from the creator of RhymeBrain that talks about Succinct Tries: https://stevehanov.ca/blog/index.php?id=120 I'm pretty sure these were used to store the built in dictionaries on early mobile phones, especially for the implementation of T9 word and similar programs.
Comment linking /blog/index.php?id=120
on “Succinct data structures”Submitted C++: A language for next generation web apps as a story · 104 points
HN discussiondone http://stevehanov.ca/blog/index.php?id=92
Comment linking /blog/index.php?id=92
on “30 years later, QBasic is still the best”Submitted VP trees: A data structure for finding stuff fast as a story · 102 points
HN discussionI've always liked the idea of using "systems" languages for data shuffling, because of the ability in some cases to stretch hardware several orders of magnitude further. I read this a while ago and just dug it up: http://stevehanov.ca/blog/index.php?id=95 It's a bit silly, but I do think that Rust could be a very good solution here. For one thing, in my experience it is much easier to write than C++, especially for…
Comment linking /blog/index.php?id=95
on “Announcing Rust 1.6”Submitted Minimal Perfect Hashing as a story · 76 points
HN discussionopenresty with several half-done micro-saas, written in golang with sqlite3 storage. ( my post-factum inspiration: https://stevehanov.ca/blog/how-i-run-multiple-10k-mrr-compan... )
Comment linking /blog/how-i-run-multiple-10k-mrr-companies-on-a-20month-tech-stack
on “Ask HN: What do you run on a $5 VPS that's worth keeping online 24/7?”Submitted "Hand-Drawn" Vector Graphics Editor in Javascript as a story · 59 points
HN discussionActually Steve Hanov's implementation which we're using does have canvas support. You can find it at http://stevehanov.ca/blog/index.php?id=92 . We stripped the graphical parts since they make little sense in our UI. At some point we may add graphics support, but if we do it will be to all (or at least the majority of) the languages.
Comment linking /blog/index.php?id=92
on “Try Python, Ruby, Lua, Scheme, QBasic, Forth ...”Submitted Throw away the keys: Easy, Minimal Perfect Hashing as a story · 58 points
HN discussionYou may be interested in any or all of these: Minimal Acyclic Finite State Automata: http://stevehanov.ca/blog/?id=115 (related: https://web.archive.org/web/20120302104036/http://siganakis.... ) Succinct Tries: http://stevehanov.ca/blog/?id=120 (related: https://alexbowe.com/succinct-debruijn-graphs/ ) Compression and completion using GPT-2: https://bellard.org/textsynth/index.html (related: https://ed-von-schleck.g…
Comment linking /blog/?id=120
on “A spellchecker used to be a major feat of software engineering (2008)”Submitted How to run a Linux based home web server as a story · 54 points
HN discussion