V
Viral Instruction
viralinstruction.com · Personal blog · on HN since 2021
A Julia programmer with a molecular biology background writes long posts on Julia, performance, and programming language design.
What HN saysCommenters call the "What's bad about Julia?" post lucid and measured, and recommend his post on union types versus sum types.
30HN people shared it
13linked it in comments
29stories submitted
1.1Kstory points
8 months agolast shared
2021people per year2026
Most-shared posts
- 1What's bad about Julia?9 people · 334 points · first shared 2021 · 316 comments on HN
- 2What scientists must know about hardware to write fast code6 people · 7 points · first shared 2021 · 2 comments on HN
- 3Julia's latency: Past, present and future5 people · 8 points · first shared 2023 · discussion on HN
- 4In defense of complicated programming languages4 people · 215 points · first shared 2022 · 370 comments on HN
- 5A look at the Mojo language for bioinformatics3 people · 170 points · first shared 2024 · 120 comments on HN
- 6Union vs. Sum Types3 people · 1 points · first shared 2024 · discussion on HN
- 7Asynchronous Programming in Julia2 people · 10 points · first shared 2025 · discussion on HN
- 8How to optimise Julia code: A practical guide2 people · 9 points · first shared 2022 · discussion on HN
- 9What's Great about Julia?2 people · 7 points · first shared 2022 · 1 comments on HN
- 10Julia's latency: Past, present and future2 people · 3 points · first shared 2023 · discussion on HN
- 11Review: Julia trimming for Advent of Code 20252 people · 3 points · first shared 2025 · discussion on HN
- 12The borrowchecker is what I like the least about Rust1 people · 258 points · first shared 2025 · 444 comments on HN
- 13You probably don't need to validate UTF-8 strings1 people · 78 points · first shared 2024 · 100 comments on HN
- 14What's Great about Julia?1 people · 1 points · first shared 2022 · discussion on HN
- 15Homepage1 people · first shared 2023
What HN people wrote when they linked it
zem · 2026-03-06
this post on union types versus sum types is worth a read (the tl;dr is that they both have their uses and one is not strictly better) https://viralinstruction.com/posts/uniontypes/
jakobnissen · 2023-07-04
https://viralinstruction.com/
It's mostly about Julia programming, though I originally intended for it to also be about molecular biology. Posts tend to be relatively long.
ModernMech · 2022-01-05
Very interesting post, thanks for sharing. Do you have a link to your project code? Your experience seems to be in line with this post I read recently: https://viralinstruction.com/posts/badjulia/
It's written by a Julia fan, so it's a very lucid and measured take on the not so great side of Julia.
sundarurfriend · 2025-01-12
The "feedback and answer" below the gist already covers a bunch of things I wanted to mention. So I'll skip those and only talk about the rest:
> You can't make it a CLI script, because it compiles the whole code WITH dependencies every time
The "with dependencies" part is mostly untrue nowadays, with constantly better pre-compiled caches for dependencies with every release. The overall issue of compile times getting in the way of interactive development still has some truth to it, but much less than the comment implies.
> https://viralinstruction.com/posts/badjulia/
1. The subheadings in the ToC are mostly based on comparisons with the best-in-class: for eg. "Julia can't easily integrate into other languages [compared to C]", "Weak static analysis [compared to Rust]".
2. Seeing this actually gave me hope about Julia's progress, based on how many of these issues have been largely mitigated or have been actively worked on in the last three years since the post.
3. As a side note, the author of the post is still an active user of and contributor to Julia, so I think this kinda falls under the "There are only two kinds of languages: the ones people complain about and the ones nobody uses" banner. As in, the complaints are there because they like and actively use the language enough to want it to be the best in every way.
> Even though Julia 1.6 was a lot faster than 1.5, it still took too long.
I agree - I think pre-1.9 Julia experience sucked, and overselling the…
ChrisRackauckas · 2023-05-02
> A major goal of Clang was to be a “compatible replacement” for GCC, MSVC and other existing compilers. It is hard to make a direct comparison, but the complexity of the Clang problem appears to be an order of magnitude bigger than implementing a compatible replacement for Python. The journey there gives good confidence we can do this right for the Python community
Is it though? For Mojo to be a compatible replacement for Python, it would need to match the Python C ABI and the greater set of the standard library in a bug-for-bug compatible way.
The real question is whether it's bug-for-bug compatible or whether it's not. Numerical functions have a lot of nuances that effect that performance quite a bit. Are they constrained so that Python numpy log(x) gives the same as Mojo log(x)? Will C bindings act the same way as in CPython? Whole list of related questions. If there is a no to any of these questions, then code acts subtly differently in a way that is sometimes hard to detect. These differences are of course what have held back "standard code" from being numba/pypy/etc. compatible in many instances.
That said, if the answer isn't yes to anything, then it is very difficult to make optimizations. Not allowing hard to optimize Python behavior is precisely what has allowed Numba, Julia, etc. to achieve accelerations. There were some attempts at that kind of thing with R, which Jan Vitek gives some very interesting talks about…
kibwen · 2026-02-01
Note that union types are not the same thing as sum types, even if they're somewhat similar. https://viralinstruction.com/posts/uniontypes/
affinepplan · 2025-02-22
there exist many high quality criticisms of Julia's type system, but this article does not contain them if I'm being totally honest. I think this writeup here https://viralinstruction.com/posts/badjulia/#the_type_system_works_poo… contains more valid gripes about the type system than the one you linked.
Archit3ch · 2024-11-23
> ...I still want that kind of system, but I expect it would fail catastrophically in the real world
Julia has its own version of the orphan rule called Type Piracy, which is merely discouraged instead of disallowed: https://viralinstruction.com/posts/latency/#a_brief_primer_on_invalida…
It's not a net gain, but rather a different tradeoff.
thetwentyone · 2024-03-03
This has been very helpful to me: https://viralinstruction.com/posts/hardware/#74a3ddb4-8af1-11eb-186e-4…
It’s really not specific to Julia, though the language does let you drill down into the details nicely.
adgjlsfhk1 · 2024-02-09
see https://viralinstruction.com/posts/mojo/. this compares a Rust parser that does some validation to a Mojo "parser" that doesn't do any.
jampekka · 2024-01-09
This is quite a good intro: https://viralinstruction.com/posts/badjulia/
lenkite · 2022-02-15
An opposing viewpoint on the issues of Julia from a user of Julia:
"What's bad about Julia?"
https://viralinstruction.com/posts/badjulia/
wbthomason · 2021-07-26
This is an interesting read, thanks!
I'm a bit surprised by https://viralinstruction.com/posts/badjulia/#julia_cant_easily_integra… - I've been considering embedding Julia (as opposed to LuaJIT) in a project I'm working on that requires fast, mostly numerical computation.
Based on https://docs.julialang.org/en/v1/manual/embedding/, this seemed fairly simple, and as though I could avoid repeatedly paying the compile time latency cost by just calling my embedded functions at least once before the performance-critical loop (to ensure that they're compiled). Is that not the case? There's definitely still the high memory overhead to consider, but (admittedly without having tried it yet), embedding Julia doesn't seem too terrible to do. Worse than e.g. compiling a shared object library or something, but not at all unreasonably hard.