Jose Storopoli, PhD

I make computers go brrr faster

Sherlock Holmes Final Letter: A Simple Dead Man's Switch in Rust

Sherlock Holmes fights Moriarty at the Reichenbach Falls Got state secrets? Or maybe 50 BTC? Don’t trust your government or lawyers? And you want to make sure that if you die, your secrets are passed on? Don’t worry, I got you covered. In this post, I’ll introduce you to a simple no-bullshit dead man’s switch written in Rust. Dead Man’s Switch According to Wikipedia: A dead man’s switch is a switch that is designed to be activated or deactivated if the human operator becomes incapacitated, such as through death, loss of consciousness, or being bodily removed from control....

March 23, 2024 · 8 min · Jose Storopoli

Seed Phrases and Entropy

Warning: This post has KaTeX enabled, so if you want to view the rendered math formulas, you’ll have to unfortunately enable JavaScript. In this post, let’s dive into a topic that is very important for anyone who uses the internet: passwords. We’ll cover what the hell is Entropy, good password practices, and how it relates to Bitcoin “seed phrases”1. Entropy Before we go into passwords, I’ll introduce the concept of Entropy....

February 11, 2024 · 9 min · Jose Storopoli

Cryptography Basics

Euclid’s one-way function Warning: This post has KaTeX enabled, so if you want to view the rendered math formulas, you’ll have to unfortunately enable JavaScript. This is the companion post to the cryptography workshop that I gave at a local BitDevs. Let’s explore the basics of cryptography. We’ll go through the following topics: One-way functions Hash functions Public-key cryptography DSA Schnorr Why we don’t reuse nonces? Why we can combine Schnorr Signatures and not DSA?...

February 5, 2024 · 19 min · Jose Storopoli

Fullstack and Progressive Web Apps in Rust: A Tale of a Sudoku Spyware

It all started when I had to accompany my mom to the hospital. It was just a routine checkup, but I had to wait for a few hours. I brought my laptop with me, since they have good WiFi and I could work on my projects. Then I realized that my mom was playing a Sudoku1 game on her phone. I couln’t help but notice that the game was full of ads and it was asking for a lot of permissions, like location and sensor data....

January 30, 2024 · 11 min · Jose Storopoli

htmx: an Oasis in a Desert of Soy

Warning: This post has mermaid.js enabled, so if you want to view the rendered diagrams, you’ll have to unfortunately enable JavaScript. I love to learn new things and I’m passionate about Stoic philosophy. So, when I acquired the domain stoicquotes.io1, I’ve decided to give htmx a try. What is htmx? htmx is a small JavaScript library that allows you to enhance your HTML with attributes to perform AJAX (Asynchronous JavaScript and XML) without writing JavaScript2....

January 14, 2024 · 7 min · Jose Storopoli

Testing Bayesian Models with Nix and GitHub Actions

I have an open access and open source1 graduate-level course on Bayesian statistics. It is available in GitHub through the repo storopoli/Bayesian-Statistics. I’ve taught it many times and every time was such a joy. It is composed of: a set of 300+ slides2 covering the theoretical part Stan3 models Turing.jl4 models Now and then I receive emails from someone saying that the materials helped them to understand Bayesian statistics. These kind messages really make my day, and that’s why I strive to keep the content up-to-date and relevant....

December 4, 2023 · 13 min · Jose Storopoli

Zero-cost Abstractions

In programming language circles there’s a recently trend of discussing a concept called zero-cost abstractions: the ability to use higher-levels abstractions without suffering any loss of performance. Zero-cost abstractions allows you to write performant code without having to give up a single drop of convenience and expressiveness: You want for-loops? You can have it. Generics? Yeah, why not? Data structures? Sure, keep’em coming. Async operations? You bet ya! Multi-threading? Hell yes!...

November 28, 2023 · 10 min · Jose Storopoli

Lindley's Paradox, or The consistency of Bayesian Thinking

Warning: This post has KaTeX enabled, so if you want to view the rendered math formulas, you’ll have to unfortunately enable JavaScript. Dennis Lindley, one of my many heroes, was an English statistician, decision theorist and leading advocate of Bayesian statistics. He published a pivotal book, Understanding Uncertainty, that changed my view on what is and how to handle uncertainty in a coherent1 way. He is responsible for one of my favorites quotes: “Inside every non-Bayesian there is a Bayesian struggling to get out”; and one of my favorite heuristics around prior probabilities: Cromwell’s Rule2....

November 22, 2023 · 10 min · Jose Storopoli

Word Embeddings

Warning: This post has KaTeX enabled, so if you want to view the rendered math formulas, you’ll have to unfortunately enable JavaScript. I wish I could go back in time and tell my younger self that you can make a machine understand human language with trigonometry. That would definitely have made me more aware and interested in the subject during my school years. I would have looked at triangles, circles, sines, cosines, and tangents in a whole different way....

November 19, 2023 · 5 min · Jose Storopoli

What is soydev? And why do I hate it

Let’s dive into the concept of “soydev”, a term often used pejoratively to describe developers with a superficial understanding of technology. I provide my definition of what soydev is, why is bad, and how it came to be. To counteract soydev inclinations, I propose an abstract approach centered on timeless concepts, protocols, and first principles, fostering a mindset of exploration, resilience in the face of failure, and an insatiable hunger for knowledge....

November 13, 2023 · 9 min · Jose Storopoli