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
    G

    Grimoire

    grimoire.ca · Personal blog · on HN since 2013

    Grimoire is a personal site by Owen Jacobson with essays on databases, version control, Go, deployment and software practice.

    Visit blogRSSHN submissions
    DatabasesProgrammingOpen Source & Linux
    What HN says

    HN commenters cite its MySQL essay in arguments that MySQL is flawed, and link its pieces on detached signatures for git.

    Stats for nerds
    31HN people shared it
    12linked in comments
    476story points
    Feb 2019last shared
    2013people per year2019

    Top posts on HN

    1. 1
      MySQL - Do Not Pass This Way Again
      24 people · 245 points · first shared 2013 · 156 comments on HN
    2. 2
      I Do Not Like Go
      2 people · 226 points · first shared 2018 · 210 comments on HN
    3. 3
      Stop Using Git Pull to Deploy
      1 person · 2 points · first shared 2017 · Discussion on HN
    4. 4
      Maslow's hierarchy of software needs
      1 person · 2 points · first shared 2013 · Discussion on HN
    5. 5
      Bugs, Tasks, and Tickets from First Principles
      1 person · 1 points · first shared 2013 · Discussion on HN
    6. 6
      Detached sigs
      2 people · first shared 2017

    What HN people wrote when they linked it

    • davidgerardJan 2015

      Nothing hugely complicated. Production Magento, Drupal and WordPress - we managed to outsource the WordPress, so now it's mainly now Magento, and that's much more horrible in itself than MySQL - one in-house tool that used to use it, some MediaWiki, and one really badly-behaved in-house tool that picked MySQL without asking us first.

      Mostly we were bitten by long-running MySQL sillinesses:

      * its strange idea of UTF-8 (we call the MySQL version WTF-8 - see http://geoff.greer.fm/2012/08/12/character-encoding-bugs-are-%F0%9D%92%9Cwesome/ )

      * InnoDB's galloping disk consumption

      * the Debian/Ubuntu package's default stupid behaviour of putting all the InnoDB databases into a single file ibdata1 (I hope this is a Debianism and not something that's default in upstream)

      * ibdata1 never shrinking ever (bug #1341, open since 2003)

      * binary replication issues (e.g. bug #68892, which is fixed but that doesn't help older or distro versions)

      * several others I've mercifully obliterated the braincells that were holding them. But all of these were long-known issues that will never be fixed for one reason or another (backward compatibility with past mistakes, or they just can't be bothered).

      Here's a good crib: http://grimoire.ca/mysql/choose-something-else

      tl;dr MySQL: the Comic Sans of databases. Except Comic Sans has use cases.

    • dijitApr 2016

      Sure, but adding too many sources will make me seem snide or bitter.

      But as an example:

      https://www.youtube.com/watch?v=emgJtr9tIME
      MySQL vs PostgreSQL - Why you shouldn't use MySQL

      https://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_autocommit

      http://grimoire.ca/mysql/choose-something-else

      https://blog.ionelmc.ro/2014/12/28/terrible-choices-mysql/

      the fact that https://dev.mysql.com/doc/refman/5.6/en/mysql-real-escape-string.html has to exist because https://dev.mysql.com/doc/refman/5.6/en/mysql-escape-string.html doesn't work properly. (this is actually blamed on PHP a lot)

      My favorite MySQL gotcha is that if you issue a GRANT statement with a typo in the user's name instead giving a "user does not exist" error it simply creates a new user with the misspelled name.

    • wlllApr 2018

      Because MySQL is the PHP of databases. Much like PHP is designed to just carry on truckin' whatever problem it encounters (https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/), MySQL was too. It's easy to slam some data into it and get it back without having to think too hard about what you're actually storing (https://grimoire.ca/mysql/choose-something-else). It's ease of use made it pervasive, much like PHP.

      Following on from that, I suspect a lot of large companies use MySQL because they always have, not because it's actually any good. For example, Basecamp used MySQL while I was there, but I never met a single Sysadmin there who would use it over Postgres if they were to start a new project.

    • matwoodMar 2016

      MySql is a joke and always has been. I blame a huge majority of the RDBMS hate on the fact that many peoples only experience with a RDBMS was MySql. The issues are numerous, but two of my personal favorites are silent data truncation and allowing 'indeterminate' results with non-aggregate or non-functionally dependent columns in the select[1]. 5.7.5 finally changes the default behavior of the former.

      This site lists many of the issues: http://grimoire.ca/mysql/choose-something-else

      [1] http://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html

    • fennecfoxenAug 2016

      The design of MySQL has a lot more silent failures, silent coercing of data, and other ways that it attempts to do what it thinks you might mean (because you're an incompetent PHP programmer) instead of what you ask. The obvious example is that SELECT 0 = 'banana' returns 1.

      A typical takedown would be the likes of: http://grimoire.ca/mysql/choose-something-else (which also touches storage engine configuration things that are easier to defend against by an experienced organization). Unfortunately this sort of takedown solves very few discussions.

    • gloglaSep 2017

      > - synchronous multi-master cluster (Galera, Group Replication)

      Which doesn't work, see [1]. What other features of those you listed the authors claim that work, and just don't when you look deeper?

      Lot of the big companies are using MySQL as a NoSQL database, and that's not a bad way to use MySQL, but it's a pretty bad relational database, see [2].

      [1]: https://aphyr.com/posts/327-call-me-maybe-mariadb-galera-cluster

      [2]: https://grimoire.ca/mysql/choose-something-else

    Related

    MyNoSQLnosql.mypopescu.com66 people

    Attacking NoSQL and Node.js: Server-Side JavaScript Injection (SSJS)

    MyNoSQL
    Publication · last shared 2016
    Markus Winanduse-the-index-luke.com171 people

    MongoDB is to NoSQL like MySQL to SQL - in the most harmful way

    Markus Winand
    Personal · last shared 2026
    Fauna Blogfauna.com70 people

    Demystifying Database Systems: An Introduction to Transaction Isolation Levels

    Fauna Blog
    Company · last shared 2025
    Percona Blogpercona.com327 people

    UUIDs are popular, but bad for performance (2019)

    Percona Blog
    Company · last shared 2026
    Small Datumsmalldatum.blogspot.com63 people

    The original LSM paper

    Small Datum
    Personal · last shared 2026
    Grafbase Bloggrafbase.com17 people

    Grafbase: Instant serverless GraphQL backends

    Grafbase Blog
    Company · last shared 2025
    Engine Yard Blogengineyard.com204 people

    The Number One Trait of a Great Developer

    Engine Yard Blog
    Company · last shared 2025
    PlanetScale Blogplanetscale.com211 people

    Generics can make your Go code slower

    PlanetScale Blog
    Company · last shared 2026