[HN Gopher] The Untold Story of SQLite
       ___________________________________________________________________
        
       The Untold Story of SQLite
        
       Author : signa11
       Score  : 483 points
       Date   : 2021-07-03 01:49 UTC (21 hours ago)
        
 (HTM) web link (corecursive.com)
 (TXT) w3m dump (corecursive.com)
        
       | uDontKnowMe wrote:
       | Thanks Adam, I love the podcast!
        
       | wirthjason wrote:
       | Any good recommendations for books on SQLite?
       | 
       | I've never spent much time with SQLite directly. My main
       | interaction has been through Django and the ORM layer.
       | 
       | My day job uses a custom object database. While I'm familiar with
       | SQL and relational DB concepts I haven't worked heavily with
       | them.
        
         | jlelse wrote:
         | The SQLite website itself is pretty well written.
        
       | polyrand wrote:
       | For those who liked the podcast, I would also recommend this one:
       | 
       | https://softwareengineeringdaily.com/2015/11/13/sqlite-with-...
       | 
       | Dr. Richard Hipp is truly an inspiration.
        
       | unixhero wrote:
       | The story of SQlite was told by Dr Hipp himself a few years ago.
       | Great talk https://youtu.be/Jib2AmRb_rk
        
         | chasil wrote:
         | Thanks for that video.
         | 
         | Interesting to hear that SQLite is supported on the A350 for
         | life service life of the design.
         | 
         | And Microsoft contracting for changes for Windows 10 bundling?
         | That's shocking, considering how many small databases they have
         | developed or purchased over the years.
        
         | zerr wrote:
         | That was more like a marketing speech.
        
       | bob1029 wrote:
       | SQLite is the one technology that saved our software stack.
       | 
       | Back in 2016 we were struggling with management of separately-
       | hosted SQL Server instances (network, firewall, user accounts,
       | license, explaining shit to customers, etc.) Installing our
       | software in a new customer environment would take _days_ because
       | of all of the extra mechanics involved. There were 8+ other
       | windows services as well.
       | 
       | Fast forward to 2019 - We now use SQLite embedded inside the
       | application instance. The entire system has been collapsed into a
       | single binary distribution & service. Deploying our software to a
       | completely blank windows server involves emailing the customer a
       | ~120 megabyte zip file, asking them to extract it to C:\myapp and
       | run sc.exe install.
       | 
       | This shift in how we manage persistence of business data allowed
       | for us to salvage an otherwise completely lost ship. Our team is
       | still incredibly small (<10 employees), and we are responsible
       | for managing hundreds of customer environments. If we didn't have
       | a reliable, self-contained persistence mechanism that "just
       | works", we wouldn't have time to do anything else of value.
        
         | zepearl wrote:
         | > _...involves emailing the customer a ~120 megabyte zip
         | file..._
         | 
         | Hehe, nice test for their email servers & antivirus (which
         | probably wants to unpack it to see if any nasty payload is
         | included) :)
        
           | bob1029 wrote:
           | Good catch. To clarify - we email a link to the distribution
           | (somewhere in an AWS S3 bucket), not attach the actual zip
           | file. This would clearly be a nightmare for 99% of email
           | providers.
        
             | zepearl wrote:
             | Aha, that sounds a lot better, thx - indeed I was wondering
             | if nowadays common max email size increased a lot since I
             | set up my private email server ~10 years ago... :)
        
               | teddyh wrote:
               | The default maximum size for Postfix is still 10
               | Megabytes:
               | http://www.postfix.org/postconf.5.html#message_size_limit
        
         | dehrmann wrote:
         | I remember installing MythTV around 2003. They very strongly
         | insisted on backing it with MySQL, and it make it a lot harder
         | to set up and maintain. Unless a DB is serving multiple hosts,
         | something like SQLite really is the way to go. It also makes it
         | halfway easy to have a simple, single-host setup, along with a
         | path to a multi-host setup, since it's SQL (though you still
         | have to real with dialect quirks).
        
       | twotwotwo wrote:
       | > The 100% MCD [modified decision/condition coverage] tests,
       | that's called TH3. That's proprietary. I had the idea that we
       | would sell those tests to avionics manufacturers and make money
       | that way. We've sold exactly zero copies of that so that didn't
       | really work out.
       | 
       | That'd be an awesome contribution to open source, particularly at
       | a time that there's a lot of collective awareness of how hard it
       | is to secure C programs.
       | 
       | (There's probably still a business reason to keep it proprietary:
       | it's a reason for people to go to them for changes, at least if
       | they want the final product to be thoroughly tested. Alas, 'cause
       | it _would_ be cool to see.)
       | 
       | It's funny that he references preppers, survivalists, and
       | dependency on society near the end, when talking about writing
       | all of your own software dependencies. A while back someone
       | thinking about it from the _other_ end (i.e. saying we generally
       | should accept some dependencies) said almost exactly the same
       | thing in thread at
       | https://twitter.com/hdevalence/status/1214234305754329088 . I
       | draw no deep insight from this, but fun to see the same analogy
       | from two very different perspectives. (Kind of closing the
       | circle, the "let's be real about dependencies" article linked,
       | https://wiki.alopex.li/LetsBeRealAboutDependencies , mentions in
       | passing "SQLite is basically everywhere (for good reason)".)
        
       | andrewl wrote:
       | He says he's going to write his own mail server. I use SQLite all
       | the time, and I'm going to try Fossil when I get a bit of time to
       | dig into it. I will definitely give his mail system a look when
       | it's out.
        
         | desine wrote:
         | I use SQLite pretty frequently. I switched to Fossil (from
         | git). I'm happy. The overall architecture of having your repo
         | be a single binary stored in one location, and your working
         | directories being just working directories and not repos
         | themselves is a breath of fresh air. Branching seems a little
         | different, but my projects aren't big enough scope to have
         | encountered any hiccups.
         | 
         | I did it mostly for the built in project management (wiki, bug
         | tracking), and to get away from the big SaaS environments. But
         | the sqlite binary file repo sold me on the architecture
         | quickly.
         | 
         | Dr. Hipp is a fantastic software engineer and product designer.
         | Both SQLite and Fossil do what they need, have only the bells
         | and whistles needed, and have clean, consistent designs. I've
         | browsed the source for SQLite before, and it's also clean,
         | legible, and _quality_.
        
       | drummer wrote:
       | > Richard:It involves doing without. Here's warning to all your
       | listeners whenever a politician comes to you and says, "Oh, we're
       | going to take care of this problem for you." What they're really
       | saying is, we're going to take away some of your freedoms. The
       | exercise for you, here, is to figure out what freedoms they're
       | going to take away in order to solve this problem, and they're
       | often well-disguised, but yeah, if you want to be free, that
       | means doing things yourself.
        
       | pauljurczak wrote:
       | > DDG-79 Oscar Austin. That is a battleship
       | 
       | No, it is a destroyer, see
       | https://www.surflant.usff.navy.mil/ddg79/. Other than Hollywood,
       | no one had built a battleship since around the end of WWII.
        
       | agbell wrote:
       | Host Here. Thanks for sharing.
       | 
       | Richard is a great story teller and adventures that SQLite has
       | taken him on pretty interesting. I think he in on hn as well (
       | @SQLite).
       | 
       | One interesting thing I found about how SQLite is developed is
       | the amount of testing that is done. Between unit tests and
       | parameterized tests and fuzzer tests they are doing billions of
       | tests per release and spending days running them before each
       | release. I know I don't like to wait for a long CI build before I
       | deploy a service but something like SQLite needs whole different
       | category of resilience.
        
         | collaborative wrote:
         | Really enjoyed this. Is it possible to subscribe using an email
         | address? The subscribe page seems to ask for a bunch of apps
         | (Apple Podcast etc) that I don't use. Would be great to just
         | receive an email and listen on a browser
        
           | agbell wrote:
           | If you scroll to the bottom of the page and sign up for the
           | newsletter, I will email you whenever there is a new episode
           | out.
           | 
           | The newsletter will come out once a month when there is a new
           | episode and has a bit of personal take on the episode and
           | maybe some links to other things I've been up to.
           | 
           | If you just want a pure notification, I'm sure you could hook
           | the RSS feed up to an RSS to email service. Thanks for
           | listening!
        
         | radiator wrote:
         | Very good podcast, thank you. What I personally missed is a
         | question about the future plans for SQLite. Also about version
         | 4.
        
         | sigzero wrote:
         | He is on HN. It was a great segment.
        
           | agbell wrote:
           | Thanks for listening! I'm glad you enjoyed it.
        
         | not-my-account wrote:
         | Great podcast! I have been following it for a while. Can I ask
         | how ended up starting it?
        
           | agbell wrote:
           | CoRecursive started because I did some episodes as a host on
           | software engineering daily and it was lots of fun so I
           | decided to start one of my own. The first 4 episodes were
           | originally on software engineering daily.
           | 
           | Originally the idea was to give some platform to the areas of
           | computing I was interested in, heavy use of types and
           | functional programming but I think I really found my place as
           | a podcast when I started to focus on peoples stories. So
           | rather than tell me about SQLite, it is tell me about the
           | story behind creating SQLite.
        
             | iso8859-1 wrote:
             | You are so polite, I am impressed with your ability not to
             | push back on the interviewees. In this episode I would have
             | asked "would sqlite really be worse today if you hadn't
             | done your own VCS.". But I think I wouldn't be half as
             | successful as you, people don't wanna be implicitly
             | criticised by their interviewer :P
             | 
             | You are doing so great, favorite podcast by far!
        
               | neolog wrote:
               | I quite disagree. It's boring when they just say their
               | talking points. The guests are experts in their field,
               | they can handle some pushback and it would be much more
               | educational for the rest of us to hear the answers to the
               | questions we're really wondering about.
               | 
               | It doesn't have to be "implicit criticism", but an open
               | mind doesn't blindly accept stuff, ask for justification.
        
               | sitkack wrote:
               | The justification is where the story is, the tension and
               | relief. This is where you really learn from the
               | interview.
        
               | SQLite wrote:
               | > would sqlite really be worse today if you hadn't done
               | your own VCS.
               | 
               | Yes. Fossil is not only the VCS for SQLite, Fossil is
               | also built around SQLite. SQLite is a core component of
               | Fossil. Thus, when I am working on Fossil, I am forced to
               | interact with SQLite as a "user" instead of as a
               | "developer". In geek-speak, it forces me to "eat my own
               | dog food". This, in turn, prompts me to add needed
               | features to SQLite and more generally to make the SQLite
               | interfaces friendlier to application-developers.
               | 
               | One recent example: SQLite version 3.34.0 added the
               | ability to include two or more recursive terms in a
               | Recursive Common Table Expression. (See item 2 in
               | https://www.sqlite.org/releaselog/3_34_0.html and
               | subsequent links.) This feature was added specifically so
               | that I could more easily write SQL statements that would
               | walk the Fossil version history DAG, as described by the
               | https://www.sqlite.org/lang_with.html#rcex3 link.
               | 
               | I did not develop Fossil with this "dogfooding" idea in
               | mind. It was an unanticipated benefit of Fossil. But in
               | the end, I think it might have been the most important
               | benefit of using Fossil instead of some other VCS.
        
               | agbell wrote:
               | I'm glad you like the podcast! I do push back when
               | something doesn't sound right. I agree though that I
               | could have asked more about fossil. I really didn't look
               | into fossil that much when I prepared for the interview
               | so it was a bit of a blind spot for me.
               | 
               | Not included in the interview is a discussion we had
               | about types. I really think SQLite should be stricter in
               | enforcement of types and Richard doesn't buy it. I may
               | include it in a future bonus episode but the reason I cut
               | it was it didn't really include any details about story
               | of SQLite, it was just two people disagreeing about
               | types. I've done a lot of episodes about types in the
               | past and I wanted this to be about build SQLite, and not
               | about types.
        
             | candeira wrote:
             | I was wondering why the episodes on the corecursive feed
             | start at number 5.
             | 
             | I'll check your hosted episodes on Software Engineering
             | Daily now!
        
               | agbell wrote:
               | Thanks, I have interviews on software engineering radio
               | as well: https://www.se-radio.net/team/adam-gordon-bell/
        
         | macintux wrote:
         | Thanks, that really is a great conversation.
         | 
         | I'm going to have to dig to see if he describes somewhere why
         | Fossil is such a great fit for SQLite.
        
           | bch wrote:
           | Couple things:
           | 
           | * immutable
           | 
           | * built in first-class ticketing system
           | 
           | Happens to use SQLite as its storage engine too
           | (SQLInception?), which brings at least a couple (off the top
           | of my head) features:
           | 
           | * SQL is used to query things, which is very powerful
           | 
           | * the repository is a single SQLite file. Easy to store,
           | copy, and...
           | 
           | * one can checkout multiple working copies into various
           | directories. Or, in other words, I can have three discrete,
           | independent workflows happening simultaneously, but only one
           | copy of the repository backing them all.
           | 
           | It's also got a built-in server that you can use locally or
           | publish for remote people to access via their web browser
           | that's essentially GitHub-in-a-box.
           | 
           | Also... (kidding. I'm just going to stop here).
           | 
           | Edit: formatting
        
             | krylon wrote:
             | I've migrated to git for my personal projects, mainly
             | because magit (emacs frontend for git) is awesome.
             | 
             | But fossil is a pleasure to work with, especially on
             | Windows, because a) it comes as a single executable that
             | one can just copy to another machine, and b) it does not
             | require ssh or anything else to be installed.
             | 
             | The web interface is amazing, especially considering the
             | size of the executable file.
        
             | severak_cz wrote:
             | Fossil have much better command line IMHO. I even started
             | git wrapper to get rid of it's cryptic syntax.
             | 
             | [1]: https://github.com/severak/ginger
        
             | Cyph0n wrote:
             | Regarding the multiple working copies feature, sounds the
             | same as Git worktrees.
        
               | bch wrote:
               | I took a quick scan and: it might be analogous, yes. Not
               | sure if any subtlties apply.
               | 
               | The git workflow in the docs (https://git-
               | scm.com/docs/git-worktree) looks really clunky.
               | 
               | Here's what I do in fossil:
               | 
               | $ cd ~/work/project_x
               | 
               | $ fossil open ../fossils/projx.fsl (Edit, edit, edit)
               | 
               | $ fossil ci -m 'descriptive msg'
               | 
               | (Get an idea, but for whatever reason do not want to
               | disturb this directory)
               | 
               | $ mkdir ~/work/radical_idea
               | 
               | $ cd ~/work/radical_idea
               | 
               | $ fossil open ../fossils/projx.fsl <*note here there is
               | no sense of this being an inferior or "sub" checkout*>
               | (Edit, edit, edit)
               | 
               | $fossil ci -m "cool idea" --branch cool_idea # commit
               | work to new branch
               | 
               | (Test..)
               | 
               | $ fossil co trunk #switch branch back to trunk
               | 
               | $ fossil merge cool_idea #merges our work from cool_idea
               | branch into trunk branch
               | 
               | $ fossil ci -m 'merge [cool_idea] for radical new
               | feature'
               | 
               | $ fossil close # this working dir syncs everything
               | necessary to the repo (../fossils/projx.fsl) and is now
               | essentially "offline"
               | 
               | $ cd ..; rm -fr radical_idea
               | 
               | $ cd project_x (Note: this working directory now not a
               | tip of trunk anymore...)
               | 
               | $ fossil update # now up to speed (Continue hacking...)
        
               | vagrantJin wrote:
               | Seeing this makes me want to try out fossil now.
        
               | LukeShu wrote:
               | It looks to me like the main difference is that with Git
               | you can't have multiple worktrees on the same branch.
               | Apropos of your comment "Note: this working directory now
               | not a tip of trunk anymore...", to Git being on the tip
               | of a branch is a thing of note, so it doesn't ever want
               | to accidentally invalidate another worktree's notes about
               | being on the tip of a branch.
               | 
               | In Git, that'd be:                   $ cd
               | ~/work/fossils/projx.git              $ git worktree add
               | ~/work/project_x master # add a worktree with the
               | 'master' branch checked out              $ cd
               | ~/work/project_x
               | 
               | (Edit, edit, edit)                   $ git commit -m
               | 'descriptive msg'
               | 
               | (Get an idea, but for whatever reason do not want to
               | disturb this directory)                   $ git worktree
               | add ~/work/radical_idea -b cool_idea # add a worktree
               | with a new 'cool_idea' branch              $ cd
               | ~/work/radical_idea
               | 
               | (Edit, edit, edit)                   $ git commit -m
               | "cool idea"
               | 
               | (Test..)                   $ git switch master # whoops,
               | can't do this         fatal: 'master' is already checked
               | out at '~/work/project_x'              $ # let's just do
               | the merge in the other worktree, since we're about to
               | switch anyway              $ cd ~/work/project_x
               | $ git worktree remove ~/work/radical_idea # or: rm -rf
               | ~/work/radical_idea && git worktree prune              $
               | git merge cool_idea
               | 
               | (Continue hacking...)
        
               | masklinn wrote:
               | > < _note here there is no sense of this being an
               | inferior or "sub" checkout_ >
               | 
               | There is not in worktrees either. You can use worktrees
               | with a bare repository for instance. It's just that for
               | backwards compatibility and the convenience of most users
               | _a non-bare clone creates a default worktree_. That 's
               | exactly what you see if you `git clone` a repository then
               | `git worktree list`, a worktree corresponding to the
               | working copy.
        
               | smartmic wrote:
               | Here is a summary of similarities and differences on Git
               | and Fossil functionalities: https://fossil-
               | scm.org/home/doc/trunk/www/gitusers.md
               | 
               | Also quite interesting the general comparison:
               | https://fossil-scm.org/home/doc/trunk/www/fossil-v-
               | git.wiki
               | 
               | Both sites are written from Fossil guys, so they may not
               | be 100% neutral.
        
         | joeyh wrote:
         | I enjoyed this episode. I knew about all the tests before, but
         | what came clear in this interview is that Sqlite inc is using
         | their tests as a unique way to keep contracts on Sqlite
         | development flowing. Since they can test it so much better than
         | anyone else, it would be crazy not to hire them, rather than
         | hiring someone else to develop a patch.
         | 
         | While they're keeping those tests proprietary, and relatedly
         | have a closed development model, this strikes me as still
         | better than typical open core strategies for monetizing free
         | software, or at least pointing in better directions.
         | 
         | Agbell, since you're here, could I ask you add a standard link
         | to the RSS feed for your podcast?
         | 
         | <link rel="alternate" title="Corecursive"
         | type="application/rss+xml"
         | href="https://link.chtbl.com/corecursive?platform=rss" />
        
           | zinekeller wrote:
           | > Sqlite inc
           | 
           | Minor nitpick: technically, the primary company that supports
           | SQLite is an incorporated partnership named Hipp _[ed note:
           | yes, that 's Mr. Richard Hipp]_, Wyrick _[ed note: Hipp 's
           | wife]_ & Company, Inc. dba Hwaci (https://www.hwaci.com/).
        
           | agbell wrote:
           | Will do!
        
         | bsaul wrote:
         | That part really made me laugh. A few months ago, i developed a
         | wrapper in swift for sqlite on a project. A coworker of mine
         | had a bug on what sqlite returned, and i couldn't find anything
         | wrong. He told me "it has to be a bug on sqlite", and i said
         | "no, sqlite has no bugs... but i don't really understand what's
         | going on". And so we posted a bug report on the sqlite forums.
         | I told my friend "if you found a bug on sqlite, on your first
         | try, i'll buy you a bottle of champaign".
         | 
         | Of course, it was a bug with my wrapper (included a \0 char at
         | the end of strings).
         | 
         | I just forwarded him the link to your podcast, saying "we
         | really had no chance"
        
           | thechao wrote:
           | SQLite is a great way to find bugs in your fuzzer: if your
           | fuzzer finds bug, it's time to debug your fuzzer!
        
           | [deleted]
        
       | anoncept wrote:
       | What a lovely treat -- and how fascinating to learn about the
       | hidden role that DO--178B has played in this most ubiquitous of
       | programs!
        
         | eesmith wrote:
         | It makes me want to read DO--178B.
         | 
         | Hmmm, worldcat says the nearest library with a copy is several
         | hundred miles away. I wonder if I can ILL it...
        
       | alberth wrote:
       | I'd love it if Dr Hipp created a client/server db. He could call
       | it SQLMajor instead of SQLite :)
        
         | systems wrote:
         | or you can use postgresql
        
         | afiori wrote:
         | fun fact: the `ite` ending in SQLite is a reference to the
         | `ite` ending in minerals (granite, magnetite, pyrite,
         | bauxite...) so it is not a lightweight SQL but rather a rock-
         | stable SQL
        
           | yzombinator wrote:
           | This is very interesting!
        
           | Seattle3503 wrote:
           | Aight
        
           | exikyut wrote:
           | I don't care if this is canon or not, I like it enough that
           | this is mine now and I'm using it
        
             | divs1210 wrote:
             | you're going to mine some sqlite?
        
           | np_tedious wrote:
           | So have we all been saying it with the wrong emphasis?
           | 
           | Sequelite vs Sequel-lite
           | 
           | How does creator pronounce it in podcast?
        
             | sigzero wrote:
             | He pronounces it "ess-que-el ite".
        
       | beatthatflight wrote:
       | Bizarre, listening to the episode and then open this here!
        
       | krakov wrote:
       | > You couldn't just Google how to build a database
       | 
       | > Fortunately, I didn't know any experts and so I did it anyway
       | 
       | He obviously lives by a certain ethos of self-reliance so not
       | sure he would have talked to experts if could.
       | 
       | But makes me wonder: given it so easy now to find the experts
       | compared to 2000, to google what they think - it is easier to get
       | discouraged?
        
         | johannes1234321 wrote:
         | The question is: If he had asked experts early on, would he
         | have ended up less self reliant? And would we have gotten an
         | SQLite as good as it is now or would he have been told "oh
         | that's too complex" and be discouraged by experts? :)
        
       | GuB-42 wrote:
       | I remember in the early 2000s, I just got started with SQL and
       | one of my reaction was "SQL is great, but why do we need a
       | server? Why not use a simple library and files?" So I asked my
       | coworkers if such a thing existed. And I had a lot of reactions
       | along the lines of "it is stupid why do you want that? Just
       | install a server on localhost" few people were convinced. It
       | wasn't even a case of "nice idea, someone else should do it it",
       | I think people just associated SQL with servers and by being new
       | to it, I didn't have that preconceived idea.
       | 
       | A couple of years later sqlite was everywhere. It was exactly
       | what I had in mind (but with nowhere enough skills to do it
       | myself).
        
       | 1vuio0pswjnm7 wrote:
       | "I'm going to write my own mail server. I was making notes on
       | that even as we were setting up this call. That's a big problem,
       | and that's at least as difficult if not more difficult than
       | writing a database engine, but I don't want to be beholden to
       | Gmail. I don't want them controlling my destiny. I don't want
       | them controlling the record of all of my conversations. I want to
       | control that myself, and so I'm going to go through a lot of pain
       | and a lot of work and a lot of effort to come up with some
       | solution that I can control myself. I can go out and lease a
       | virtual machine out there in the cloud and run it myself and not
       | depend on a third party to control my email."
        
         | umbrellaguy wrote:
         | >I can go out and lease a virtual machine out there in the
         | cloud and run it myself and not depend on a third party to
         | control my email.
         | 
         | Emphasis here?
        
           | harry8 wrote:
           | Yeah.
           | 
           | Counter-argument moving vms to different providers, ips etc
           | is a lot more straightforward so maybe they don't "control"
           | your mail..?"
           | 
           | And a third way of looking at is every mail has two
           | endpoints. You don't control the server of who sent it to you
           | or who you send it to. Google does. So they still control
           | your mail..?
        
         | ddlutz wrote:
         | Does anybody have any insight into " at least as difficult if
         | not more difficult than writing a database engine"? It would
         | seem to me that a mail server would be much easier than a
         | database engine.
        
           | Lex-2008 wrote:
           | It might be difficult on a different level.
           | 
           | Dr.Hipp mentioned GMail bouncing email sent to him - but
           | hosting email yourself, will just move you to a different
           | side of the bounce - now GMail will be bouncing emails sent
           | by you! See, for example, first comments on the recent HN
           | thread here: https://news.ycombinator.com/item?id=27707857
           | (ctrl+f for "pain in the" if it's not the first one).
           | 
           | So it looks like convincing GMail to respect your small
           | server is a non-technical problem, which might be an issue
           | for a person with "only engineering" mindset. On the other
           | side, Dr.Hipp looks like a right person to try to convince
           | GMail to respect smaller mailservers!
        
             | flyinghamster wrote:
             | My own personal experience (with a server that has
             | SPF/DKIM/DMARC all set up, and not listed on public RBLs)
             | has been that GMail, Hotmail, Comcast, and Charter have not
             | been problems.
             | 
             | On the other hand, _AT &T_ is most definitely a problem.
             | They run their own internal RBL, and the best I can guess
             | is that they're blocking Linode. Any mail I send to an AT&T
             | customer gets bounced, and forwarding that bounce to the
             | address they indicate it should be sent to to get delisted
             | accomplishes nothing.
        
               | geocrasher wrote:
               | I have found that many RBL's block whole IP blocks owned
               | by various vendors. I believe this is why Linode and
               | others like Digital Ocean now block port 25 on VPSs and
               | make you beg for them to open it. Too many spammers.
               | 
               | This is also a good reason to keep a VPS even if you
               | aren't using it at the moment: it keeps the IP "clean" so
               | that when you put it back into use, it is useful, as
               | opposed to (possibly) some random IP that up until a
               | month ago was spammer central.
        
       | jokoon wrote:
       | So what are the advantages of using DB like mysql, postgre?
        
         | xet7 wrote:
         | At "Ask HN: Do you self-host your database?"
         | 
         | https://news.ycombinator.com/item?id=27671376
         | 
         | is this comment:
         | 
         | https://news.ycombinator.com/item?id=27673359
         | 
         | "We're currently transitioning from a multi-tenant 2TB postgres
         | DB hosted on AWS RDS to using sqlite instead, a separate
         | database for each client.
         | 
         | We're doing this for multiple reasons:
         | 
         | a) As our DB grew the service became very expensive, one of the
         | biggest items in our AWS invoice;
         | 
         | b) Keeping the PG servers up to date is a pain, we simply don't
         | have time for this;
         | 
         | c) We wanted to be able to migrate to other clouds and even be
         | able to offer a self-hosted version of our platform."
        
         | xet7 wrote:
         | SQLite was created, because client-server database Informix
         | (similar to MySQL and PosgreSQL) did crash and and was
         | unavailable to connect to. There are some edge cases where
         | MySQL/PostgreSQL can start vacuum, be corrupted, etc making
         | client/server database unavailable. SQLite is tested with
         | billions of test cases.
         | 
         | In interview:
         | 
         | "The idea for SQLite actually came out of his frustrations with
         | an existing database called Informix that was installed on a
         | literal battleship."
         | 
         | "Why do we even need a server? Why can't I pull this directly
         | off the disk drive? That way if the computer is healthy enough,
         | it can run our application at all, we don't have dependencies
         | that can fail and cause us to fail, and I looked around and
         | there were no SQL database engines that would do that, and one
         | of the guys I was working with says, "Richard, why don't you
         | just write one?" "Okay, I'll give it a try." "
        
         | tyrex2017 wrote:
         | access management, and scalability: can better do simultaneous
         | writes, and use several copies horizontally
         | 
         | BUT: you probably need 1k+ or 10k+ requests per second to start
         | getting advantages
        
         | hanche wrote:
         | Take a look at the link below, scroll down to the headline
         | "Situations Where A Client/Server RDBMS May Work Better".
         | 
         | https://sqlite.org/whentouse.html
        
       | MrBuddyCasino wrote:
       | > Here's warning to all your listeners whenever a politician
       | comes to you and says, "Oh, we're going to take care of this
       | problem for you." What they're really saying is, we're going to
       | take away some of your freedoms. The exercise for you, here, is
       | to figure out what freedoms they're going to take away in order
       | to solve this problem, and they're often well-disguised, but
       | yeah, if you want to be free, that means doing things yourself.
       | 
       | Easily the most important take away in this excellent interview,
       | but unfortunately, also the most contentious.
        
         | j-pb wrote:
         | So what you are saying is we should hold big petro, chemical,
         | and car companies accountable ourselves when they threaten
         | billions of lives through ecosystem collapse level polution and
         | climate catastrophe?
         | 
         | Great! Pick up a gun then!
         | 
         | Or maybe, the whole, "legislation is curbing everyones
         | freedom!" thing is just a lie, fed to you by the most wealthy
         | and powerfull to keep you from voting in a way that protects
         | your freedom, and curbs theirs.
        
       | cassepipe wrote:
       | Also to note : The fossil project contains a makeheaders.c file
       | that can be compiled as an executable. What it does is that it
       | scans all the .c files and the .h files you give it and generates
       | the necessary headers for each file. I am surprised it's the only
       | simple solution I could find for this purpose. I'm grateful not
       | to have to update .h files any more. Check out
       | https://www.hwaci.com/sw/mkhdr/
        
       | mrlonglong wrote:
       | Time I got myself a copy of this Art of Computer Programming
       | book. See if it can make me a better coder.
        
         | agbell wrote:
         | It's interesting that when I interviewed him, he has all these
         | built-it book cases behind him in his office. The idea of not
         | needing the internet but just occasionally grabbing a book from
         | behind you to look something up when developing software is
         | very appealing to me.
         | 
         | When I interviewed Brian Kernighan one of his complaints was
         | how so much of modern programming is just looking things up
         | rather than building things and I think that Richard has
         | escaped that fate by building things himself.
        
           | geocrasher wrote:
           | I really enjoyed those parts of each interview. They are very
           | well done.
        
           | mrlonglong wrote:
           | Before the internet, this is what we did. Read documentation
           | and books. Now it's just a matter of applying Google-fu. I
           | worry that this could be stunting our problem solving skills.
        
       | EMM_386 wrote:
       | > he managed to segfault every single database engine he tried,
       | including SQLite, except for Postgres. Postgres always ran and
       | gave the correct answer. We were never able to find a fault in
       | that. The Postgres people tell me that we just weren't trying
       | hard enough. It is possible to fault Postgres, but we were very
       | impressed.
       | 
       | This is impressive for Postgres.
       | 
       | SQLite is incredible. I've used it over the years in a variety of
       | important projects.
        
       | seibelj wrote:
       | SQLite is one of the finest pieces of software ever made. It's
       | one of those quiet innovations in the world that has multiplied
       | the advancement of society and the chattering classes have
       | absolutely no idea. I hope this story gets told more often, to
       | more people. Kudos to Dr. Hipp!
        
       | ridruejo wrote:
       | I had the opportunity to interact with Dr. Richard Hipp earlier
       | in my career. He's a wonderful human being.
        
       ___________________________________________________________________
       (page generated 2021-07-03 23:01 UTC)