Work in progress: 82,651 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #548

S

Steve Hanov

Personal blog · stevehanov.ca/blogprogrammingweb

Steve Hanov's personal blog at stevehanov.ca covers programming and web. 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.

Visit the blog
135mentions?
8recommend?
107HN people?
2009–2026first – last linked?
Links on Hacker News per year · peak 23 in 2011

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?

  1. Qb.js: An implementation of QBASIC in Javascript (part 1)
    9 people · 10 mentions · first linked 2010-01-10
  2. 20 lines of code that beat A/B testing every time
    9 people · 9 mentions · first linked 2012-05-29
  3. How a programmer reads a resume
    6 people · 6 mentions · first linked 2010-08-11
  4. Game Theory, Salary Negotiation, and Programmers
    5 people · 5 mentions · first linked 2010-09-14
  5. Minimal Perfect Hashing
    5 people · 5 mentions · first linked 2011-03-10
  6. Fast and easy Levenshtein distance using a trie (2011)
    4 people · 4 mentions · first linked 2011-04-27
  7. Fast Levenshtein distance using a Trie
    4 people · 4 mentions · first linked 2011-01-15
  8. C++: A language for next generation web apps
    4 people · 4 mentions · first linked 2010-01-26
  9. Succinct Data Structures: Cramming 80,000 words into a Javascript file
    4 people · 4 mentions · first linked 2011-03-21
  10. Succinct Data Structures: Cramming 80,000 words into a Javascript file.
    4 people · 4 mentions · first linked 2011-03-23

What Hacker News says?

  1. ignoramous · 2022-07-22Recommends
    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?”
  2. Submitted 20 lines of code that beat A/B testing every time as a story · 989 points

    HN discussion
  3. Succinct 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?”
  4. Submitted 20 lines of code that beat A/B testing (2012) as a story · 545 points

    HN discussion
  5. Very 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”
  6. Submitted Lines of code that beat A/B testing (2012) as a story · 379 points

    HN discussion
  7. Most 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”
  8. Submitted The multi-armed bandit problem (2012) as a story · 303 points

    HN discussion
  9. Could 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”
  10. Submitted Fast and easy Levenshtein distance using a trie (2011) as a story · 168 points

    HN discussion
  11. > 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”
  12. Submitted Succinct Data Structures: Cramming 80,000 words into a Javascript file as a story · 126 points

    HN discussion
  13. A 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”
  14. Submitted “Your program is stupid. It doesn't work,” my wife told me (2010) as a story · 115 points

    HN discussion
  15. robyates · 2011-10-18Recommends
    +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?”
  16. Submitted How to detect if an object has been garbage collected in JavaScript as a story · 113 points

    HN discussion
  17. naner · 2011-10-17Recommends
    http://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?”
  18. Submitted Fast Levenshtein distance using a Trie as a story · 107 points

    HN discussion
  19. There'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”
  20. Submitted C++: A language for next generation web apps as a story · 104 points

    HN discussion
  21. done http://stevehanov.ca/blog/index.php?id=92

    Comment linking /blog/index.php?id=92

    on “30 years later, QBasic is still the best”
  22. Submitted VP trees: A data structure for finding stuff fast as a story · 102 points

    HN discussion
  23. I'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”
  24. Submitted Minimal Perfect Hashing as a story · 76 points

    HN discussion
  25. openresty 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?”
  26. Submitted "Hand-Drawn" Vector Graphics Editor in Javascript as a story · 59 points

    HN discussion
  27. Actually 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 ...”
  28. Submitted Throw away the keys: Easy, Minimal Perfect Hashing as a story · 58 points

    HN discussion
  29. ignoramous · 2020-12-04Recommends
    You 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)”
  30. Submitted How to run a Linux based home web server as a story · 54 points

    HN discussion

Search all of HN for stevehanov.ca

Linked by the same people?