Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Charles Leifer

    charlesleifer.com · Personal blog · on HN since 2009

    Charles Leifer is a Python developer who writes about SQLite, embedded databases, and Python language trends.

    Visit blogRSSHN submissions
    ProgrammingDatabases
    What HN says

    Commenters cite his guide to compiling SQLite for Python and his monospace font list, and some agree with his criticism of Python's direction.

    Stats for nerds
    74HN people shared it
    128linked in comments
    1.4Kstory points
    May 2026last shared
    2012people per year2026

    Top posts on HN

    1. 1
      Nginx: a caching, thumbnailing, reverse proxying image server
      1 person · 209 points · first shared 2016 · 57 comments on HN
    2. 2
      SQLite: Small, Fast, Reliable – Choose any three
      3 people · 208 points · first shared 2014 · 83 comments on HN
    3. 3
      Using python and k-means to find dominant colors in images
      2 people · 189 points · first shared 2012 · 31 comments on HN
    4. 4
      Kyoto Tycoon in 2019
      1 person · 111 points · first shared 2019 · 36 comments on HN
    5. 5
      Multi-threaded SQLite without the OperationalErrors (2017)
      2 people · 77 points · first shared 2017 · 19 comments on HN
    6. 6
      Peewee, a lightweight python ORM
      2 people · 75 points · first shared 2010 · 16 comments on HN
    7. 7
      What happened to Python?
      4 people · 64 points · first shared 2017 · 92 comments on HN
    8. 8
      "j" for switching directories - hacking "cd" with python
      1 person · 46 points · first shared 2013 · 25 comments on HN
    9. 9
      Shortcomings in the Django ORM and a look at Peewee, a lightweight alternative
      1 person · 37 points · first shared 2012 · 9 comments on HN
    10. 10
      Your idea sucks
      5 people · 18 points · first shared 2017 · 1 comments on HN

    What HN people wrote when they linked it

    • samsquireJun 2023

      Thanks for another thing I need to add to my reading list in addition to The Art of Multiprocessor Programming.

      I am really interested in parallel, asynchronous, multithreading, coroutine, futures programming so it's what I spend my days thinking about and blogging about it. I hope you sense my excitement in this comment about this topic. I'm looking for a programming model that parallelises easily and doesn't require much effort, so this PDF seems relevant to me. I really should try be a user of languages like Erlang, Inko, Pony and Go but I am too interested in the mechanism of these languages!

      I am also learning from Erlang and Go, nginx and LMAX disruptor.

      I don't focus on number crunching parallelisation, I let libraries and frameworks parallelise matrix multiplication such as BLAS. I'm interested in rote system parallelisation architecture. For example, PHP and nodejs is not a parallel language but how PHP is hosted in FastCGI processes means it can be executed multiple times by nginx so it is in effect parallel across requests. Unfortunately PHP and nodejs cannot create threads or use a thread pool within a request.

      I want heavy CPU tasks of a request to not block other requests or the event loop and heavy IO requests to not block the event loop. I am a pre-beginner in Rust but I think you can use Rayon for CPU heavy tasks and Tokio for async IO parallelisation.

      Here's a system diagram that I'm thinking about…

    • simonwAug 2018

      Charles provided really great documentation on how to build this here: http://charlesleifer.com/blog/compiling-sqlite-for-use-with-python-applications/

      Or if you're feeling lazy (like I was), there's a fork of his library at https://github.com/karlb/pysqlite3 which compiles the 3.25.0 amalgamation by default. This worked for me:

      $ python3 -mvirtualenv venv
      $ source venv/bin/activate
      $ pip install git+git://github.com/karlb/pysqlite3
      Collecting git+git://github.com/karlb/pysqlite3
      ...
      Installing collected packages: pysqlite3
      Successfully installed pysqlite3-0.2.0
      $ python
      Python 3.6.5 (default, Mar 30 2018, 06:41:53)
      [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
      Type "help", "copyright", "credits" or "license" for more information.
      >>> import pysqlite3
      >>> pysqlite3.connect(":memory:").execute("select sqlite_version()").fetchall()
      [('3.25.0',)]

    • cleiferMay 2026

      Loved Brooks’ and feel like I must’ve internalized his model because that’s all I care about anymore in dev. Coherence among the components (people or software) to produce something good. I think of if 100 pianos are tuned to the same tuning fork then they all play well together.

      AI accelerated iteration and undisciplined use seem to me the main risk lately. Drift from any prompting, accumulation of features, plausible looking patches that are actually slop. Wrote about this recently [0], it creates a dynamic where you aren’t just making the software less coherent, you’re paying more and more to make it so. Curious to hear others experience of this.

      [0] https://charlesleifer.com/blog/tokens-and-dreams/

    • networkedAug 2015

      Vedis is called an ACID database on its website and rlite is called "transactional" in the read-me, so I assume that, like SQLite, by default they sync at the end of each transaction. Even if this weren't the case, though, I think the comparison would still be appropriate. Any embedded database, regardless of its stated use case, is in direct competition with SQLite because the latter dominates the market (and for good reason!).

      Looking for existing benchmarks of this kind I have found one that compares Vedis, Redis and SQLite: http://charlesleifer.com/blog/completely-un-scientific-benchmarks-of-some-embedded-databases-with-python/.

    • patelajay285Aug 2019

      Hi @coleifer, I'll disagree, I'm the author. I don't think they are gross hacks, just a more sensible default configuration. In fact, I used a lot of your advice from your blog post https://charlesleifer.com/blog/going-fast-with-sqlite-and-python/ while making this library.

      Fair enough if you want to compile your own version, but there's a lot of people and Python devs who don't know how / won't go through the effort and that's what this project is for.

      It's also a work in progress and not meant to be released yet. Shoot me an e-mail ajay@plasticityai.com if you have suggestions for how to improve it.

    • ErwinDec 2016

      This might benefit from SQLite's Virtual tables: https://sqlite.org/vtab.html

      With Virtual Tables you can expose any data source as a SQLite table -- then you can use every SQL feature that sqlite offers. You can just tell sqlite how to iterate through your data with a few functions, with an option to push down filtering information for efficiency.

      You can also create your own aggregates, functions etc.

      Here's an article where the author exposes redis as a table within sqlite: http://charlesleifer.com/blog/extending-sqlite-with-python/

    Related

    Simon Willison's TILstil.simonwillison.net111 people

    One-liner for running queries against CSV files with SQLite

    Simon Willison's TILs
    Personal · last shared 2026
    Anton Zhiyanovantonz.org96 people

    SQLite is not a toy database

    Anton Zhiyanov
    Personal · last shared 2026
    David Rothlisdavid.rothlis.net19 people

    Simple declarative schema migration for SQLite

    David Rothlis
    Personal · last shared 2026
    Stephen Margheimfractaledmind.github.io16 people

    SQLite on Rails: The how and why of optimal performance

    Stephen Margheim
    Personal · last shared 2025
    Turso Blogturso.tech102 people

    Working on databases from prison

    Turso Blog
    Company · last shared 2026
    Scattered Thoughtsscattered-thoughts.net186 people

    Against SQL

    Scattered Thoughts
    Personal · last shared 2026
    Haki Benitahakibenita.com52 people

    Lesser-known Postgres features

    Haki Benita
    Personal · last shared 2026
    Valentin Waeselynckvvvvalvalval.github.io29 people

    What makes a good REPL?

    Valentin Waeselynck
    Personal · last shared 2025