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
    J

    James Long

    jlongster.com · Personal blog · on HN since 2009

    James Long, a programmer, writes about JavaScript, React, async patterns, compilers and SQL in the browser.

    Visit blogHN submissions
    Web DevelopmentProgrammingLanguages & Compilers
    What HN says

    Commenters say he and a few others stay ahead of the industry, and they recommend his React and generators posts for learning concepts.

    Stats for nerds
    118HN people shared it
    139linked in comments
    9.6Kstory points
    Jun 2024last shared
    2010people per year2024

    Top posts on HN

    1. 1
      A future for SQL on the web
      15 people · 1K points · first shared 2021 · 218 comments on HN
    2. 2
      How I Became a Better Programmer
      2 people · 869 points · first shared 2017 · 146 comments on HN
    3. 3
      Removing User Interface Complexity, or Why React is Awesome
      22 people · 645 points · first shared 2014 · 219 comments on HN
    4. 4
      First Impressions Using React Native
      1 person · 539 points · first shared 2015 · 191 comments on HN
    5. 5
      A Prettier JavaScript Formatter
      1 person · 498 points · first shared 2017 · 153 comments on HN
    6. 6
      Presenting the Most Over-Engineered Blog Ever
      1 person · 378 points · first shared 2015 · 80 comments on HN
    7. 7
      Stop Writing JavaScript Compilers, Make Macros Instead
      5 people · 364 points · first shared 2014 · 145 comments on HN
    8. 8
      Starters and Maintainers
      2 people · 307 points · first shared 2015 · 79 comments on HN
    9. 9
      Why does the chromaticity diagram look like that?
      4 people · 293 points · first shared 2024 · 84 comments on HN
    10. 10
      Doing work locally minimizes problems with Electron apps
      2 people · 285 points · first shared 2019 · 241 comments on HN

    What HN people wrote when they linked it

    • posobinSep 2021

      Actually Ampie used to work differently: Ampie would store the local cache of links from your twitter feed and links submitted to HN, and check against it when you went to any web page. If there were hits, it would show a small tab in the bottom right corner, showing that there are N tweets, M HN submissions with this page. Then you could click on the tab and the sidebar would pop up, so no requests were sent until you actually clicked on the tab.

      There are two problems with this: first, the cache had to be large, several hundreds of megabytes, because there are a lot of links (~200k from HN, and each person I follow on average tweeted 1k links among the last 3k tweets that twitter lets me access) and indexeddb is not memory-efficient. Second, this is easy to miss, and those numbers alone don't give enough information to go through the effort of clicking there every time. And this doesn't include the backlinks and HN comments mentions (fun fact: there are about 4m URLs mentioned in HN comments), so you'd miss out on a lot of stuff. You could suggest Bloom filters as caches, but that is a bad solution since now you only can show if there is a hit or not (instead of two numbers), but also there are false positives so the sidebar is not reliable anymore, and given that you go to hundreds of URLs a day, the FP rate has to be really low which makes the cache really large. Maybe using something like https://jlongster.com/future-sql-web would have reduced the memory usage, but at…

    • skrebbelNov 2014

      I've been using this (v2, though) rather extensively the last few months so I figured I'd share some experiences.

      First off, it works great. The TypeScript definition file also works fine as an API documentation of sorts, although it would be nice if some web site with a clickable TOC could be generated from it.

      I was a little confused at the beginning how the "Sequence" base class (changed name to Iterable in v3) was an arbitrary key=>value mapping (with no apparent relation between the keys and the ordering of the key/value pairs) that I had expected would be called "Map". The name change made this clearer for me: it's basically an abstract interface, not a concrete datastructure.

      The TypeScript support, to my experience, does not work as advertised on the tin, especially when you nest data structures. For example, code like this compiles fine:

      var q = Immutable.Map<string, Immutable.List<number>>();
      q.set("hello", Immutable.List([1,2,3])); // typechecks until here
      q.updateIn(["hello", "wrong"], false); // shouldn't be possible, but is.

      Similarly, if you use Immutable.Record to build immutable objects, then you can still call set() with any key because the key is a string instead of something TypeScript could typecheck. Meanwhile, using direct property access on Immutable.Records, like this, will fail:

      var Banana = Immutable.Record({length: 0, colour: "yellow"});
      var someBanana = new Banana();
      someBanana.curve = 5.0; // should fail, but…

    • firasdMay 2016

      This is a very useful walkthrough.

      Some links for those who are also interested in "Thinking in React" in a more conceptual way (#4 is a presentation from the same person who wrote the walkthrough):

      1) React — Basic Theoretical Concepts: “A description of the conceptual model of React without implementation burden.” https://github.com/reactjs/react-basic

      2) Pure UI: “A lot has been written about the merits of React as a framework. Today I’m compelled to write about the benefits of a programming model it enables and its implications to the design and creation workflow." http://rauchg.com/2015/pure-ui/

      3) Removing User Interface Complexity, or Why React is Awesome: “I’m mostly concerned with the core problems of data binding and componentizing UIs. After much research and usage of the technologies mentioned above, I found React to provide the best solution.” http://jlongster.com/Removing-User-Interface-Complexity,-or-Why-React-is-Awesome

      4) Pete Hunt: React: Rethinking best practices (youtube): “building views with JavaScript, ‘re-​rendering’ your entire application when your data changes, and a lightweight implementation of the DOM and events.” https://www.youtube.com/watch?v=x7cQ3mrcKaY

      5) Nothing new in React and Flux except one thing: “What is it that makes React so innovative and compelling?… The Virtual DOM allows us to convert a mutable retained mode graphics API to an immutable functional immediate mode API.”…

    • kenOfYugenMar 2016

      > Generators are JavaScript's programmable semicolons. Lets not take away that power by taking away the programmability. Lets drop async/await and write our own interpreters.

      One of "our own interpreters" (i.e not standard in JS), that I am very fond of, is js-csp [1]. It's a replica of Clojure(Script)'s core.async, or Go's channels/goroutines. It uses ES6 generator functions underneath.

      James Long has written an excellent post about it [2].
      I find it to be the less taxing on the mind solution for coordinating complex asynchronous processes in JS, especially when paired with transducers [3].
      Furthermore, powerful Go/Clojure patterns can easily be re-used in JS.

      In conjunction with CoffeeScript, the code becomes elegant and straightforward since there is no 'function*' ugliness required.

      That's the least complex solution I have found to like the most. Performance and memory usage suffer a bit, but it's very straightforward to optimize if/when needed.

      [1] https://github.com/ubolonton/js-csp

      [2] http://jlongster.com/Taming-the-Asynchronous-Beast-with-CSP-in-JavaScript

      [3] http://jlongster.com/Transducers.js--A-JavaScript-Library-for-Transformation-of-Data

    • TheAceOfHeartsMay 2017

      Nice write-up. I've been popping my head on over to their project every few months to check out their progress. Something that's pretty cool is that they're using Flutter to write Fuchsia's UI [0].

      My favorite thing about Flutter is that it looks like they took some heavy inspiration from React. If anyone reading this isn't familiarized with React, or they don't really "get it", I'd highly suggest reading the Removing User Interface Complexity, or Why React is Awesome [1].

      One of the big problems with implementing a UI toolkit is having to re-implement everything relating to accessibility. Although it's totally understandable that they're still focusing on the core.

      Something I'd be interested in seeing is how Dart and Flutter might affect battery life. I'd expect the stock UIs to be pretty well optimized by now, but I have no idea how Dart stacks up in performance.

      [0] https://github.com/fuchsia-mirror/sysui

      [1] http://jlongster.com/Removing-User-Interface-Complexity,-or-Why-React-is-Awesome

    • jlongsterMar 2011

      Thanks! I haven't used Scheme in a while because I got tired of focusing so much on something without a big community. I want to get back into it though, specifically with game development. Checkout http://jlongster.com/ over the next couple months and I'll start posting again.

      Scheme is great but you should also involve yourself in a popular language with a big/fun community so you don't burn out. Seeing different perspectives is good anyway.

      Looks like iScheme came out after they backed off of their only Objective-C/C rule. So it should be fine, simply because it doesn't download any scripts. I think that's the only restriction now.

    Related

    Dan Abramovmedium.com/@dan_abramov101 people

    A response to “An experienced JavaScript dev’s account of learning React”

    Dan Abramov
    Personal · last shared 2025
    Overreactedoverreacted.io186 people

    Goodbye, Clean Code

    Overreacted
    Personal · last shared 2026
    James Hagueprog21.dadgum.com472 people

    Things That Turbo Pascal is Smaller Than

    James Hague
    Personal · last shared 2026
    James K Nelsonjamesknelson.com24 people

    Learn Raw React – No JSX, No Flux, No ES6, No Webpack

    James K Nelson
    Personal · last shared 2021
    Let's Code JavaScriptletscodejavascript.com23 people

    Let’s Code: Test-Driven JavaScript

    Let's Code JavaScript
    Personal · last shared 2022
    Isaac Schlueterblog.izs.me88 people

    A member of our community is missing, help find him

    Isaac Schlueter
    Personal · last shared 2026
    James' Coffee Blogjamesg.blog38 people

    Serving my blog posts as Linux manual pages

    James' Coffee Blog
    Personal · last shared 2026
    James Sinclairjrsinclair.com48 people

    What’s so great about functional programming anyway?

    James Sinclair
    Personal · last shared 2026