Work in progress: 82,651 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #4125

M

Mike Innes’s Blog

Personal blog · mikeinnes.github.ioprogrammingsystems

Mike Innes’s Blog is a personal blog at mikeinnes.github.io about programming and systems. Since 2016, 18 different Hacker News readers have linked it 24 times, most often “Iterate on It”. The last post was in 2022, but the archive is still widely read.

Visit the blog
24mentions?
18HN people?
2016–2021first – last linked?
Links on Hacker News per year · peak 8 in 2021

Most-linked posts?

  1. Iterate on It
    4 people · 5 mentions · first linked 2020-06-05
  2. Generic GPU Kernels
    3 people · 3 mentions · first linked 2018-07-17
  3. Generic GPU Kernels in Julia
    2 people · 3 mentions · first linked 2017-08-24
  4. Transducers and Effects
    2 people · 2 mentions · first linked 2020-07-05
  5. Taming the Tarpit
    2 people · 2 mentions · first linked 2020-07-19
  6. Recursive Self-Simulation (2017)
    2 people · 2 mentions · first linked 2017-11-16
  7. The Lazy List
    2 people · 2 mentions · first linked 2017-06-05

What Hacker News says?

  1. Building a relational lang ( https://github.com/Tablam/TablaM ) I allow myself to get derailed in how provide a nicer "linq/iterator" protocol that work inside rust and outside in the lang (so, how I write them in rust is close to what the user could write in the lang). The regular iterator protocol, as today in rust, make hard to do stuff like JOINS, GROUP BY and other fancy stuff (because you need to decompose the…

    Comment linking /2020/06/12/transducers.html

    on “Ask HN: What weird or hard problems are you trying to solve?”
  2. Submitted Generic GPU Kernels in Julia as a story · 157 points

    HN discussion
  3. > With your linked spiral code, I can't even really tell where the algorithm starts and where the setup code ends - which of course might easily be attributed to my unfamiliarity with Spiral ;) Heh, I've noticed that the setup code tends to come out longer than the actual kernels. It is inside `kernel = cuda`. Spiral is indentation sensitive like Python and F#. The stuff inside {} is just module creation, think of i…

    Comment linking /2017/08/24/cudanative.html

    on “The Spiral Language”
  4. Submitted Sorting a Billion Numbers with Julia as a story · 123 points

    HN discussion
  5. >GPU programming without macros looks like then take a peek at this: I'm not sure if you missed my examples, or if there is some other missunderstanding going on ;) GPU code in Julia works 100% without macros, but you are free to use them, so people do ;) Also, you can pretty much write the gpu kernels like pseydo code, not sure how much simpler it can get. With your linked spiral code, I can't even really tell wher…

    Comment linking /2017/08/24/cudanative.html

    on “The Spiral Language”
  6. Submitted Generic GPU Kernels as a story · 74 points

    HN discussion
  7. Indeed, the latter problem is the same as implicit traits. For the former, you can absolutely do it without having object-orientation or anything like that. Simply lower the iterator protocol to ``` itr = iterator(x) while (i = next(itr)) !== nothing # stuff end ``` Then `itr` can be mutable, even when `x` isn't. This is what most modern languages does, and it solves all the problems I mentioned, since the state is…

    Comment linking /2020/06/04/iterate.html

    on “What's bad about Julia?”
  8. Submitted Recursive Self-Simulation (2017) as a story · 4 points

    HN discussion
  9. Yeah. Mike's "Iterate on it" [1] is a real "what's bad" post, as is OP's. [1] https://mikeinnes.github.io/2020/06/04/iterate.html

    Comment linking /2020/06/04/iterate.html

    on “What's bad about Julia?”
  10. Submitted The Lazy List as a story · 4 points

    HN discussion
  11. Julia is great for numerical computing, but it's not as good as it can be, even in that area. Widening the community's base of expertise will help. I'll just list a few things that come to mind. Many Base functions are currently untyped, which means it's hard to abstract out the key properties that enable reuse, compiler optimizations, and parallelism. See [0] for a language expert's take on numerical computing, whi…

    Comment linking /2020/06/04/iterate.html

    on “From Julia to Rust”
  12. Submitted The Many Types of Types (In Julia) as a story · 3 points

    HN discussion
  13. Just complementing the other reply, there is a small article about how you can implement a source to source AD in Julia [1]. Basically Julia has a special type of macro called generated function [2] which instead of executing during the AST lowering phase (when the compiler still didn't evaluate the symbols) it executes during the final step of compilation (when type inference already ran and you have all the exact…

    Comment linking /IRTools.jl/latest/

    on “Differentiable Programming Mega-Proposal”
  14. Submitted Iterate on It as a story · 2 points

    HN discussion
  15. What’s the difference of NuMBA CUDA and Pytorch or similar? If you’re doing custom kernels you should take a look at the Julia library CuArray [1] and generic kernels [2]. I really like that I don’t have to dig into C++ and deal with all of the memory and kernel management. 1: https://github.com/JuliaGPU/CuArrays.jl 2: http://mikeinnes.github.io/2017/08/24/cudanative.html

    Comment linking /2017/08/24/cudanative.html

    on “CuPy – NumPy-compatible matrix library accelerated by CUDA”
  16. Submitted Transducers and Effects as a story · 2 points

    HN discussion
  17. Coincidentally enough I'm neck deep in this area for the last month (I haven't read this paper but I've read others from the group). There are a bunch of things around this that are related and look vaguely the same: abstract interpretation, staged execution, symbolic execution and partial evaluation. I'll give a use case (the use case I'm interested in) that might help to illustrate the point: dynamic neural nets.…

    Comment linking /2020/07/29/mjolnir.html

    on “Staged Abstract Interpreters [pdf]”
  18. Submitted Generic GPU Kernels in Julia as a story · 2 points

    HN discussion
  19. Submitted Taming the Tarpit as a story · 2 points

    HN discussion
  20. Submitted Taming the Tarpit as a story · 1 points

    HN discussion
  21. Submitted Taming the Tarpit; a Forth-to-Brainfuck Compiler as a story · 1 points

    HN discussion
  22. Submitted Iterate on It as a story · 1 points

    HN discussion
  23. Submitted Can the Universe Simulate Itself? as a story · 1 points

    HN discussion
  24. Submitted Exploring Lazy Evaluation with Julia as a story · 1 points

    HN discussion

Search all of HN for mikeinnes.github.io

Linked by the same people?