cartero Monday, August 10, 2026 · No. 25877
Observability

528: Goldfish Chunks

Tyler Hoffman returns to the show to discuss diagnostics and observability data in embedded systems. We catch up on his life after startup acquisition, explore the hows and whys of keeping product data separate from operational data, and consider the realities of fleet management at scale.  Tyler is the co-founder of Memfault. Memfault was acquired by Nordic Semiconductor about a year ago. While Nordic has nRF Cloud as a smaller scale solution for Nordic devices (~100 devices), Memfault will...

AI Agents

Week notes 17

A heavy week on the docs side. Two things shipped that I had been chewing on for a while, and a couple of small skills came together. Some reading and writing on the side too. - 🧪 Built a docs-ja-translator skill and landed the Japanese tutorial pilot at work. The skill takes an existing MDX document from Expo tutorial, mirrors it under pages/ja/

AI Agents

Agentic Coding in Teams — Why Enablement Matters More Than the Tool

Your team has Cursor subscriptions. Or Copilot. Or Claude Code. The invoices are paid, the tools are installed, and now AI is supposed to boost productivity. Except it doesn’t. A few developers experiment, most carry on as before, and nobody feels like anything has changed. The problem isn’t the tool. The problem is that a subscription isn’t enablement. A look at the current state At JavaLand 2026, during my talk “Context Is Everything,” I asked about 50 developers where they stoo...

AI Agents

Your AI Problem Is a Documentation Problem

Your development team is using AI coding agents. Subscriptions are paid, some developers use them actively, others are still stuck at chat-completion. And the productivity gain the tool vendors promised still hasn’t materialized. It’s not the model. It’s not the tool: The missing lever is context, and most teams aren’t providing it systematically. This isn’t a new problem. AI agents just make it more visible. What agents can already do today — and where the limits lie — I’ve d...

AI Coding Tools

5 Signs Your Team Is Using AI Tools Wrong

You gave your development team AI tools. Copilot licenses for everyone, access to coding agents, the whole package. A few weeks later, you notice: the results you expected aren’t materializing. Features aren’t shipping faster. Quality hasn’t improved. And when you ask, you get shrugs. This isn’t an isolated case. In client projects and workshop requests I receive, I see the same pattern: the tools are there, but the impact isn’t. The cause is almost always the same — it’s not th...

AI Agents

Teach your AI coding agent how to send email with Postmark Skills

If you've ever asked an AI coding agent to help you integrate email into your app, you've probably gotten code that looks right but isn't quite right. Maybe it used an outdated endpoint. Maybe it forgot about Message Streams entirely. Maybe it hallucinated a method that doesn't exist. (We've seen all three.)AI agents are only as good as the context they have, and until now, most of them had to rely on whatever fragments of Postmark documentation made it into their training data.Today, we're r...

AI Coding Tools

AI in Software Development — What SMEs Actually Need to Know

Your development team says: “We should start using AI tools.” The question isn’t whether they’re right — the question is: what does that actually mean? What does it cost if you get it wrong, and what does it cost if you do nothing? This article is written for both sides of the desk. For the CTO who needs to explain to the board why AI tools in the dev team make sense — and for the CEO who wants to understand what the team means when they talk about “coding agents.”

Rust

Jez returns for programming language chat!

Veteran super-coder Jez is back, and claims he has "finished" implementing Cell, Andy's toy language, in Rust. Jez and Andy basically gossip a bit, about code type stuff. Read Jez's blog at https://www.jezuk.co.uk/ Read my blog at https://artificialworlds.net/blog Follow Jez on mastodon: @[email protected] Follow me on mastodon: @[email protected]

Web Performance

After the first year of blogging - what happened on my blog in 2014?

I wish you all a happy new year and much fun and success for 2015! Let's have a quick review of the past 365 days. In 2014 amongst other things I ... published 34 articles researched better webfont loading 1, 2 learned static site generation with node.js tools 1, 2, 3, 4 began using Instantclick.io for providing better percieved performance 1 pimped up the good old textarea 1, 2 wrote about some JavaScript thingies 1, 2, 3, 4, 5, 6, 7, 8 discovered a simple usability improve...

Rust

Implementing gunzip from scratch in Rust

Jez and Andy get together for crazy programming hijinks, trying to figure out from scratch how gzip compressions works, starting by making a valid minimal gzipped file, then trying to unzip it. Read Jez's blog at https://www.jezuk.co.uk/ Read my blog at https://artificialworlds.net/blog Follow Jez on mastodon: @[email protected] Follow me on mastodon: @[email protected]

CSS

Displaying icons with custom elements

I created a technique for using SVG icons without pain with a simple gulp task. Since HTTP/2 is not widely supported yet, it has always been a pain to use icons on web pages. There are many ways to include icons and all of them have some tradeoffs. This interesting technique shows a way to include SVG-icons in a cross-browser way with using custom elements. TLDR The code can be found here: bdadam/custom-icons. The usage looks like this: <x-icon type="some-icon"></x-icon> ... ...

Functional Programming

Worth watching: Douglas Crockford speaking about the new good parts of JavaScript in 2014

At the Nordic.js 2014 Douglas Crockford was giving a talk about what he considers to be "the good parts" of JavaScript in 2014. He talks about ECMAScript6, what parts of it he could already identify as the new good parts, and of which he thinks, that they are going to be the new bad parts. Read on for my summary or just whatch the video. The "good parts" he identified in ES6 ES6's new (proper) tail call optimization. So that "JavaScript becomes a real functional programmin...

SQLite

Hotswap

Replace a SQLite database on a running Rails server without restarting

LLM Evaluation

Verifying coding AIs for LLM powered software

Context The coding ability of LLMs is growing continuously, and less and less code is being written by human SWEs (Software Engineers). LLMs can generate large amounts of code in a short time, and we SWEs cannot perform a super exhaustive code review; we simply do not have the necessary time. It may also happen that the SWE does not have experience in certain technologies but still needs to work with them. LLMs can be very helpful in these types of activities as well, although the problem ...

PostgreSQL

PostgreSQL Berlin May 2026 Meetup

On 7th of May, 2026, we had the PostgreSQL May Meetup in Berlin. AWS hosted it again, this time we had two speakers from UK and US. The Meetup took place in the Amazontower (EDGE East Side Tower Berlin) in Berlin, across the Uber Arena and with a view at the railway station Warschauer Straße. Celeste Horgan: pg_lake: Unifying transactional and analytical data with Postgres Celeste is Sr.

Search Engines

I like the Uruky search engine

Silly name but works wonders. I have been using this search engine called Uruky for about a week: https://uruky.com/ As a software dev, big part of my workflow is searching for information. As search engines in general keep getting worse and worse, it has became more difficult. However with Uruky I have managed to find the exact results I need. No silly "AI" summaries. No other weird shit. Just list of links. That's all I want and that's exactly whar Uruky provides. It seems like a search en...

CSS

It's the little things

This is just a short post to say this: it's the little things that matter. It might be the background on your phone, the air freshener scent in your car or just the damn theme toggle switch on your website – more often than not, changing and improving those tiny details can affect not only them, but also the whole experience in general. I generally try and not fuck around with my website's design too much, but the theme switcher, which was the little thing this time around, was bothering me...

Linux Kernel

Appearing on the Software Engineering Radio Podcast

Software Engineering Radio is a podcast for people in IT/development with over 700 episodes across many topics over 20 years. They haven't touched on the Linux kernel much. I was invited on as part of my role at Red Hat as a Distinguished Engineer, but the podcast is really an insight into kernel maintenance, in graphics and beyond, touching on the scope and scale of the project.It was my first time to record something that wasn't just me talking at a conference/meetup, and it was all very pr...

AGI and AI Safety

The 3 Questions Every Patent Attorney Is Asking Right Now (SEM2026 Recap)

Yesterday, I had the privilege of speaking at the EPO’s flagship conference, Search and Examination Matters 2026. We had over 800 participants watching live. The energy was incredible, and it confirmed one thing: The profession is waking up. We are moving past the “hype” phase of AI and entering the “deployment” phase. But we didn’t ... Read more The post The 3 Questions Every Patent Attorney Is Asking Right Now (SEM2026 Recap) appeared first on BASTIAN BEST.

Compilers

read a couple of books about compilers

LLVM Compiler for RISC-V ArchitectureDescribes details of risc-v vectorization support in llvm. It should be noted that the implementation of vector operations in risc-v was done later than in Intel and sve in arm64 - they took into account many flaws (like made explicit masks for vector operations) and were implemented in a much more convenient way from the programmer's point of viewOn other hand any HW vendor can add it's own ISA subset and support of this custom processors in compiler can ...

Artificial Intelligence

Is this a game... or is it real? What's the difference?

People are absolutely obsessed and enamored by this new type of Artificial Intelligence (AI) we have. Generative AI. Large Language Models. Whatever you want to call them. When ChatGPT first came out it didn't seem that novel to me. I've played video games that seemingly conversed with me. I've chatted with ELIZA. But when I started playing with ChatGPT it was obvious that it was much better than those ever were. So, like David asked Joshua in War Games, I asked ChatGPT if it would li...

Git

Oak: Git for Agents

Article URL: https://oak.space/ Comments URL: https://news.ycombinator.com/item?id=48779321 Points: 12 # Comments: 8

Homelab & Self-Hosting

BlogLog April 10 2026

I added a new page to my blog in the header showing all the specifications of my homelab and self-hosted services. It will be updated as I continue to update my services or infrastructure. Fixed misspellings in Overview of My Homelab post. Reply via email Subscribe via email or RSS

Homelab & Self-Hosting

Overview of My Homelab

I've had a homelab for quite some time now, although it hasn't been a linear process. I first got into it when I heard about Plex, which at first, I was under the impression of it being a free streaming service with everything. I set it up with the installer on my computer and was frustrated and confused to learn that it Wouldn't work unless my PC stayed on, Didn't really have ad-free subscription-free streaming. Apparently you had to acquire the content yourself. I gave up on it for who kn...

Vim and Neovim

Neovim

Call me late to the party if you want, but I recently adopted Neovim as my new full-time text editor for work, and I have to say I’m very pleased of having done so. In case you don’t know (which given my audience, I’d be surprised to hear) Neovim is a successor of Vim, built since 2014 on a fork of version 7 point something of Vim. The good news is that it is almost 100% compatible with Vim, and that means I could reuse my good old .vimrc, using the following initialization file in ~/.c...

PostgreSQL

The insert benchmark on a small server, IO-bound workload : Postgres 19 beta1

This has results for Postgres versions 19 beta1, 18.4 and 17.10 with the Insert Benchmark on a small server using a cached and CPU-bound workload. I also used MySQL 8.4.8 to see where performance was different.Postgres continues to be boring in a good way. It is hard to find performance regressions. tl;drcreate index (the l.x step) is faster in Postgres 19beta1. A Postgres expert told me that the sort algorithm was changed to be more CPU efficientthe write heavy steps (l.i1, l.i2) are 15% an...

Spark

PaperSparkClusterComputingWithWorkingSets

_ Paper Reading Notes_ Spark_ Cluster Computing With Working Sets____ Overview__This paper introduces Spark as a framework to run large-scale_ data-intensive workloads on commodity hardware. It is especially useful for workflows that are currently difficult to implement or expensive to run on Hadoop MapReduce _ref_H_MAPREDUCE_.__MapReduce _ref_MapReduce_ is not well suited for iterative jobs and interactive analytics because it forces the materialization of results between jobs _generally to ...

AI Agents

Building MCP servers with Entra ID and pre-authorized clients

The Model Context Protocol (MCP) gives AI agents a standard way to call external tools, but things get more complicated when those tools need to know who the user is. In this post, I’ll show how to build an MCP server with the Python FastMCP package that authenticates users with Microsoft Entra ID when they connect from a pre-authorized client such as VS Code. If you need to build a server that works with any MCP clients, read my previous blog post. With Microsoft Entra as the authorizatio...

Go

Inspecting the Source of Go Modules

Go has indisputably the best package integrity story of any programming language ecosystem. The Go Checksum Database guarantees that every Go client in the world is using the same source for a given Go module and version, forever. It works despite the decentralized nature of Go modules, which can be fetched directly from their origin based on the import path. (For example, you can fetch v1.2.3 of github.com/example/mod by cloning the git repository and exporting the v1.2.3 tag. GOPROXY=direct...

PostgreSQL

CPU-bound sysbench on a large server: Postgres 12 to 19 beta1

This has results from sysbench on a small server with Postgres versions 12 through 19 beta1. Sysbench is run with high concurrency (40 connections) and a cached database. The purpose is to search for changes in performance.Postgres remains boring, it is hard to find performance regressions.tl;dr for Postgres 17 to 19there are no regressionsthroughput on the read-only-count test improves by ~3X in 19 beta1 thanks to a better query plantl;dr for Postgres 12 to 19there are few regressions, throu...

LLM Evaluation

Learnings from the PyAI conference

I recently spoke at the PyAI conference, put on by the good folks at Prefect and Pydantic, and I learnt so much from the talks I attended. Here are my top takeaways from the sessions that I watched: AI Evals Pitfalls Hamel Husain 📺 Watch the video recording | 📊 View slides Hamel cautioned against blindly using automated evaluation frameworks and built-in evaluators (like helpfulness and coherence). Instead, we should adopt a data science approach to evaluation: explore the data, di...

AI Coding Tools

OpenClaude with DeepSeek V4: Running a Fully Private AI Coding Engine on Your Laptop

Open source Claude Code fork + local DeepSeek V4 setup guide. Sections: What is OpenClaude (fork vs native, MIT license), why DeepSeek V4 (Anthropic-compatible, MIT license, 1M context), hardware requirements and real performance (M-series MacBook Pro, RTX 4090, laptop - honest speed tests), step-by-step install (Ollama, DeepSeek V4 model pull, OpenClaude config), what works and what breaks (feature comparison table), privacy use cases (enterprise, regulated industries), and quick-start code ...

Connection Pooling

Databases Were Not Designed For This

There is an implicit contract at the foundation of every database architecture decision you have ever made. You probably never wrote it down. Nobody does. It just… existed.

Elasticsearch

BM25

There is a particular kind of respect reserved in engineering for the algorithm that outlives its era. BM25 is one of them. BM25 was born out of information retrieval research in the 1970s and 1980s, polished over decades, and eventually adopted as the default ranking function in Elasticsearch, Solr, and Lucene.

AGI and AI Safety

Flame wars and hype fatigue

I've recently seen many people suffering form hype fatigue. People just don't have the emotional energy to engage for the N-th time with random strangers on the internet to patiently and rationally explain their position, but still want to engage. I've seen this happen across forums such as Reddit, Hacker News, LinkedIn, the blogosphere, and elsewhere. As a result, people just lose patience, have “shorter fuse” and write emotionally-charged pieces that polarize the issue. In the end, we...

AI Agents

Five Levels of AI-Agent Adoption in Software Development Teams

Everyone uses AI coding agents differently. Some copy-paste from ChatGPT. Some run fully autonomous pipelines. I see five distinct levels, and knowing where you are tells you what's next. This comes from our partnership (ForEach Partners): over 100 people, 12 active projects. Some products haven't hit the market yet. Others have been in production for over a decade. Where this comes from Most of what I know comes from colleagues. Personal conversations, meetups, conferences. Some projects I j...

RAG

What Matters in Production RAG

Most of us build RAG the same way: follow a tutorial that embeds a handful of PDFs, stores the vectors in a local Chroma instance, and chains everything together with LangChain (if that's still a thing). The demo works. The answer looks reasonable. Then you take it to production and it falls apart in quiet, hard-to-diagnose ways.

AI Agents

Launching Shop CLI

Shop CLI: A Tool Built for AI Agents, Not Humans

Large Language Models

How LLMs Really Work

If you have used ChatGPT, Gemini, or Claude, you have already formed an intuition about what these systems do. You type something in, and text comes back that feels coherent, knowledgeable, and sometimes eerily human. But the machinery underneath is simultaneously simpler and stranger than most people expect.

Kotlin

KotlinConf’26 Keynote Highlights: Advances in Language Design, Tooling, AI-Driven Workflows, and Multiplatform Development

Kotlin turns 15 this year, and it really is everywhere. It powers systems behind everyday moments, such as tapping to pay, buying commuter rail tickets, using in-flight entertainment, and even filing tax returns online. As AI continues to reshape how software gets built, Kotlin’s growing real-world impact reflects the importance of languages and tools that help teams manage complexity, express ideas clearly, and build reliable systems with confidence. At KotlinConf’26, the JetBrains te...

Kotlin

Kodee’s Kotlin Roundup: Kotlin Turns 15, Kotlin 2.4.0, and the Kotlin Toolchain

Hi everyone! May and June brought so much Kotlin news that I needed a little extra space for this roundup. Kotlin turned 15, Kotlin 2.4.0 arrived with new capabilities for developers on every platform, and I found plenty of ways to learn, experiment, build AI agents and AI-powered applications, and explore useful Kotlin Multiplatform libraries. Here are the updates that stood out to me most. Kodee-approved spotlight ...

Artificial Intelligence

An AI taught me to listen to birds

A few days ago, I opened the window and heard a familiar sound I have not heard in a while: it was a fieldfare’s call, probably one of the first who migrated back to my town this year. And just today, I saw my first chaffinch of the year perched on top of a branch. These birds are very common where I live, so this is not too surprising, but what struck me is how much I have grown in terms of knowledge of their calls, appearance and behaviour. A few years ago, I wouldn’t have been able to ...

Kotlin

In Conversation With the Golden Kodee Winners

KotlinConf 2026 marked a milestone for the Kotlin community: the very first Golden Kodee Community Awards. The awards recognize the individuals and communities whose passion and dedication help the Kotlin ecosystem thrive. From creating educational content and building engaging online communities to organizing events, fostering connections, and driving positive societal impact, the Golden Kodee Awards shine a spotlight on the many ways people contribute to Kotlin. Open to active members of...

Large Language Models

The era of local agents is here

Local models—that is, large language models you can run on your own computer—have been okay for chat for a while even if they’re typically some way behind the frontier. I can’t now remember when or how I first got a small large language model running locally, but it was probably via Simon Willison’s llm with Mistral-Small-24B-Instruct-2501-4bit, which was released in January 2025. Mistral-Small-24B-Instruct-2501-4bit uses 12.35GB, so it could even run on a machine with 16GB of RAM! ...

Kotlin

Kotlin Comes to BlueJ

Kotlin support is now available in BlueJ, one of the most established environments for teaching introductory object-oriented programming (OOP). This work is the result of a collaboration between JetBrains and the BlueJ team at King’s College London, including Professor Michael Kölling and Dr. Neil Brown, whose work has shaped programming education for decades. Download BlueJ For many students, programming begins in the classroom, where a teacher intro...

Large Language Models

how might a modern lighthouse work with large language models?

Lighthouse is one of the most successful developer tools we’ve ever shipped, and I say that as someone who is genuinely proud of the work the team has done on it. But something has gnawed at me for a while. Our ability to help the developer ecosystem with it is ultimately capped by the number of tests we can physically create. Every audit is a hand-written piece of JavaScript. Someone has to sit down, understand a best practice, encode it as a deterministic check, ship it, and maintain it a...

Kotlin

Kotlin 2.4.0 Released

The Kotlin 2.4.0 release is out! Here are the main highlights: Language: Stable context parameters, explicit backing fields, and multiple features for annotation use-site targets. Standard library: Stabilized support for the UUID API and support for checking sorted order. Kotlin/JVM: Support for Java 26 and annotations in metadata enabled by default. Kotlin/Native: Support for Swift packages as dependencies, updates on Swift export, and the CMS GC enabled by default. Kotlin/Wa...

AI Coding Tools

Use AI in Your Kogan.com Coding Interview. We would Rather You Did.

For a long time, engineering interviews had this unspoken rule: Close ChatGPT.Turn off Copilot.How dare you use AI to code! That's not real engineering. We're not doing that. If you're interviewing for an engineering role at Kogan.com, you can use AI. Cursor, Claude, ChatGPT, Copilot, whatever's already part of your workflow. Honestly, we'd rather see how you actually work with these tools. Why we changed it Our engineers use AI constantly. It helps write, debug, refactor, and unblock work ac...

WebSockets

Streaming from Node.js to React with Server-Sent Events

I reached for WebSockets the first three times I needed to stream data from a server to the browser. Every time I regretted it. WebSockets are bidirectional, which is great when you need bidirectional, and a pain when you don’t. Most of the time I didn’t. What I actually needed was “the server pushes updates to the browser, the browser just listens.” That’s Server-Sent Events. A plain HTTP connection that stays open, the server writes lines of text, the browser reads them.

MongoDB

Persistent multi-agent conversations with the OpenAI Agents SDK and MongoDB

Version 0.14.2 added a MongoDBSession backend; here’s a working multi-agent customer-support demo that uses it, and the documents it leaves behind. The OpenAI Agents SDK has shipped session backends for SQLite, SQLAlchemy, Redis, and Dapr for a while now. With 0.14.2 (April 2026), MongoDBSession joined that list, and 0.14.6 added the docs page. If you’re already running MongoDB for application data, this is the moment to stop standing up a second store just to remember what the agent sai...

DNS

Securing DNS in production networks

DNS is everywhere. Your laptop uses it. Your phone uses it. Your production servers use it. Its everywhere, but for many people, once its working, they forget about it. And yet, DNS can be used for data transfer (several bytes at a time), it can be used to lookup malicious domains, it can be used … Continue reading "Securing DNS in production networks"

AI Coding Tools

Right-Sizing Engineering Teams for AI

Before AI coding assistants, a typical engineering team of 8-10 people might have been lucky to have one or two “10x engineers”, or “workhorses”, the kind of engineer that both keeps project quality and feature velocity high. AI tools have solved the workhorse half of this equation, enabling massive raw output. Today, almost every engineer can produce a high volume of code with GitHub Copilot, Claude, or Cursor. But the quality half of the equation has not kept up. Teams are shippin...

ClickHouse

BEAM Metrics in ClickHouse

How we are periodically dumping metrics about our most demanding BEAM processes into an easy-to-query ClickHouse table.

Authentication

JSON Web Tokens are made for Microservices

Introduction to JSON Web Tokens for beginners, with Java examples and microservice architecture context

AI Agents

building a claw in the browser

What is described here in this project is dangerous, it can get pretty much full access to everything inside your browser and could enable control of your browser from outside it I really do believe we are witnessing a transition in how we build and run software. This entire blog is dedicated to my explorations in this space, for example, I wrote about why the browser is the sandbox which explains how we can use the web platform’s battle-tested security boundaries to execute untrusted cod...

Linear Algebra

Notes on Fourier series

The trigonometric Fourier series is a beautiful mathematical theory that shows how to decompose a periodic function into an infinite sum of sinusoids. These are my notes on the subject, with some examples and the connection to linear algebra in Hilbert space. Coefficients of Fourier series Let’s assume that …

Git

Simplifying Git Worktrees

Worktrees are tracked copies of your repo. They exist so you can work on multiple things without anything overlapping.

RAG

Spend Compute on Generation, Not Retrieval

Why long-form AI fiction doesn't need RAG. A pipeline that produces novel-length manuscripts without embeddings, vector databases, or semantic search — and why that's the point.

Generative AI

What happens when code becomes abundant

What agriculture and car manufacturing can teach us about the use of generative AI in software engineeringIt’s not often that an article about AI coding tools takes us back a few centuries. Come with me on a trip down memory lane to revisit a couple of lessons other industries learned long ago.In the 1840s, the German chemist Justus von Liebig popularized an idea about plant growth, first articulated by agronomist Carl Sprengel in 1828. Plants need many things to grow: water, sunlight, nut...

Progressive Web Apps

are pwas cooked?

I’m 45 years old and using cooked to mean something that it never meant. I don’t know when it happened, but it’s out there along with vibe. Anyway… This post is all personal opinion. Before we go too deep, I just want to ground some of this article in the definition of a PWA. MDN has a good overview. “A progressive web app (PWA) is an app that’s built using web platform technologies, but that provides a user experience like that of a platform-specific app.”

Kubernetes

Kubernetes' Default CoreDNS Configuration is *insecure*

CoreDNS is the DNS server that powers most (all?) Kubernetes distributions, ever since it was made the default in v1.13 in December 2018. Chances are, you’ve never heard of or used its predecessor: kube-dns. Lucky for us, CoreDNS still has a config option to remind us. pods insecure is the default configuration option for most (again - all?) Kubernetes distributions, and was introduced as an option to provide “backward compatibility with kube-dns”. The simple fact that the option’s va...

WebSockets

Choose your fighter: benchmarking 5 WebSocket servers for Node.js

Evil Martians benchmarked five WebSocket servers for Node.js: Socket.io, uWebSockets.js, and AnyCable (OSS and Pro). How we caught our own load generator lying, and how to make WebSocket benchmark numbers honest.

CDN and Caching

RFC 10008: The HTTP QUERY Method

RFC 10008 was published on June 15, 2026 and defines a new HTTP method: QUERY. It fills a gap that has existed for as long as I have been building APIs. You have data to send to the server in order to describe what you want back, but GET does not have a body and POST is neither safe nor idempotent. QUERY gives you a method that accepts a request body while remaining safe, idempotent, and cacheable. If you have ever built an SDK that talks to a JSON-RPC API you have felt this pain. JSON-RPC by...

Functional Programming

Scala: What do “effect” and “effectful” mean in functional programming?

When you get started with functional programming (FP) a common question you'll have is, "What is an effect in functional programming?" You'll hear advanced functional programmers use the words effects and effectful, but it can be hard to find a definition of what these terms mean. Effects are related to monads (but don't worry) A first step in the process of understanding effects is to say that they're related to monads, so you have to know just a wee bit about monads to understand effects. B...

Functional Programming

For OOP developers: The smallest, simplest functional programming book

Some of the computer programming books on the right side of this image are amazing, and I would never discourage anyone from reading the great ones. But if you're an object-oriented programming (OOP) developer who wants to start understanding functional programming (FP) over a weekend or a few nights of reading, that's the goal of the new little book on the left: Learn Functional Programming The Fast Way. It takes you from Java/OOP to functional programming in the simplest possible step-by-st...

Functional Programming

Functional Programming, Simplified (a best-selling FP book)

Functional Programming, Simplified -- currently 5-star rated on Gumroad.com, 4.5-star rated on Amazon, and one of the all-time best-selling books on functional programming -- is currently on sale in three formats (prices shown in USD): PDF Format $10 on Gumroad Paperback Book $39.99 on Amazon Kindle eBook $9.99 on Amazon

Functional Programming

Functional programming books, comparison

Since I've written two functional programming (FP) books, I thought it might help to provide a comparison of them. The short story is that both FP books have "limited technical jargon," and as shown, The Little FP Book essentially has one purpose, which is to help Java/Kotlin/OOP developers learn functional programming as fast as possible, using a technique that I "discovered" over the last few years. Conversely, The Big FP Book covers many topics in great detail. If you're interested in more...

AI Agents

Android Skills: Expert Instructions for Your AI Agent

Google just published a set of Android skills a collection of expert, AI-optimised instructions covering the most common and painful Android development workflows. (Upgrading to AGP 9, migrating XML layouts to Compose, wiring up Navigation… Read more of Android Skills: Expert Instructions for Your AI Agent → The post Android Skills: Expert Instructions for Your AI Agent first appeared on Blundell.

Functional Programming

Book: Learn Functional Programming The Fast Way! (FP for OOP developers)

NOV., 2022: My new book, Learn Functional Programming The Fast Way, is currently an Amazon Java and functional programming #1 new release. The book is now available in three formats: PDF Format $10 on Gumroad.com Paperback $30 on Amazon Kindle $10 on Amazon