Skip to content

Instantly share code, notes, and snippets.

Quick Tips for Fast Code on the JVM

I was talking to a coworker recently about general techniques that almost always form the core of any effort to write very fast, down-to-the-metal hot path code on the JVM, and they pointed out that there really isn't a particularly good place to go for this information. It occurred to me that, really, I had more or less picked up all of it by word of mouth and experience, and there just aren't any good reference sources on the topic. So… here's my word of mouth.

This is by no means a comprehensive gist. It's also important to understand that the techniques that I outline in here are not 100% absolute either. Performance on the JVM is an incredibly complicated subject, and while there are rules that almost always hold true, the "almost" remains very salient. Also, for many or even most applications, there will be other techniques that I'm not mentioning which will have a greater impact. JMH, Java Flight Recorder, and a good profiler are your very best friend! Mea

Principled Meta Programming for Scala

This note outlines a principled way to meta-programming in Scala. It tries to combine the best ideas from LMS and Scala macros in a minimalistic design.

  • LMS: Types matter. Inputs, outputs and transformations should all be statically typed.

  • Macros: Quotations are ultimately more easy to deal with than implicit-based type-lifting

  • LMS: Some of the most interesting and powerful applications of meta-programming

@spacejam
spacejam / rr-with-rust.md
Last active March 7, 2025 17:31
using rr with rust

using rust with rr

rr is a great debugging tool. it records a trace of a program's execution, as well as the results of any syscalls it executes, so that you can "rewind" while you debug, and get deterministic forward and reverse instrumented playback. it works with rust, but by default if you try it out, it could be pretty ugly when you inspect variables. if this bothers you, configure gdb to use a rust pretty-printer

rr is probably in your system's package manager.

usage

@dexteryy
dexteryy / universal-js-monorepo.md
Last active September 29, 2022 21:26
A monorepo structure for large-scale Universal JS projects

The evolutionary path is: monolithic backend-web-framework-based repo -> multi repos with shared infra -> monorepo contains shared infra

The tool support is becoming matured (Yarn Workspace, VSCode's Multi Root Workspaces)

[monorepo]/
 ├── universal-js-app project for product A/
 │    ├── node_modules/
 │    ├── common/
@lattner
lattner / TaskConcurrencyManifesto.md
Last active April 24, 2025 04:40
Swift Concurrency Manifesto
kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pod