Book: Kotlin and Java to TypeScript Also by me: The TypeScript Library — the 5-book collection My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools Me: xgabriel.com | GitHub You joined a Node service. The first ticket says: make paymentService.charge resilient: circuit breaker, retry on 5xx, rate limit per merchant. On the JVM the an
Book: The TypeScript Type System — From Generics to DSL-Level Types Also by me: The TypeScript Library — the 5-book collection My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools Me: xgabriel.com | GitHub You open a drawing app. Draw a line, move it, draw another, change the colour. The second one was wrong, so Cmd+Z, and it vanishe
Book: TypeScript in Production Also by me: The TypeScript Library — the 5-book collection My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools Me: xgabriel.com | GitHub You have seen the shape of this incident before. A 500 lands in production. The frontend says "checkout failed". The Hono service that owns /checkout called the prici
Day 3: Voting, Sybil Attacks and Identity Day 3 was the first day that felt like actual software engineering rather than syntax tourism. The task: write a voting contract. Simple enough on the surface - until you start poking at the security model and realize the whole thing has serious gaps in its logic. What looked like a toy example turned out to be a good proxy for real system design problem
## INTRODUCTION Every blockchain application that handles value needs to answer the same question: how do you track who owns what? There are two dominant approaches, and choosing between them shapes your entire contract architecture. Contract-state accounting behaves like a bank ledger. A single smart contract holds a balance map, and transactions update entries in place. The UTXO model behaves li
I still remember the message. A developer on my team - sharp, careful - pinged me: "My Claude Code bill spiked $200 this week. Same workflow. Something's off." I had no answer. The built-in usage view showed session totals. The web billing page showed monthly aggregates. But neither could answer the only question that mattered: which specific turn ate the money? How do I improve the way I use Clau
Some time ago, I was building a chat application using AWS Websocket API gateway. Things were going smoothly. I created a WebSocket API Gateway, added $connect, $disconnect, and sendMessage/addGroup routes. From the frontend (React) side, everything was fire-and-forget. You send a message, and the onMessageHandler takes care of it 💪🏼 But then a new requirement of uploading files using S3 signed
Day 2: Access Control Counter.sol - a little better than "Hello World", right? The goal: write a simple Counter contract - increment, decrement, reset - // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Counter { uint256 public count; address public owner; constructor() { owner = msg.sender; count = 0; } function increment() public {