Lobste.rs is now running on SQLite
ahamez
12 points
4 comments
July 14, 2026
Related Discussions
Found 5 related stories in 707.8ms across 14,015 title embeddings via pgvector HNSW
- Lobste.rs is now running on SQLite abetusk · 29 pts · July 13, 2026 · 98% similar
- Letos: Create, edit, browse SQLite databases. Formerly known as SQLiteStudio thunderbong · 12 pts · June 30, 2026 · 60% similar
- Learning a few things about running SQLite surprisetalk · 206 pts · July 17, 2026 · 58% similar
- SQLite in Production: Lessons from Running a Store on a Single File thunderbong · 27 pts · April 04, 2026 · 54% similar
- sqlite: A CGo-free port of SQLite/SQLite3 tosh · 48 pts · June 07, 2026 · 53% similar
Discussion Highlights (3 comments)
tomasol
Really cool, the page is noticeably snappier. I'm wondering why they don't put the database on a network-attached block volume. DigitalOcean offers Volumes Block Storage, which is replicated across multiple hosts. Keeping SQLite there would allow the volume to be attached to a replacement Droplet rather than restoring from the latest nightly backup.
anitil
There's a really good list of lessons in the second half of this page which I think are really interesting (in general, but also in specific for this project). I don't have a Lobste.rs account but I have some comments about some of them so I'll add them here * If you want to fail on full table scans in tests you could take advantage of EXPLAIN - though, because it relies on the built in analysis/stats this may exactly mimic production tables. I believe Ruby is dynamic enough that you could probably attach an EXPLAIN to all queries in the unit tests [0] and parse the output. * For the three UDFs - Sqlite has a regexp module that you can build and load rather than using a udf in rails (probably a different version of regexp though, so user beware) [1] there is also an extensions_functions.c in the external contributions that provides 'stddev' [2] (or you could fake it with the percentile module). I'm confused why there's a udf for 'if' but it'd be trivial to build as C module, but I agree it's best to patch over this sort of thing separately from the migration, so perhaps limited benefit. * 'I'm constantly surprised by the default choices of SQLite.' I think this is fair, but they're quite dedicated in not breaking existing installations, they even have pages dedicated to explaining some peculiar architecture [3] [0] https://www.sqlite.org/eqp.html EDIT: there's an alternative suggestion here - https://lobste.rs/s/ko1ji1/lobste_rs_is_now_running_on_sqlit... [1] https://sqlite.org/src/file/ext/misc/regexp.c [2] https://sqlite.org/src/ext/contrib/ (ctrl-f for 'extensions-functions.c'. It has more than just stddev but you could strip the rest) [3] https://www.sqlite.org/rowidtable.html I find this a really touching note 'The designer of SQLite offers his sincere apology for the current mess'
lioeters
Related: Private equity firm K1 acquires MariaDB (2024) https://news.ycombinator.com/item?id=41506124 (91 comments)