JVM Internals (2013)
Explains the internal architecture of the Java Virtual Machine (JVM) in simple terms using showing key components and how memory is updated during execution.
Explains the internal architecture of the Java Virtual Machine (JVM) in simple terms using showing key components and how memory is updated during execution.
I still keep a couple of my favorite old smartphones. Sometimes I use one of them as my primary device for fun. Phones are among the fastest evolving markets, even a year makes a whole lot of differences. One of the biggest challenges with using old phones is the software: they don't run modern software. And old…
In the fall of 2016, I was a Teaching Fellow (Harvard's version of TA) for the graduate class on "Advanced Topics in Data Science (CS209/109)" at Harvard University. I was in-charge of designing the class project given to the students, and this tutorial has been built on top of the project I designed for the class.
This is the story of how I trained a simple neural network to solve a well-defined yet novel challenge in a real iOS app. The problem is unique, but most of what I cover should apply to any task in any iOS app. That’s the beauty of neural networks.
What I've been working on the last few years.
Introduction to modern Prolog
TL:DR; Java is still available at zero-cost , you just need to stop using Oracle JDK and start using an OpenJDK build, such as this one o...
I have written several books that use Python to explain topics like Bayesian Statistics and Digital Signal Processing. Along with the books...
Most widely-used programming languages have at least one regular conference dedicated to discussing it. Heck, even Lisp has one . It’s a place to talk about the latest developments of the language, recent and upcoming standards, and so on. However, C is a notable exception. Despite its role as the foundation of the…
Using graph theory and Ryanair route data to find cheap multi-city flight loops through Europe.
The goal of the numpy exercises is to serve as a reference as well as to get you to apply numpy beyond the basics. The questions are of 4 levels of difficulties with L1 being the easiest to L4 being the hardest.
There are several articles out there that talk about testing anti-patterns in the software development process. Most of them however deal with the low level details of the programming code, and almost always they focus on a specific technology or programming language.
Adventures in rendering the Moana island scene with pbrt, collected together for your convenience.
Rust in 2018: it's way easier to use!
technology as if people mattered
Some tips for how to be more productive in Rust by avoiding situations you cannot solve in Rust.
So there’s yet another iOS text crash, where just looking at a particular string crashes iOS. Basically, if you put this string in any system text …
You can find a PDF version of this blog post here . A weighted graph is a data structure consisting of some vertices and edges, and each...
When building a large scale, highly available and distributed system, what architecture concepts do you need to use, in practice? In this post, I am summarizing ones I have found essential to learn and apply when building the payments system that powers Uber. This is a system with a load
Let me preface this with an apology: this is a technology love story, and as such, it’s long, rambling, sentimental and personal. Also befitting a love story, it has a When Harry Met Sally feel to it, in that its origins are inauspicious…
The internet is full of dogmatic commandments for choosing and using keys in relational databases. At times it verges on a holy war: should you use natural or artificial keys? Auto-incrementing integers, UUIDs?
In the summer of 2006, I was lucky enough to be an intern at Google. At the time, Google had an internal tool called gsearch that acted as if it ran grep over all the files in the Google source tree and printed the results. Of course, that implementation would be fairly slow, so what gsearch actually did was talk to a…
A cheatsheet for moving efficiently in the CLI!
Originally published on my blog Industrial Empathy.
I participated in this year's js13kGames , a JavaScript game development competition with a file size limit of 13kb, including code, assets and everything else. My entry was Underrun , a twin stick shooter using WebGL.