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
    L

    LShift Blog

    lshift.net · Company blog · on HN since 2008

    LShift, a software consultancy, blogged about programming topics including Python memory leaks, Erlang, Git submodules, and Forth ports.

    Visit blogHN submissions
    ProgrammingLanguages & Compilers
    What HN says

    HN commenters link it for its programming language design principles, Python memory leak tracing, a JonesForth port, and a write-up on running scientific code.

    Stats for nerds
    41HN people shared it
    48linked in comments
    415story points
    Aug 2016last shared
    2008people per year2016

    Top posts on HN

    1. 1
      Python quirks
      2 people · 120 points · first shared 2009 · 56 comments on HN
    2. 2
      Optimizing loops in C for higher numerical throughput and for fun
      1 person · 70 points · first shared 2013 · 50 comments on HN
    3. 3
      Memory matters, even in Erlang (2010)
      1 person · 63 points · first shared 2015 · 70 comments on HN
    4. 4
      Lunchtime hack: My cycling routes
      1 person · 16 points · first shared 2014 · 1 comments on HN
    5. 5
      Toy ray tracer in Python
      1 person · 15 points · first shared 2009 · Discussion on HN
    6. 6
      LShift is terrified by asynchronous libraries performance
      1 person · 14 points · first shared 2008 · 9 comments on HN
    7. 7
      Teaching programming, RUR-PLE, and Rurple NG (Python syntax for kids)
      1 person · 10 points · first shared 2009 · 1 comments on HN
    8. 8
      Is Twitter search really real time full-text search?
      1 person · 9 points · first shared 2009 · 1 comments on HN
    9. 9
      Implementing PubSubHubBub with RabbitMQ
      1 person · 8 points · first shared 2009 · 1 comments on HN
    10. 10
      Real-time updates to Meteor from Postgres
      1 person · 8 points · first shared 2013 · 1 comments on HN

    What HN people wrote when they linked it

    • MaulingMonkeyAug 2016

      I mostly just vacuum up a huge amount of material from as many sources as I can. My focus on game development might help here. A lot of it flows from understanding CPUs from a low level hardware perspective - you might be able to reverse engineer this kind of knowledge from the wikipedia articles, although I haven't tried doing so myself.

      E.g. the page for "CPU cache" references:

      - CPUs read/write by cacheline

      - Caches need to coordinate to avoid stale data through "cache coherence protocols" (which have a cost as mentioned on their own wiki page)

      "False sharing" is just the interplay of those two mechanisms in worst case scenarios and such corner cases.

      About the only time I've used this knowledge of false sharing has been when implementing a work-stealing task queue system. And I suppose the few times I've written a parallel for loop of some description.

      Trying to think of similar performance issues to guide you towards, a few come to mind:

      1) CPU caches are basically implemented as fixed sized hashmaps with a really poor hash - the address modulo some power of two, with a fixed limit of collisions supported.

      http://www.lshift.net/blog/2013/10/08/cpu-cache-collisions-in-the-context-of-performance/

      I've never actually used this knowledge, although I could see it coming up if I were working on the design of a database's in-memory storage or something.

      2) Reading "write combined" memory is really bad, including implicitly reading by failing to write entire…

    • aconbereJul 2008

      I'm not sure this is an either or proposition. I haven't seen many message queue protocols with tools for identity, user authentication, federation, etc. I'm also pretty sure that xmpp doesn't even begin to replace message queuing on the backend, but when you look at what folks like EngineYard are doing with it (basically distributing messages), it seems like the value for them was more along the lines of 1) easy ui integration, 2) well understood problems and tools by developers, 3) well understood servers by admins.

      More on the proposal of mixing the two, the rabbitMQ folks have done some interesting work integrating with xmpp. (See their xmpp transport (http://www.lshift.net/blog/2008/07/01/rabbitmq-xmpp-gateway-released), and rabbiter (http://github.com/tonyg/rabbiter/tree/master).

      So there we have an interesting mixture of the two technologies, you get the insanely fast message routing and throughput of RabbitMQ while leveraging the tools that xmpp brings with it (users, federation, etc.)

    • eatmyshortsDec 2014

      Remember that Meteor only just reached v1.0. There still is much to come from the platform. Redis support is being implemented currently, and shows great promise:
      https://groups.google.com/forum/m/#!topic/meteor-core/Jl5Jt739wdA
      Several people are working to integrate standard SQL support, too:
      https://github.com/numtel/meteor-mysql
      http://www.lshift.net/blog/2013/02/25/live-updates-to-meteor-from-postgres/

      It was a big concern at first for me, too. But the platform is so much fun to develop with I decided to start developing with it anyways. Seeing the pace at which things are developing with the platform, and knowing about these non-Mongo data store efforts, I am certain that this won't be a drawback for the platform for very long.

    • ljw1001Feb 2016

      Here's a few things I found myself, if anyone is interested:

      Book: MacLellan's Principles of Programming Languages. The principles are listed here: http://www.lshift.net/blog/2006/06/24/bruce-j-maclennans-programming-language-design-principles/

      Book: Masterminds of Programming. Interviews with the designers of many languages. Not all equally good.

      Papers and Media: History of Programming Languages, proceedings 1-3. The third one includes video. (Paywalled -need an ACM subscription) Many classic articles including Kay on Smalltalk, Richie on C, McCarthy on Lisp. Iverson on APL. More recent languages include Haskell, Self, Lua. Many obscure but interesting languages like ZPL, Beta, Modula, etc.

    • singularMay 2011

      rant warning...

      I tried racket but just could not get namespaces to work, and the tool I was using, ometa for scheme[1] did not want to work properly without them. I spent hours, asked on the chat, read the documentation, etc. but just could not get it working. It felt like a bad omen, and ever since I've unfortunately been put off the language. The whole response I got/the documentation treated the whole thing as 'well it's obvious - foobar the fargle', where 'foobar the fargle' just made no sense to me. Maybe just not clever enough for racket...

      /rant

      [1]:http://www.lshift.net/blog/2008/07/01/ometa-for-scheme

    • tonygMar 2009

      "This is largely for people that want to use HTTP as a message-passing protocol, but use it in a bi-directional manner between possibly NAT'd hosts."

      That is exactly it. You've got it.

      HTTP makes an almost ideal message passing protocol: it has a rich and battle-tested addressing model; it is asymmetric in a helpful way (really! the response codes are similar to ICMP messages, where the requests are similar to IP datagrams); it is widely supported and deployed; it is content neutral.

      It doesn't even have to be inefficient ;-) (http://www.lshift.net/blog/2009/02/27/streamlining-http)

    Related

    Lacking Rhoticitylackingrhoticity.blogspot.com15 people

    Implementing fork() on the Mill CPU (2014)

    Lacking Rhoticity
    Personal · last shared 2022
    Useless Factoruseless-factor.blogspot.com16 people

    Why not mmap?

    Useless Factor
    Personal · last shared 2015
    Twitch Engineering Blogblog.twitch.tv178 people

    Go’s march to low-latency GC

    Twitch Engineering Blog
    Company · last shared 2026
    PyPy Blogmorepypy.blogspot.com242 people

    Let's Remove the Global Interpreter Lock

    PyPy Blog
    Company · last shared 2024
    Joyful Bikesheddingjoyfulbikeshedding.com20 people

    What causes Ruby memory bloat?

    Joyful Bikeshedding
    Personal · last shared 2025
    Ian Bickingblog.ianbicking.org107 people

    Firefox Was Always Enough

    Ian Bicking
    Personal · last shared 2026
    Joe Damatotimetobleed.com39 people

    American Express fails miserably at basic security

    Joe Damato
    Personal · last shared 2022
    Codeship Blogblog.codeship.com138 people

    Crystal: Fast as C, Slick as Ruby

    Codeship Blog
    Company · last shared 2020