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

    Joe Nelson (begriffs)

    begriffs.com · Personal blog · on HN since 2014

    Joe Nelson writes long technical posts on Vim, PostgreSQL, C programming, concurrency, and good technical books.

    Visit blogHN submissions
    ProgrammingDatabases
    What HN says

    Commenters link it for its book lists, such as linear algebra, and for a post on user-defined ordering in SQL using rationals.

    Stats for nerds
    81HN people shared it
    141linked in comments
    6.4Kstory points
    Jul 2024last shared
    2015people per year2024

    Top posts on HN

    1. 1
      History and Effective Use of Vim
      6 people · 775 points · first shared 2019 · 218 comments on HN
    2. 2
      User-defined Order in SQL
      5 people · 477 points · first shared 2018 · 134 comments on HN
    3. 3
      SQL Keys in Depth
      2 people · 435 points · first shared 2018 · 170 comments on HN
    4. 4
      C Portability Lessons from Weird Machines
      2 people · 424 points · first shared 2018 · 117 comments on HN
    5. 5
      Concurrent Programming, with Examples
      5 people · 337 points · first shared 2020 · 88 comments on HN
    6. 6
      Good books for deep hacks
      5 people · 304 points · first shared 2017 · 46 comments on HN
    7. 7
      Going “Write-Only”
      1 person · 230 points · first shared 2015 · 140 comments on HN
    8. 8
      Practical Guide to SQL Transaction Isolation
      1 person · 230 points · first shared 2017 · 42 comments on HN
    9. 9
      The real responsive design challenge is RSS
      1 person · 221 points · first shared 2016 · 108 comments on HN
    10. 10
      Making 20% Time Work
      1 person · 214 points · first shared 2016 · 133 comments on HN

    What HN people wrote when they linked it

    • dmixJul 2017

      > Second, the Serpent language is untyped. It allows any operation to be performed on any data. Every value is a 256-bit sequence which can be used as an address, a contract, an integer, or an array.

      I normally dislike people who criticize startups for not being perfect from day one and understand it takes iterations and a wide audience to get things right. But this isn't a normal startup and security was an obvious big piece of the puzzle from day one. Their reputation and developer adoption will depend on it.

      Why doesn't the primary Ethereum language have types? This is basic stuff if you're trying to reduce bugs from the outset.

      From my understanding they wanted the language to be as accessible as JS... but even JS developers are all converging on types via TypeScript, Flow, and Babel plugins like babel-typecheck. It's basically an accepted requirement of "5th-gen languages"... let alone for language-based interfaces to security focused systems.

      Immutability seems like another obvious choice here for catching errors at compile time and forcing careful design considerations.

      Also the language should have a (typed) Quickcheck implementation that hammers each function with random data to check for breakage... and it should be documented as standard practice. https://begriffs.com/posts/2017-01-14-design-use-quickcheck.html

      The fact Tevos is built with OCaml and is focused on code safety/verification gives me hope there is some sanity in the cryptocurrency marketplace.…

    • arp242Feb 2024

      A good faith look at V is that it's very much a work-in-progress, and that at times the documentation is "aspirational" rather than "factual". I'm reminded by an remark from Bill Joy in an old interview talking about writing vi: "I wrote manual pages for all the great features we were going to do but never implemented".[1] We've all done that, right? I certainly have, including in public projects.

      There's a lot to be said about the wisdom of publishing material like this, and it's fine to object. But phrasings like "they were able to lie in every sentence" do not sit well with me, especially since the bit that follows doesn't actually disprove the claims all that well. It's assuming the worst possible motivation (intentional deception) rather than the much more likely motivation (small team, tad too much enthusiasm, and perhaps at times, inexperience). I'm not entirely trusting the objectivity of an author who describes these sort of things as "lies". Even worse are things like:

      > He lies that coroutines work with IO. I’ll clarify that by working, I personally mean context switching when necessary, and not the fact that the program does not crash.

      So the functionality is correct, but not in a way the author would like it to, therefore it's a lie to claim it works. Eh? It's fine to criticize that the implementation isn't any good, of course, but employing such narrow definition of "works" and then calling someone a "liar" over it seems rather, eh, much.

      In short: not a…

    • thesuitonymJan 2021

      I get that you're just trying to get your software out there, but your modern features that email doesn't support are just wrong.

      >shared history
      Not if you have a mailing list, and then going off the record is as easy as removing the mailing list from the CC field.

      >markdown formatting
      This is an implementation failure, not really a fundamental problem with email. There is no reason that email clients don't support markdown, except that nobody has ever wanted it. There was someone who made a utility to switch markdown to regular MIME email, but just as a proof of concept. It works.

      >Image previews
      I assume what you mean by this is an inline thumbnail that expands when you click on it? Again, there's nothing about email that prevents it, it's just the way email clients are. That could be fixed

      >emoji reactions
      Okay, that's fair, there's no way to do this in email, short of sending a single emoji back. On the other hand, I think everyone would agree that this is more of a nice to have feature, than a necessary one, and one that really only makes sense in the world of quick, back and forth chat programs.

      [1] https://begriffs.com/posts/2020-07-16-generating-mime-email.html

    • mhitzaJul 2024

      > But then still there is no oracle to predict whether user-supplied [RestrictedPython] code never halts; so, without resource quotas from VMs or Containers, there is unmitigated risk of resource exhaustion from user-supplied and developer-signed code

      This is actually something I was interested in a while ago, but in Scheme. For example GNU Guile has such a facility built in [0], though with a caveat that if you're not careful what you expose you could still make yourself vulnerable to DoS attack (the memory exhaustion kind). But if you don't expose any facility that allows the untrusted user to make large allocations at a time (in a single call) you should be fine (fingers crossed). I don't see a reason why the same mechanics couldn't be implemented in Python.

      [0] https://www.gnu.org/software/guile/manual/html_node/Sandboxed-Evaluation.html

      Edit: in some sense this restricted python stuff also reminds me of Safe Haskell (extension) [1], which came out a bit ahead of it's time and by this point almost forgotten about. Might become relevant again in the future.

      [1] https://begriffs.com/posts/2015-05-24-safe-haskell.html - better overview than the wiki page

    • wz1000May 2017

      Cont stands for Continuation. A continuation basically represents a 'suspended' computation with an intermediate result of type 'a' and final result of type 'r'

      type Cont r a = (a -> r) -> r

      Cont is a type constructor that takes two type arguments, r and a. This means that Cont r a can always be substituted by (a -> r) -> r. For example, Cont String Int is equivalent to (Int -> String) -> String

      (a -> r) is the type of a function from a to r. For example, Int -> Bool is the type of a function from Int to Bool. (a -> r) -> r is the type of a function that takes a function from (a -> r) as its argument and returns an r. So Cont String Int takes a function from Int to String as its argument and finally returns a String.

      http://www.haskellforall.com/2012/12/the-continuation-monad.html
      https://begriffs.com/posts/2015-06-03-haskell-continuations.html

    • gloglaMay 2015

      Just today I read about postgrest[1], REST-like API for postgresql.

      While it is not REST by what this cookbook says (it uses JSON), it provides very different view at how API should work.[2]

      Postgrest versions the API using HTTP accept header. It provides "pagination" not using XML attributes, but using HTTP range headers, as the standard allows to specify partial content in items, not just in bytes. The author also suggest that deeply nested URLs are a bad idea, because most data (like relational data) is actually flat.

      It might provide interesting "second opinion" to what this cookbook says. It doesn't say anything about transactions,

      [1]: https://github.com/begriffs/postgrest
      [2]: http://begriffs.com/posts/2014-12-30-intro-to-postgrest.html

    Related

    Bryan O'Sullivanserpentine.com49 people

    Github is making me feel stupid(er)

    Bryan O'Sullivan
    Personal · last shared 2021
    Piers Cawleybofh.org.uk16 people

    Running a Bakery on Emacs and PostgreSQL

    Piers Cawley
    Personal · last shared 2024
    Aphyraphyr.com551 people

    Hexing the technical interview (2017)

    Aphyr
    Personal · last shared 2026
    Joe Duffyjoeduffyblog.com147 people

    15 Years of Concurrency

    Joe Duffy
    Personal · last shared 2026
    Rob Coneryrob.conery.io50 people

    RethinkDB 2.0 is amazing

    Rob Conery
    Personal · last shared 2021
    Scattered Thoughtsscattered-thoughts.net186 people

    Against SQL

    Scattered Thoughts
    Personal · last shared 2026
    Chris Wellonsnullprogram.com295 people

    Why Aren't There C Conferences?

    Chris Wellons
    Personal · last shared 2026
    Jasper Van der Jeugtjaspervdj.be62 people

    Turnstyle – An esoteric, graphical functional language

    Jasper Van der Jeugt
    Personal · last shared 2026