Claudiu Ivan

@claudiu-ivan.com

The ghost was always in the machine. Now it needs tools. https://www.claudiu-ivan.com/

Aperture v0.1.9 is live and it adds dependent batch workflows. Capture values from one operation, interpolate them into the next. Chain API calls without writing glue code. Also: --auto-paginate, --body-file for large payloads, and binary size down to < 6 MB.

GitHub - kioku/aperture: Dynamic CLI generator for OpenAPI specifications designed for AI agents and automation

Dynamic CLI generator for OpenAPI specifications designed for AI agents and automation - kioku/aperture

github.com

The second edition of Designing Data-Intensive Applications, by myself and @chris.blue, is finished and sent off to the printers! Ebooks should be available in the next week, and print books in 3–4 weeks. Sigh of relief. 😅 (BTW, this is a good opportunity to support your favourite local bookshop!)

Book cover of "Designing Data-Intensive Applications, 2nd edition". It has a similar wild boar on the cover as the first edition, but it uses O'Reilly's new cover design, and the boar is now slightly colourised.

When I heard Mario Draghi say, “what began in fear must continue in hope,” I realized that we Europeans are in desperate need of a common purpose. EU has always been a construction driven more by reason than by passion, born out of the need for peace and economic prosperity after two world wars.1/5

Aperture v0.1.7 adds automatic retry with exponential backoff. It respects Retry-After headers, uses jitter, only retries idempotent methods by default. Also: config management commands, quiet mode for clean pipelines, and now on Homebrew. brew install kioku/tap/aperture github.com/kioku/aperture

GitHub - kioku/aperture: Dynamic CLI generator for OpenAPI specifications designed for AI agents and automation

Dynamic CLI generator for OpenAPI specifications designed for AI agents and automation - kioku/aperture

github.com

TypeScript's type system is compile-time only. Exceptions ignore it. Nullable returns work if someone downstream remembers to check. Wrote about making error handling explicit so the compiler catches it instead of production.

TypeScript's type system is compile-time only. Exceptions ignore it. Nullable returns technically participate, but only if someone downstream remembers to check (not at 4pm on a Thursday, after the third meeting). There's a reason engineers keep rediscovering Result types.

TypeScript error handling approaches in the wild: - exceptions (sometimes caught) - nullable returns (sometimes checked) - result types - hoping for the best

Agent sandboxes are quite cool. Today I migrated a Django CMS website I've been maintaining for a decade to an Astro static site. From my phone. While enjoying life.

It’s also time to build European solutions. Diverse options will push the international market to offer better products and services for consumers.

🛒 🇪🇺 Buy European 🇪🇺 (+🇨🇦). USA broke up with you. Get over it 🇪🇺💪@buyeuropean.eurosky.social · 8mo ago

It’s time to become digitally independent from USA. Ask not what European #DigitalSovereignty can do for you, ask what YOU can do for 🇪🇺 #DigitalSovereignty. An appeaser is one who feeds a crocodile, hoping it will eat him last. Don’t be a digital appeaser. www.irishtimes.com/world/us/202...

In my work with agent-assisted workflows, I hit a roadblock: giving agents a secure and reliable way to make external API calls. It quickly became clear that this is non-trivial.

The number of added lines of code is a terrible performance metric. Instead, the total number could be considered a complexity metric, but even that fails when the code is verbose enough.

I have a new article out. It's about a better technique to create grainy gradients, without the big problem that layering a noise layer brings: altering the original gradient palette (to a greater or lesser extent, depending on the approach used). #CSS #SVG #filter

Master.dev (Formerly Frontend Masters)@frontendmasters.com · last yr.

Grainy Gradients This is about reducing banding effects in gradients by introducing noise. A nice approach is a displacement map using SVG filters.