Most cited
Posts that commenters keep linking to, ranked by how many different people have cited them in Hacker News comments. 97 posts.
JEP 286: Local-Variable Type Inference
Enhance the Java Language to extend type inference to declarations of local variables with initializers.
The Holy Trinity: Logic, Languages, Categories (2011)
The Christian doctrine of trinitarianism states that there is one God that is manifest in three persons, the Father, the Son, and the Holy Spirit, who together form the Holy Trinity. The doctrine…
Shipping Rust code in Firefox
TL;DR: Starting with Firefox 48, Mozilla is shipping its first production Rust code, with more to come! Mozilla ❤ Rust It's hard to believe it's been almost seven years since ...
LL and LR in Context: Why Parsing Tools Are Hard (2013)
In my last blog entry LLand LR Parsing Demystified, we explored LL and LR parsers from ablack-box perspective. We arrived at a model for these parsers whereb...
A Rebuttal for Python 3
Zed Shaw, of Learn Python the Hard Way fame, has now written The Case Against Python 3. I’m not involved with core Python development. The only skin I have in this game is that I like Python 3. It’s a good language. And one of the big factors I’ve seen slowing its adoption is that respected people in the Python commu
LL and LR Parsing Demystified (2013)
My first adventures in parsing theory came when I was doing anindependent study of programming languages in college. When I got tothe part about algorithms s...
How undefined signed overflow enables optimizations in GCC
Signed integers are not allowed to overflow in C and C++, and this helps compilers generate better code. I was interested in how GCC is tak...
Teaching C
I was hoping you would mention the dynamic checkers, ASAN etc. My fear is people will start using these but not understand how to really use them properly. Since they’re dynamic checkers you really need a good testing harness and test cases to go with it. The bugs ASAN/TSAN etc catch are usually strange boundary…
Introducing .NET Standard
Questions? Check out the .NET Standard FAQ. You can find the latest version of the compatibility matrix here. In my last post, I talked about how we want to make porting to .NET Core easier. In this post, I’ll focus on how we’re making this plan a reality with .NET Standard. We’ll cover which APIs we […]
A practical introduction to functional programming (2013)
Many functional programming articles teach abstract functional techniques. That is, composition, pipelining, higher order functions. This one is different. I...
Vue 2.0 is here
Today I am thrilled to announce the official release of Vue.js 2.0: Ghost in the Shell. After 8 alphas, 8 betas and 8 rcs (a total…
Zero-Shot Translation with Multilingual Neural Machine Translation System
Posted by Mike Schuster (Google Brain Team), Melvin Johnson (Google Translate) and Nikhil Thorat (Google Brain Team)In the last 10 years, Google Tr...
Shrink Go binaries 7x with this one weird trick
Ok, I lied, there’s no weird trick. However, you can easily reduce a Go binary size by more than 6 times with some flags and common tools.
The Monad Challenges: Jump start your understanding of monads
There are still some rough edges here, and also a fair amount of content to be added. But if we waited until everything was polished before publishing, it would probably never happen. So feel free to make comments, suggestions, or contribute new content. As always, pull requests are the most desirable.
I don't understand Python's Asyncio
A little confession that I have no idea how asyncio works in Python 3.
PyPy gets funding from Mozilla for Python 3.5 support
"Python 2.x versus Python 3.x": this is by now an old question. In the eyes of some people Python 2 is here to stay, and in the eyes of oth...
Why is Python slow
In case you missed it, Marius recently wrote a post on the Pyston blog about our baseline JIT tier. Our baseline JIT sits between our interpreter tier and our LLVM JIT tier, providing better speed…
Reflections on Rusting Trust
The Rust compiler is written in Rust. This is overall a pretty common practice in compiler development. This usually means that the process of …
Announcing GenStage
GenStage is a new Elixir behaviour for exchanging events with back-pressure between Elixir processes. In this blog post we will cover the background that led us to GenStage, some example use cases, and what we are exploring for future releases.
How to implement a programming language in JavaScript
This is a tutorial on how to implement a programming language. If you ever wrote an interpreter or a compiler, then there is probably nothing new for you here. But, if you're using regexps to “parse” anything that looks like a programming language, then please read at least the section on parsing . Let's write less…
Non-Lexical Lifetimes in Rust
Over the last few weeks, I’ve been devoting my free time to fleshing out the theory behind non-lexical lifetimes (NLL). I think I’ve arrived at a pretty good point and I plan to write various posts talking about it. Before getting into the details, though, I wanted to start out with a post that lays out roughly how…
New Edition of “Programming in Haskell” Now Available
An extensively updated and expanded version of the best-selling first edition. Now covers recent and more advanced features of Haskell.