Top all-time · #4125
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.
Most-linked posts?
- Iterate on It4 people · 5 mentions · first linked 2020-06-05
- Generic GPU Kernels3 people · 3 mentions · first linked 2018-07-17
- Generic GPU Kernels in Julia2 people · 3 mentions · first linked 2017-08-24
- Transducers and Effects2 people · 2 mentions · first linked 2020-07-05
- Taming the Tarpit2 people · 2 mentions · first linked 2020-07-19
- Recursive Self-Simulation (2017)2 people · 2 mentions · first linked 2017-11-16
- The Lazy List2 people · 2 mentions · first linked 2017-06-05
What Hacker News says?
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?”Submitted Generic GPU Kernels in Julia as a story · 157 points
HN discussion> 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”Submitted Sorting a Billion Numbers with Julia as a story · 123 points
HN discussion>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”Submitted Generic GPU Kernels as a story · 74 points
HN discussionIndeed, 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?”Submitted Recursive Self-Simulation (2017) as a story · 4 points
HN discussionYeah. 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?”Submitted The Lazy List as a story · 4 points
HN discussionJulia 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”Submitted The Many Types of Types (In Julia) as a story · 3 points
HN discussionJust 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”Submitted Iterate on It as a story · 2 points
HN discussionWhat’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”Submitted Transducers and Effects as a story · 2 points
HN discussionCoincidentally 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]”Submitted Generic GPU Kernels in Julia as a story · 2 points
HN discussionSubmitted Taming the Tarpit as a story · 2 points
HN discussionSubmitted Taming the Tarpit as a story · 1 points
HN discussionSubmitted Taming the Tarpit; a Forth-to-Brainfuck Compiler as a story · 1 points
HN discussionSubmitted Iterate on It as a story · 1 points
HN discussionSubmitted Can the Universe Simulate Itself? as a story · 1 points
HN discussionSubmitted Exploring Lazy Evaluation with Julia as a story · 1 points
HN discussion