Posts

Es werden Posts vom Juni, 2026 angezeigt.

Pinned Post

Who picks the tool

Bild
The previous post ended with an agent that writes a missing tool into a running node. Generate, sanitize, persist, compile, load, execute, about 25 milliseconds after the model answers. I was happy with that for roughly a week. Then I looked at the demo page again and counted the text fields. Tool name. What it should do. Parameters as JSON. I had filled in all three. The gap-finding was real. The deciding was mine. MetaPlannerAgent.run("Publish the article", [ %{tool: "classic_plan", params: %{goal: "Write draft, review, publish"}}, %{tool: "slugify_text", description: "Turns a title into a URL slug", params: %{text: "Hello World"}} ]) Everything interesting in that call sits in the second argument, and I typed it. The agent resolved slugify_text , noticed it wasn't in the catalog and had it written. It never asked whether the task needed a slug at all. So this post is about the agent in front of that, the on...

Vom Browser-Tab zur installierten App: PWA und Web Push auf Phoenix LiveView

Bild
Fiatbitcoin ist eine Phoenix-LiveView-App. Seit Kurzem kann man sie auf dem Homescreen installieren wie eine native App, und sie meldet sich von selbst, sobald eine der eigenen Bitcoin-Positionen steuerfrei wird. Beides zusammen macht aus der Web-App eine Progressive Web App. Das Interessante daran ist nicht die Checkliste aus Manifest und Service Worker, die kennt man. Interessant ist, dass LiveView die übliche PWA-Erzählung an einer Stelle bricht. Eine LiveView lebt von einer dauerhaften WebSocket-Verbindung, und genau die stellt die Frage, was „offline” hier überhaupt heißen soll. Dieser Artikel geht den Weg in drei Schritten durch: installierbar machen, Web Push anbinden, und das Ganze an die fachliche Steuerlogik hängen. Warum offline nicht das Ziel ist Das klassische PWA-Versprechen ist Offline-Fähigkeit. Ein Service Worker fängt die Requests ab, liefert aus dem Cache, und die App funktioniert auch ohne Netz. Für eine LiveView trägt dieser Plan nicht weit. Die eigentlichen ...

A Foundation Model in the BEAM: On-Chain Anomalies with Google TimesFM in Elixir

Bild
At Fiatbitcoin a worker collects metrics from our own Bitcoin node every ten minutes: mempool size, number of waiting transactions, fee rates, hashrate, difficulty. Over time that builds a decent time series, one row per measurement in a table. At some point the obvious question comes up: when is one of these values actually unusual? When is a note or a push worth it, and when is it simply Tuesday evening? The cheap answer is a fixed threshold. Mempool above 200,000 transactions, alarm. The problem with that shows after a week: the mempool breathes in a daily and weekly rhythm. Sunday evening is reliably fuller than Tuesday morning, fees pick up at certain times. A flat threshold flags every predictable peak as an anomaly and stays silent on an untypical spike that happens to stay under the line. What you actually want is a band that knows the normal rhythm, and an alarm only when a value breaks out of that band. First the simple way The honest entry point into something like thi...

Hochladen, prognostizieren, plotten — TimesFM in Phoenix LiveView

Bild
Zeitreihen-Forecasting ist klassisch ein Feld für ARIMA (statistisches Modell aus Autoregression, Differenzbildung und gleitendem Mittel) und Prophet (Metas additives Modell für Trend, Saisonalität und Feiertagseffekte) & Co. — Modelle, die man pro Datensatz trainiert. Foundation-Modelle drehen das um: ein einziges, vortrainiertes Modell prognostiziert ohne Training beliebige neue Reihen. Googles TimesFM ist genau so ein Modell. In diesem Post baue ich eine kleine Phoenix-LiveView-App , die eine CSV-Zeitreihe entgegennimmt, sie mit TimesFM prognostiziert und das Ergebnis mit VegaLite zeichnet — und ich erkläre, warum das Modell weder über Bumblebee noch über Ortex geladen wird, sondern über Pythonx . Was ist TimesFM — und wozu? TimesFM ("Time Series Foundation Model") ist ein decoder-only Transformer von Google Research — architektonisch ein naher Verwandter von GPT, nur dass die Tokens keine Wörter sind, sondern Patches einer Zeitreihe . Das Modell zerlegt d...

Splitting an ML model and a web app across two BEAM nodes — the technical blueprint

Bild
The web app (Phoenix + Postgres) runs in production on a small Linux box with no GPU. The embedding model ( intfloat/multilingual-e5-base , ~278 MB, XLM-RoBERTa backbone, EXLA-compiled) wants compute that isn't there. That compute lives in a MacBook Pro. Goal: offload only the heavy inference to the Mac, keep everything else on the server — and the calling code shouldn't know where the math happens. The usual answer would be a second service with a gRPC/REST API, serialization, service discovery, timeouts, retries, and a second deployment artifact. On the BEAM, "another machine" is a platform primitive instead. What it takes isn't new infrastructure, but a clean split of one codebase into two releases and three node roles. The mental model: one codebase, two releases, three roles There is exactly one codebase (an umbrella project) and no second language. The only thing that varies is what a started node brings up . A single environment variable, FINANCE_ROLE ,...

Ein ML-Modell und eine Web-App auf zwei BEAM-Knoten trennen — der technische Bauplan

Bild
Das Problem in einem Satz Die Web-App (Phoenix + Postgres) läuft produktiv auf einer kleinen Linux-Box ohne GPU. Das Embedding-Modell ( intfloat/multilingual-e5-base , ~278 MB, XLM-RoBERTa-Backbone, EXLA-kompiliert) will Rechenleistung, die dort nicht ist. Die sitzt in einem MacBook Pro. Ziel: nur die schwere Inferenz auf den Mac auslagern, alles andere bleibt auf dem Server — und der aufrufende Code soll nicht wissen, wo gerechnet wird. Die übliche Antwort wäre ein zweiter Service mit gRPC/REST-API, Serialisierung, Service-Discovery, Timeouts, Retries und einem zweiten Deployment-Artefakt. Auf der BEAM ist „eine andere Maschine" dagegen ein Plattform-Primitive. Was es braucht, ist keine neue Infrastruktur, sondern eine saubere Aufteilung einer Codebasis in zwei Releases und drei Knoten-Rollen. Das mentale Modell: eine Codebasis, zwei Releases, drei Rollen Es gibt genau eine Codebasis (ein Umbrella-Projekt) und keine zweite Sprache. Was variiert, ist nur, was ein gestarteter K...

Die häufigsten Bitcoin-Scams und wie du sie erkennst

Bild
Die meisten Menschen, die mit Bitcoin Geld verlieren, verlieren es nicht an den Kurs. Sie verlieren es an Betrüger. Das ist eine unbequeme Wahrheit, aber auch eine gute Nachricht, denn die Maschen folgen einer Handvoll Muster. Wer die Muster einmal kennt, erkennt fast jeden Betrug, bevor er Schaden anrichtet. Dieser Artikel geht die häufigsten durch, zeigt das gemeinsame Erkennungsmerkmal und nennt am Ende die wenigen Regeln, die fast alles abdecken. Die Maschen, die immer wiederkommen Die Verdopplung. “Schick mir 0,1 Bitcoin und du bekommst 0,2 zurück.” Oft getarnt als Aktion eines Prominenten, mit gefälschtem Video von Elon Musk oder einer bekannten Börse, in einem Livestream, der echt aussieht. Die Regel ist einfach: Niemand verschenkt Geld. Jede Aufforderung, erst etwas zu senden, um mehr zurückzubekommen, ist Betrug. Ausnahmslos. Der falsche Support. Eine Mail, SMS oder ein Anruf, angeblich von deiner Börse oder Wallet. “Verdächtige Aktivität auf deinem Konto, bitte hier v...

Was ist eigentlich eine Blockchain?

Bild
“Blockchain” ist eines dieser Wörter, das alle benutzen und kaum jemand erklären kann. Es klingt nach Hochtechnologie, nach etwas, das man nur mit Informatikstudium versteht. Das stimmt nicht. Die Idee dahinter kennst du längst aus dem Alltag: ein gemeinsames Kassenbuch, das alle lesen können und niemand heimlich ändern kann. Dieser Artikel erklärt die Blockchain ohne Fachjargon, an einem Bild, das hängenbleibt. Am Ende verstehst du, warum sie für Bitcoin der entscheidende Baustein ist und was sie für dich praktisch bedeutet. Das gemeinsame Kassenbuch Stell dir ein Kassenbuch vor, in dem steht, wer wem was bezahlt hat. Bei deiner Bank führt die Bank dieses Buch. Sie allein hat es, sie allein schreibt hinein, und du musst ihr vertrauen, dass der Stand stimmt. Wenn sie sich vertut, dich aussperrt oder pleitegeht, hast du ein Problem, denn das Buch liegt bei ihr. Die Blockchain dreht das um. Statt eines einzigen Buchs bei einer Bank gibt es Tausende identische Kopien, verteilt über d...

Beliebte Posts aus diesem Blog

Splitting an ML model and a web app across two BEAM nodes — the technical blueprint

Jido in Practice: Agents in Elixir as Composable Actions

A Foundation Model in the BEAM: On-Chain Anomalies with Google TimesFM in Elixir