Sign in

Sebastien Guillemot

@sebastiengllmt.bsky.social
349 followers 147 following 67 posts

Co-founder of @PaimaStudios / @dcspark_io Focus: game development & cryptography

PostsRepliesMedia
Sebastien Guillemot @sebastiengllmt.bsky.social · 09/06/2025
Recently thinking that maybe game engines should ship default terminal multiplexer configs Lots of times running the engine requires setting up multiple terminal window and it would be nice to have some pre-configured Experimenting with this idea for our engine
200
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
These projects continue to evolve over time Mina working to solve the data issue in very clever ways (future thread/video) Midnight has some interesting R&D on function composition So I'm excited to see both continue to grow!
010
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
So both Mina and Midnight provide similar functionality But they implement it very different ways, both with trade-offs! They're both cleverly engineered, which is why we've followed both of them closely 👍
110
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
Midnight, by thinking of data & variables as the primitive (instead of function composition), makes it easy to write data-heavy apps! You can build - games (secret information) - RWAs (only reveal regulatory-relevant info) - DeFi (don't reveal your position right away) and more
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
When a user wants to update the public state, they ✖ don't reveal their private state ✅do prove something happened in their private state to allow them to update the public state ex: prove you did something to earn 50 points (not revealing it's because you built a building)
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
For example, you can represent a strategy game as some small amount of public information (ex: points, etc.) And players have some private state (their position in the map, how much gold they have, etc.)
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
(3) Midnight Midnight, instead, keeps track of a public chain (a bit more similar to Bitcoin) However, each user in Midnight has their own private state that is never shared with the rest of the blockchain
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
Need data? You need to fetch it from elsewhere (ex: somebody whose node kept a backup) You can still prove the data somebody gives you is correct (since you know the latest block, aka what the end result should be) but it makes data-heavy dApps on Mina bit hard to build
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
However, I skipped an important part: what happens to the data of smart contracts? Unlike public blockchains, the data is not kept around in the blocks! Everything just gets compressed into a proof
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
So in Mina, by just a very simple concept of modelling ZK proofs of "functions" that you can "compose" we automatically are able to build this super succinct blockchain like we wanted!
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
Transactions are combining proofs of multiple functions Blocks are just combining proofs of multiple txs A blockchain is just combining proofs of multiple blocks!
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
Note that functions can call other functions (function "composition") In our example, to prove "foo", we need to prove "bar" first but remember: we know how to combine proofs together! So combining the proof of "bar" into a proof of "foo" is easy!
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
But how do we generate ZK proofs of smart contracts? Well, you can think of smart contracts as a list of functions So all we really need is a way to generate "proofs" of a function (which, fortunately, is a very well studied problem with known solutions)
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
As we saw earlier, we can combine proofs So this means we can now combine everything into just a single proof of the genesis block to the latest block!
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
(2) Mina Similar to how we "proved Waldo exists", what if we instead "prove" there exists a block transitions AKA, given block A, prove there exists some set of transactions that give you block B as a result Now, ever transition is a ZK proof
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
(1) Regular chains If you want to know the state of Bitcoin, you often need to sync the full Bitcoin blockchain to get full security However, this takes a lot of space on your device which isn't ideal. It's worse on chains like Ethereum, and even worse on Solana
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
We'll explain how Mina & Midnight use these in three steps: 1. How do regular chains work 2. How does Mina work 3. How does Midnight work
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
Mina & Midnight both use a technique called "recursive SNARKs" that allows you to combine proofs together Conceptually, you can think of revealing you know the location of multiple Waldos across different pages at the same time
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
This gives you a way to show two things: 1. Privacy: you know where Waldo is (without revealing to your friend, as they can't see the rest of the book other than your small hole) 2. Compression: You've proven Waldo exists by only showing a small amount of info (a small hole)
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
To show both are possible, imagine a "Where's Waldo" game How to prove to your friend you found Waldo without spoiling the game for them? Answer: Cover the entire book with a big sheet of paper, and cut a small hole exactly where Waldo is
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
"ZK" stands for "Zero Knowledge Cryptography". It's a technique that gives you at least one of two things: - Private computation (required for RWA, gaming, some DeFi apps) - Massive compression (useful for L2s, bridges, data-heavy use-cases) Midnight & Mina give both
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 02/02/2025
You've probably heard about Midnight and Mina multiple times But what are they? How do they give privacy? How can they connect to other chains? Why are they exciting? I cover it all in my latest video + thread ↓ www.youtube.com/watch?v=3vW-...
youtube.com
Midnight & Mina: what makes them interesting ZK chains?
YouTube video by Sebastien Guillemot
161
Sebastien Guillemot @sebastiengllmt.bsky.social · 12/01/2025
every time I find a project I'd be interested in leveraging > please don't be written in some bs language > please don't be written in some bs language > please don't be written in some bs language the project's Github page
000
Sebastien Guillemot @sebastiengllmt.bsky.social · 13/12/2024
Made my first PR to @opentelemetry.io ! github.com/open-telemet... Used this to build a Javascript-based log collector so that you don't need to run a docker contain just to aggregate logs on dev builds
github.com
refactor(otlp-transformer): json schema based validation by SebastienGllmt · Pull Request #5265 · open-telemetry/opentelemetry-js
Which problem is this PR solving? The goal of oltp-transformer is to provide JS-friendly (de)serialization logic for traces, metrics and logs However, currently, there is no deserialization logic (...
050
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
It was super fun to learn about color theory, and very satisfying that it tied multiple fields of math together with delightfully surprising results Hope you enjoyed reading this as much as I enjoyed writing it!
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
I've published the Javascript code to generate colors like this yourself for your own tools entirely free and open source! (on both NPM & JSR) www.npmjs.com/package/mate...
npmjs.com
material-chalk
Generate beautiful colors from namespaces based on color theory. Latest version: 1.0.2, last published: an hour ago. Start using material-chalk in your project by running `npm i material-chalk`. There...
200
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
This means that every color generated by our tool can also be used to generate a great Material Design color scheme ! This makes it super easy to have not just one color per system in your app, But even generate colorful dashboards and subcomponents that feel color-aligned!
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
Material Design has a recommendation for which color to use to create your color palette: its saturation should be above "48" and for brightness 68,69,70 no matter which color you pick, there exists a choice with saturation above 48🤯
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
In fact, brightness levels 68, 69 and 70 are the only brightness levels with a special property! Many Anrdoid apps and websites use a design system called material design created by Google It allows creating beautiful color schemes for your app on a color (ex: your brand color)
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
Great! So now we know which brightness to pick! and it gives us these beautiful colors, all while having a consistent brightness!
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
So fast forwarding with some math details, it means we can use this fact to compute the entropy of every brightness level which gives the graph below, and we can see brightness=69 maximizes entropy! And remember, max entropy → closet to the uniform distribution from earlier!
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
How is this related? For a given brightness (ex: below), how likely is a color to be red? (it's probability) Well it's represented by this simple division number of red colors ---------------------- total number of colors
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
In probability, there is another concept you've probably heard of: entropy It measures the uncertainty in the state of a system Perhaps intuitively, the uniform distribution maximizes uncertainty! (every result is as likely as another, so who knows what will happen!)
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
To answer this, we'll have to pull out some math! You might remember from high school that you can map probabilities according to certain shapes (I promise this will be related) The simplest one is the uniform probability: all elements are equally likely to occur
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
Fortunately (and really unexpectedly!) some brightnesses are almost perfectly distributed! This means that for these brightnesses, no matter which color you pick, you can get a really nice-looking version of it But which brightness is the most distributed?
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
Great! But the animation shows us another glaring issue: some brightnesses have more colors than others! This is really bad for us, because it means if we want to pick a bright color, we basically only have the choice between yellow and green
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
Fortunately, people have done the research! In fact, Google wrote a color scheme called HCT (hue, chroma, tone) that is based entirely on human-perceived brightness Using this, I generated an animation from Google's data that now groups colors by perceived brightness👍
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
Well, what if you instead combine colors with how bright they are? It turns out this is hard! Colors like blue are seen by humans are "darker" than yellow This means you need to study how humans perceive brightness😅
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
One solution could be to give every chain its own color! But how do you give each chain its own random color? Picking colors at random has poor contrast (hard to read) and is jarring because of different brightnesses used (Example of a bad case attached below. Looks terrible!)
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
I often work on apps that span multiple systems It means I often have to debug apps across many systems at the same time 😔 It's not easy to find information among all the text! But what if you could add color?
100
Sebastien Guillemot @sebastiengllmt.bsky.social · 01/12/2024
Sidequest Sunday: I wrote a library to generate beautiful colors from namespaces based on color theory I call it material-chalk because all namespaces actually get a full Material Design compliant color scheme! It turns out the math is super interesting with a really great final result! ↓
181
Sebastien Guillemot @sebastiengllmt.bsky.social · 22/11/2024
Wake up babe a new developer productivity update just dropped Deno now supports WASM as a first class citizen! This should save a lot of headaches for Javascript devs trying to use crypto libraries
0161
Sebastien Guillemot @sebastiengllmt.bsky.social · 21/11/2024
It didn't use to be! It slowly migrated to Rust over time
020
Sebastien Guillemot @sebastiengllmt.bsky.social · 20/11/2024
How it feels to work on wizardry combining multiple cryptographic techniques at once
040
Sebastien Guillemot @sebastiengllmt.bsky.social · 18/11/2024
Did you just follow me from my post on the other app? Probably a lot of you have few followers still, so post below to find each other ↓
13230
Sebastien Guillemot @sebastiengllmt.bsky.social · 18/11/2024
It doesn't feel particularly productive to have to redesign async/await from scratch every time you want to pull out generators to solve a problem
010
Sebastien Guillemot @sebastiengllmt.bsky.social · 18/11/2024
I'm a bit surprised there are no good Typescript libraries for dealing with generators I does feel maybe unsolvable given generators are coupled with the custom scheduler you want, but it feels like there should be a middle ground between nothing at all and something specific like redux-saga
140
Sebastien Guillemot @sebastiengllmt.bsky.social · 17/11/2024
I feel like early BlueSky vibes are pretty different than early Threads vibes Threads felt like a race to be the biggest degenerate possible since the algorithm liked that BlueSky definitely has a lot more serious posts
4183
Sebastien Guillemot @sebastiengllmt.bsky.social · 17/11/2024
Merkle Search Tree are unfortunately not a great CRDT if you care either about deletions or (similarly) checking for non-existence of an element
000
Sebastien Guillemot @sebastiengllmt.bsky.social · 17/11/2024
I wish tools to post on multiple platforms at once didn't cost a fortune
100