Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
161696 stories
·
33 followers

Microsoft’s AI Framework for Schools May Be a Blueprint for Wider AI Regulation

1 Share

A new AI safety framework for U.S. schools prohibits student and educator data from being used for AI model training while establishing requirements for human oversight, transparency, privacy, and accountability from participating technology providers.

The post Microsoft’s AI Framework for Schools May Be a Blueprint for Wider AI Regulation appeared first on Cloud Wars.

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

Here’s what was announced at Made On YouTube 2026.

1 Share
YouTube introduced updates that make the platform smarter, more personal and easier to navigate.
Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

MongoDB: One write, two logs

1 Share

When I first encountered MongoDB, I tried to understand it through the database I knew best: PostgreSQL. My journey was a baptism by fire. I was managing a sharded cluster with 20 TB of data and as many as ~55k operations per second, including ~29k writes. The cluster had six shards, each with its own replica set, a config server replica set, and six routers.

To operate that cluster safely, I had to stop treating MongoDB like PostgreSQL and learn how it worked internally.

At one point, while tackling a flow control problem on the stated cluster, an AI model recommended increasing the portion of memory assigned to the WiredTiger cache. At the moment, the recommendation sounded genuine and correct, but I did not know what the model had based its conclusions on. To be completely honest, I didn’t even know how RAM is used by MongoDB. The nail in the coffin was the official docs saying don’t change WiredTiger cache to RAM ratio.

That experience clarified why I wanted to learn the internals. I want/need enough understanding to connect operational advice to a mechanism, identify the evidence it depends on, and decide. This applies whether the advice comes from AI, a colleague, documentation, or my own assumptions.

What happens after a MongoDB client sends a write?

How does that write pass through MongoDB and WiredTiger, and when does it become durable on disk?

And when someone recommends changing a WiredTiger setting, what would have to be true for that recommendation to make sense?

Following one write

When a client sends a write operation to a sharded cluster, the request first reaches a router called mongos. Routers cache data from the config server about chunk – shard placements. Using this data mongos determine which shard owns the relevant data and forward the operation to that shard’s primary node.

Sharded MongoDB cluster 

However, this post does not compare replica sets and sharded clusters. Once routing is complete, the same question applies inside every shard.

How does the primary mongod process request, persist it, and replicate it to secondary nodes?

Separation of concern

To answer my question(s), I firstly had to understand where mongod ends and the storage engine WiredTiger begins.

mongod handles client commands, authorization, query execution, transaction coordination, and replication. WiredTiger is the embedded storage engine that stores collection and index data. It provides local transactions, MVCC, caching, compression, journaling, checkpoints, and crash recovery.

MongoDB client
      │ write operation
      ▼
mongos query router
      │ routes to the owning shard
      ▼
shard primary (mongod)
      ├── authorization and command handling
      ├── query parsing and execution
      ├── transaction and session coordination
      ├── replication and oplog coordination
      └── storage-engine API
                  │
                  ▼
             WiredTiger
                  ├── local transactions and MVCC
                  ├── internal cache
                  ├── journal
                  ├── checkpoints
                  └── collection and index data in dbPath

Ok, but how does this come into play? Boundaries are not absolute.

The oplog belongs to MongoDB’s (logical) replication model, but WiredTiger stores it alongside other collection data.

One write, two logs

At this point, I had another question. If MongoDB already has a journal, why does it also need an oplog?

The WiredTiger journal is the closest equivalent to PostgreSQL’s WAL (Write Ahead Log). It records the changes needed to recover one MongoDB member (keep this thought) after a crash. Unlike PostgreSQL’s WAL, MongoDB does not use the journal as its replication stream.

The oplog has a different purpose. It is a capped collection stored in the local database as local.oplog.rs. Secondary members copy its entries and apply them to their own data.

This raises an important consistency question. What prevents MongoDB from committing a document change without its corresponding oplog entry?

Client write path 

Data folder

Let’s examine what happens on one node and then additionally complicate the story by adding secondaries.

To understand local durability, I first looked inside the dbPath of a MongoDB member. A simplified listing:

$ ls /data/mongodb/
collection-<ident>.wt
index-<ident>.wt
journal/
WiredTiger
WiredTigerHS.wt
WiredTiger.lock
WiredTiger.turtle
WiredTiger.wt

The exact files and their names depend on the MongoDB version and configuration, but these are the main WiredTiger files relevant to this discussion.

The collection-<ident>.wt and index-<ident>.wt files are WiredTiger tables that store collection records and index entries.

MongoDB’s durable catalog maps logical objects, such as a collection namespace, to these storage-engine identifiers. WiredTiger maintains its own metadata in WiredTiger.wt, including its tables, their configuration, and their latest checkpoints.

The small WiredTiger text file identifies the WiredTiger version used to create the database:

WiredTiger
WiredTiger 10.0.2: (November 30, 2021)

WiredTigerHS.wt is the history store. It keeps older committed versions of records needed by MVCC readers, snapshots, etc. WiredTiger removes versions once no active reader or snapshot can require them.

WiredTiger.turtle contains enough metadata to locate and open the latest checkpoint of WiredTiger.wt. It bootstraps the metadata table during startup and recovery.

WiredTiger version string
WiredTiger 10.0.2: (November 30, 2021)
WiredTiger version
major=10,minor=0,patch=2
file:WiredTiger.wt
...
checkpoint_lsn=(2248,16291200)
...

The checkpoint_lsn identifies a position in the WiredTiger journal using a log file number and byte offset. During recovery, WiredTiger opens the last consistent checkpoint and replays later journal records.

The journal/ directory contains those write-ahead log files. They protect changes made after the last checkpoint from being lost during an unexpected shutdown.

Finally, WiredTiger.lock is the file on which WiredTiger acquires a lock to prevent two processes from opening the same database directory simultaneously. The lock state matters, not merely the existence of the file.

The WiredTiger cache

WiredTiger does not modify the collection-*.wt and index-*.wt files directly for every client operation. It first reads the required pages into its internal cache and applies the change there as part of a storage transaction. Modified pages become dirty until WiredTiger reconciles and writes them to disk.

This internal cache keeps uncompressed collection data and is separate from the operating system’s filesystem cache where compressed data is stored.

MongoDB therefore benefits from both caches, WiredTiger and the OS cache.

Giving all available memory to the WiredTiger cache would leave too little memory for the filesystem cache and the rest of mongod and respecting the default, max((availRAM - 1024) x 0.5, 256 MB), is strongly advised by the official docs.

This is already enough to show why “increase the WiredTiger cache” is incomplete advice. A larger cache does not create memory. It transfers memory away from the filesystem cache and other allocations. Whether that trade is useful depends on the workload and the source of the observed pressure.

When the cache approaches its limits, WiredTiger evicts pages to make room. Clean pages can be discarded and read again later. Dirty pages must first be reconciled into an on-disk representation.

A committed change does not have to wait for its dirty page to reach the collection file. The journal supplies durability between checkpoints. This separation is the reason a write can be durable even though its final data page is still dirty in memory.

Recovering after a crash

In case of a crash, WiredTiger starts from the last complete checkpoint. The checkpoint metadata identifies a consistent view of the WiredTiger tables and the journal position associated with it.

WiredTiger then replays the journal records created after that checkpoint. At a high level, recovery combines two inputs:

 last complete checkpoint + later durable journal records = recovered local state  

Checkpoints and data files

WiredTiger normally creates a checkpoint every (configurable default) 60 seconds. A checkpoint can take longer when there is more dirty data or the storage device is under pressure.

During a checkpoint, WiredTiger writes a point-in-time view of dirty pages to the collection, index, history-store, and metadata files.

WiredTiger transaction
        │
        ├── dirty pages in cache ──checkpoint──▶ .wt data files
        │
        └── journal records ───────────────────▶ journal files

                         crash
                           │
                           ▼
       latest checkpoint + subsequent journal records
                           │
                           ▼
                    recovered state

How the primary records an operation

For an incoming query, mongod will, among other things, determine collection and index changes and construct the oplog logical entry.

It uses WiredTiger to start/use a transaction and either commits both parts or commits neither. This prevents a successful document change from existing on the primary without an operation (oplog entry) that secondaries can replicate.

The oplog entry contains an operation type, namespace, timestamp, and the data required to reproduce the change. Its timestamp provides an ordering position in the replica-set history. The entry describes a logical insert, update, delete, command, or transaction operation rather than the low-level page modifications stored in the WiredTiger journal.

rs_a [direct: primary] local> db.oplog.rs.findOne()
{
  ts: Timestamp(...),
  t: NumberLong(...),
  op: "u",
  ns: "foo.bar",
  o: { $v: 2, diff: { ... } },
  o2: { _id: 123 }
}

This is not a complete definition of how oplog and collection changes work, but the important invariant is: the primary commits the replicated data changes together with the oplog records which describe them.

Only the local commit is atomic. Sending or copying the oplog entry across the network is not part of that storage transaction.

How secondaries copy and apply oplog entries

Each secondary continuously selects a sync source and streams newer oplog entries from it. The sync source is often the primary.

The secondary writes fetched entries to its own oplog and then applies the represented operations to its local collections and indexes.

The secondary uses its own WiredTiger instance to apply changes. They modify its cache, produce local journal records, and later become part of its checkpoints.

This is the important distinction and the answer why we can’t just ship primaries *.wt binaries to the secondary.

On two MongoDB servers, these are different files.

Oplog versus journal

PropertyOplogJournal
LayerMongoDBWiredTiger
PurposeReplicationCrash recovery
ContentsLogical MongoDB operationsStorage-engine recovery records
Consumed bySecondary nodesWiredTiger during startup/recovery
ScopeReplicaSet logical historyOne server only
Replicated?Yes, logicallyNo

Takeaways

This gives a practical sequence for evaluating operational changes:

  1. Identify which component owns the behavior
  2. Describe the mechanism that is a cause of the problem
  3. Find evidence supporting that mechanism
  4. Clarify what the improvements should be
  5. Measure
  6. Iterate

The technical facts in this article support that way of reasoning:

  • The WiredTiger journal and the oplog solve different problems. The journal recovers one member; the oplog replicates logical operations between members.
  • MongoDB commits a replicated data change and its oplog entry in the same local storage transaction on the primary.
  • A durable change can still exist as a dirty cache page because the journal protects it between checkpoints.
  • Primaries and secondaries have separate WiredTiger databases, caches, journals, and data files.
  • Memory assigned to WiredTiger is part of a larger allocation decision that includes the filesystem cache and other process memory.

Why I wanted to understand this

Learning how WiredTiger works does not mean that I can derive every production decision from first principles. It gives me a way to examine a recommendation instead of accepting it because the source sounds confident, and we all know AI can sound like that.

The quality of an (AI) recommendation depends on the question and the evidence supplied to it.

Further reading

A note on scope – This article records my current understanding of MongoDB and WiredTiger, built through hands-on operation and continued study. I have tried to keep the technical details accurate, but any errors or oversimplifications are mine. MongoDB official docs and WiredTiger documentation should always be consulted for correctness and clarity.

The post MongoDB: One write, two logs appeared first on ShiftMag.

Read the whole story
alvinashcraft
2 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Paint.NET 5.2 Beta (build 9762)

1 Share

Welcome to the first beta for the 5.2 update! This new version has new effects and also has a big focus on performance, quality-of-life, and infrastructure improvements which prepare for the big 6.0 version that will be coming later. The two biggest changes are the new FileType plugin system and the rewritten high-precision layer rendering engine. There are also 8 new effects and very experimental support for running on Wine (Linux/Mac), which we’ll get to later.

New FileType Plugin System

The original FileType plugin system dates back to 2005 with the v2.5 release. It has withstood the test of time in the sense that it still works and has provided a lot of value for a lot of people, but it has also noticeably aged poorly in ways that have prevented progress in other areas of the app. It was written at a time when .NET itself was just 3 years old and hitting its 2.0 release with generics and 64-bit support. The modern systems used in Paint.NET for component management and isolation were nowhere to be found back then. I had no clue that the project’s longevity would stretch so far into the future, nor that so many plugins would be developed!

The old FileType plugin system is tightly coupled with the Document, Layer, and Surface classes which Paint.NET also uses internally for UI and rendering purposes. They only support the 32-bit BGRA UI8 pixel format and a flat list of bitmap layers. The new FileType system works through interfaces such as IFileTypeDocument<TPixel> and ILayer<TPixel>, along with a rich and strongly-typed imaging framework providing support for a wide variety of pixel formats, pooled bitmap allocation, scaling/interpolation, quantization/dithering, format conversion, color management, and more.

Decoupling the FileType system from the internal classes means that these two systems can now evolve independently, and internal details can be abstracted away from plugins. The new plugin system has been designed to support versioning, meaning that functionality can be added or changed in the programming interfaces that are provided to plugins while maintaining compatibility for plugins that have already been published. New layer types and topologies (e.g. layer folders) can be added without breaking existing plugins, new blend modes can be introduced, and bitmap layers can finally be migrated to a tiled storage system.

Note to plugin authors: In general, plugins should provide pixel data in the image file’s original format without converting it to BGRA32. In other words, let Paint.NET handle the conversion, whether you’re supplying pixels as RGBA64, BGR24, or even an HDR format such as RGBA FP16. Paint.NET will figure out the best conversion for pixel format and color profile handling, and when expanded pixel format support is rolled out your plugin can automatically benefit from it. Note that plugins can query at runtime which pixel formats are supported and which are native, in case they do want to do the conversion themselves for whatever reason.

New Layer Rendering Engine

The old layer rendering engine has its roots going all the way back to the 1.0 release in 2004. Over the years it has migrated from C# to C for performance reasons, and then back to C# once the language and .NET’s JIT had finally caught up to (and surpassed!) the performance of the native C compiler’s code generation. However, it has no SIMD optimizations, it only has 8 bits per channel of precision (“UI8”), and the code was very messy and difficult to make changes to. Working with many layers can result in incorrect colors or banding artifacts as off-by-1 errors accumulate across multiple layers. 

With 5.2, this has been completely rewritten and upgraded to use 32-bits of floating-point precision per channel (“FP32”). It is fully optimized for AVX2, AVX512, and even ARM64 NEON thanks to .NET’s new platform-agnostic intrinsics support. Because FP32 uses a lot more memory bandwidth than UI8, many tricks have been employed to optimize that to the point that there is no perceptible performance reduction from previous versions (the old renderer not using any SIMD also helps this comparison). The bottleneck is compute, not memory bandwidth, and performance really shines on CPUs with AVX512 support (e.g. AMD Zen 5) even with standard dual channel memory.

A driving factor behind this change was to prepare for future versions of Paint.NET that will expand pixel format support beyond BGRA UI8. In order to do this in a sane and maintainable manner, having a canonical pixel format became important so that each rendering kernel only needs to be written once. All of the rendering kernels can now operate exclusively on FP32 data, with high-performance format conversion and color transform kernels at the beginning and end of the rendering pipeline. This will make it much easier to add application-level support for RGBA UI16, RGBA FP16, and even RGBA FP32 — the layer rendering engine already supports it, the rest of the app just has to catch up.

New Effects

This release adds 8 new effects. These fill in the Artistic submenu, add some new dithering capabilities, two new distortion effects, and finally support for high-quality halftoning.

  • Artistic -> Linocut
    • Simulates a relief printmaking technique where an artist carves an image into a sheet of linoleum, rolls ink onto the raised surface, and then stamps it onto paper or fabric.
  • Artistic -> Mosaic
    • This is sort of like an expanded Pixelate effect with optional beveling and grout separation between the “pixels.” There are numerous tiling patterns to choose from.
  • Artistic -> Pointilism
    • Simulates a painting technique where an artist applies small, distinct dots of color next to each other to form an image.
  • Artistic -> Stained Glass
    • Simulates stained glass. Similar to Distort->Crystalize, but more fleshed out.
  • Color -> Ordered Dither
    • Simple ordered dithering patterns from the Bayer, Spiral, Dual Spiral, Blue Noise, and White Noise families.
  • Distort -> Spherize
    • Similar to Distort -> Bulge, but produces an actual spherical shape.
  • Distort -> Waves
    • A very configurable effect that can produce waves, ripples, spirals, flowers, and other shapes.
  • Stylize -> Halftone
    • Simulates physical printing, such as seen in newspapers or comic books, using either CMYK or black-and-white dots. The conversions between RGB and CMYK are color space aware and operate in linear gamma space when appropriate, resulting in a very high quality result.

Examples of each new effect:

Original
image.png
Linocut
image.png
Mosaic
image.png

Pointilism
image.png
Stained Glass
image.png
Ordered Dither
image.png

Spherize
image.png
Waves
image.png
Halftone
image.png

Experimental Wine Support

NOTE: This is not for the faint of heart! It is very much experimental and targeted towards early adopters who aren’t afraid of missing functionality, performance issues, crashes, and wrestling with dependencies.

I’ve recently made major progress getting Paint.NET working on top of Wine, which means Paint.NET can now finally run on Linux and Mac. This was first made available as part of 5.2 Alpha (build 9739) and has now been moved into its own package that you can download from a separate GitHub page with its own Releases page and Issues tracker. Updates will be independent(-ish) of the main Windows packages, at least for the foreseeable future. Each new Windows release will be accompanied by a corresponding Wine release so that it doesn’t fall behind in functionality.

What’s coming in 6.0?

The next big update will introduce a new .PDN file format that will finally enable the ability to add new features to the document and layering systems. High bit-depth pixel formats, new blend modes, and layer folders are planned to be the first use of this. Later on, features such as adjustment layers, text layers, and HDR are also planned (to name just a few).

Change Log

Changes since 5.2 Alpha (build 9739) (sorry, I forgot to cross-post it to the blog):

  • New: The Eraser tool now supports selecting a Fill pattern in the toolbar.
  • Improved: When using Image->Resize and “Maintain aspect ratio”, the rounding has been improved to reduce the aspect ratio error
  • Fixed a bug in the Move tools where shift-clicking on a side handle (north/south/east/west) would sometimes cause it to move on its own by 1-2 pixels.
  • Fixed: The Colors window will no longer erase the hex field if an invalid character is typed.
  • Fixed the tooltips in the File -> Open Recent menu by removing them (WinForms is just very buggy here). The directory paths are now shown on a second line of text instead.
  • Renamed the “Move Selected Pixels” tool to “Move Pixels.”
  • Fixed an SEHException error message when changing the language.
  • Experimental Wine support is now in a separate package that is updated independently(-ish) of the main package. You can get it here: https://github.com/paintdotnet/Paint.NET-on-Wine
  • Updated the DDS FileType Plus bundled plugin. The Save Options dialog will now auto-check or auto-uncheck the checkboxes for enabling mipmaps or cube maps if the image was originally opened from a DDS file.

Download and Install

This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within Settings -> Updates, enable “Also check for pre-release (beta) versions of Paint.NET” and then click on the Check Now button. You can also use the links below to download an offline installer or portable ZIP.

image.png

You can also download the installer here (for any supported CPU and OS), which is also where you can find downloads for offline installers, portable ZIPs, and deployable MSIs.

For the experimental builds for Wine, you can go here to download them.



Read the whole story
alvinashcraft
2 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Will TypeSafe’s Jev Change How We Build AI Applications?

1 Share

The following article originally appeared on Arize’s blog and is being reposted here with the author’s permission.

This week the AI community was in uproar about Jev from TypeSafe, not just a new model but a new kind of model: one that classifies, scores, and routes but can’t write a sentence. The reason for the fuss is simple. It’s radically faster and cheaper than using an LLM to perform the same task (up to 200x faster and 400x cheaper if TypeSafe’s numbers are to be trusted). In one small independent test, a general-purpose model spent about 910 output tokens reasoning its way to each yes-or-no answer while Jev spent 85, and it doesn’t even bill for them.

That’s potentially a really big deal. An enormous share of LLM-powered components in AI applications today are being asked to make decisions: pass or fail, route A or route B, which of five labels to pick. In particular, that’s something that LLM-as-a-judge evaluations are doing all the time, so it really made our ears perk up at Arize AI. This post is about how we got here, what this new kind of model buys you, what you lose, and what choices you should be making about your application’s architecture as a result.

TypeSafe shipped a model that can’t write, only decide

Here’s how Jev works. You send it some data that represents a state (a support ticket or an agent trace or a JSON blob) plus a list of typed questions (Choose one of these options; Score this on a scale; Is this statement true?). It doesn’t generate a token stream. It returns typed answers with probability distributions in a single parallel pass, in 70 ms to 500 ms, at $0.042 per million input tokens. No free-form text comes back.

The training method used to create Jev is what TypeSafe calls Reinforcement Learning for Calibrated Decisions or RLCD, described in their primer as training the model so that a higher stated probability means a higher chance the answer is right. (You’d think that’s always what a higher stated probability should mean, but read on for surprising facts about how LLMs work.)

TypeSafe also claims Jev “can’t hallucinate,” but that really feels like an overreach. Jev can’t return an answer outside the schema you gave it. Within that schema, it could still be giving the wrong answer, although its probability score should give you a clue if it’s not confident.

And the whole thing is incredibly fast and incredibly cheap: 40x to 200x faster and 40x to 400x cheaper, depending on the task, are TypeSafe’s numbers from TypeSafe’s evals. Of course, we know better than to take a vendor’s word for these things, so Arize will be running our own benchmarks just as soon as we can. But other people have already started doing that.

On the early data, Jev is mid-tier intelligence at a two-orders-of-magnitude discount

TypeSafe’s published evals run four decision workflows, one of which is reviewing a finished agent trace to decide whether a human needs to look at it. Averaged across the four workflows, Jev lands at 68% accuracy at $0.0004 and 0.4 seconds per case. GPT-5.6 Terra is at 68% for $0.03 and 10 seconds. Opus 5 is at 73% for $0.18 and 38 seconds. That’s five points behind Opus 5, but on the other hand it’s 440x cheaper. That’s a very interesting cost-benefit trade-off, and such a radical one that it may change how we architect our applications.

The independent data so far is small but it points the same way. Every’s head of evals ran 777 judgments in under 0.7 seconds for about a quarter of a cent. A UK events site, NearHere, tested listing moderation and got 96% from Jev against 86% from Gemini Flash-Lite, 58x cheaper per decision. That’s where the 910-versus-85 token count I mentioned earlier came from. And a developer ran Jev zero-shot over 18,514 spam emails, getting a result that was a statistical tie versus a classifier trained on the labels.

These are small samples and early data but hey, the thing was released a few days ago.

We used LLM judges because nothing else worked without labels

Why are we using LLMs to make decisions in the first place? The reason is simple: They are able to do it without huge, expensive training sets, which is what most ML solutions prior to LLMs required. Here’s the options on the table now:

The first two rows are the old-school options, which need a training dataset: hundreds to thousands of labeled examples before you get a single prediction, and then a training run, and then someone to maintain it. Nobody building a first version of an AI product has that data or that kind of time. The LLM as a judge, on the other hand, just asks for a paragraph-long prompt. The decision was easy.

But the results weren’t without trade-offs. On a Latent Space episode in July 2024, Clémentine Fourrier of Hugging Face laid out what LLM judges are bad at: They prefer their own model family, and they can’t score on a continuous scale. Asked what benchmark she wished existed, Fourrier said, “Nobody’s evaluating model calibration at the moment.” With the release of Jev, the need for that benchmark is even greater, because real progress seems to have been made.

Jev gives you zero-shot probabilities without training and without a generator

Jev takes the same plain-English criteria you’d put in a judge prompt, needs no labels, and returns a probability. Zero-shot and autoregressive text generation are no longer tied together. We were paying for the second to get the first, and it turns out you don’t have to.

The spam evaluation I mentioned earlier is an impressive demonstration of how attractive this new offering is. With zero labeled examples and a simply well-written definition of spam, Jev hit 98.3% accuracy. A TF-IDF logistic regression trained on about 14,800 labeled emails hit 98.4%. The two disagreed on 466 emails and split them almost evenly, with no statistically meaningful difference between the two. So a classifier from 2003, trained on a dataset, only ties a decision model trained on nothing. It’s early data that’s yet to be reproduced, but if it holds up, that’s an amazing new capability unlocked.

But there are still some trade-offs you’re making.

A radically cheaper decision loses you some things

The biggest loss is the explanation. TypeSafe’s docs say plainly that System One models don’t generate explanations of their reasoning, and NearHere’s test noted the same thing: a category and probabilities came back, nothing else.

Depending on your use case, that could matter a lot. LLM judge explanations are an incredibly valuable tool that tells you not just what was wrong, but why. That provides real signal that can be fed en masse back to a coding agent and used to automatically improve your software. Jev on the other hand just gives you a probability, which leaves you with much less directional signal of how to improve.

Of course, at these prices, you can do both: run Jev on every single trace for broad, comparably accurate measurement and monitoring, and then take samples of failures and rerun them through an LLM judge to get your directional signal. That involves changing how you work, which is why I say that this may require rearchitecting your systems.

To automate a decision, you need to know which 5% to hand to a human

TypeSafe’s launch post makes the point that a model that’s right 95% of the time but can’t tell you when it’s in the other 5% can’t automate anything, because a person still has to review all of it. That’s an important point because it highlights a problem with LLM judges.

We evaluate LLM judges by accuracy against a gold set. Accuracy tells you how many errors to expect, but not where they will be. If your LLM application is making decisions for you, it feeds three things: a threshold that decides when to act, an escalation path that decides when to ask a human, and a drift monitor that decides when the world has changed under it. All three need a probability score, but LLM judges don’t provide reliable probabilities. A 2025 study of 14 models on JudgeBench found judges clustering their predictions at 90% to 100% confidence while landing well below that in accuracy, and argued for exactly this shift from accuracy-centric to confidence-driven evaluation.

The same small spam evaluation test shows what a usable probability looks like. Of the emails Jev scored under 0.1, 0.1% were spam. Of those scored 0.9 or above, 99.9% were. In the 0.5 to 0.6 band, only 38% were. That curve tells you where to set your threshold and how much human review you’re buying: Sending the 4.6% of emails scored between 0.3 and 0.7 to a person left the rest at 99.5% accuracy. Your overconfident LLM judge can’t get you there.

Another metric to consider is tokens per decision. A component that spends thousands of output tokens to emit one of five labels is telling you it’s the wrong tool for the job. UkisAI’s Swift-Qwen3.8-27B cut 58% of its reasoning tokens on GPQA-Diamond and lost 0.1 points of accuracy. A lot of these tokens aren’t making a critical difference to accuracy.

In Arize AX, eval labels, the judge’s explanation, and the token count and cost of the judge call sit on the same trace, so tokens per decision is a column you can sort by rather than a number you have to figure out.

Cheap decisions change the math of how you build and measure AI applications

As I mentioned earlier, at $0.0004 and 0.4 seconds a decision, you can stop sampling. You can check every output, every tool call, and every agent step as it happens. For some use cases that’s a total game changer.

But it might require that you rearchitect how your application works to make the most of it. Take the work and decompose into many small typed questions; only call the expensive LLM generator when text actually needs to be written. That’s a stack where the decision layer is something you can version, measure, and swap independently of the model that writes the words, and it’s the first time decision-making has been cheap and fast enough to make that practical without requiring training data.

So go count how many of your LLM calls end in one of five labels. Then work out what you’d check, and how often, if each of those calls cost a fraction of a cent and came back with a probability you could trust.


Is cybersecurity part of your job in any way? If so, we’d like to know what you think for a report we’re writing. Just answer these quick 11 questions. Thanks in advance! Take the survey >



Read the whole story
alvinashcraft
2 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Hit Subscribe Digest, September 2026

1 Share

Hi folks.  This is Erik once again, still in R&D mode from last time.  I’m continuing to work out the specifics on our cross-platform inventory under the heading of our Osiris offering, and a pleasant side-effect of that is the ability to very easily pull lists of, for instance, content we collaborated on in the month of August.  Speaking of which, here is the content that we collaborated on in the month of August.

We should be back soon to publishing these right around month’s end.

CEO Apology Letter Examples That You Can Actually Use

When a company-level crisis strikes, the words a CEO chooses in the aftermath can matter as much as the fix itself. This article uses a high-profile real-world meltdown as a jumping-off point to explore what an effective leadership apology actually looks like — and what tends to go wrong.

In this guide, you’ll find practical CEO apology letter examples you can adapt when the situation calls for accountability at the top.

Media Pitch Examples That Actually Get Real Replies

Reporters reply to a tiny fraction of the pitches that land in their inboxes, and understanding what separates the ignored from the answered is genuinely useful for anyone who does communications work. This piece digs into that gap with real, fully-written examples rather than abstract advice.

In this guide, each media pitch example covers the story types executives and communications teams reach for most, built around what actually earns a response.

Messaging Framework: What It Is and How to Build One

Today’s executives communicate across more channels than ever before, which makes consistency both more important and harder to achieve. This article tackles that challenge by explaining what a messaging framework is and how to build one.

In this guide, you’ll find a practical walkthrough for creating a messaging framework that keeps your voice and core ideas coherent no matter where or how often you show up.

Data Masking vs. Encryption: How to Choose the Right One

Data protection teams often debate whether to mask sensitive data or encrypt it, and the gap between the two choices matters more than it might seem. With encryption ranking among the top controls for reducing breach costs, understanding when each approach applies is genuinely useful work.

In this guide, the tradeoffs, use cases, and decision factors behind masking vs encryption are laid out to help teams choose the right technique for their situation.

IBM Optim Data Masking: What It Is and How It Works

Enterprises routinely need realistic data for development and testing, but production datasets are full of sensitive details that shouldn’t leave controlled environments. This article explores how IBM Optim approaches that tension — making data useful without making it risky.

In this guide, you’ll find a clear breakdown of how IBM Optim data masking works and what it actually does to protect sensitive information across non-production environments.

GDPR Data Masking Requirements: A Practical Guide

GDPR places strict obligations on how organizations handle personal data, even in non-production environments where realistic data is often essential for development and testing. This guide addresses that tension directly, making it useful for anyone trying to stay compliant without compromising the quality of their engineering work.

In this guide, you’ll find a practical breakdown of gdpr data masking requirements and how to meet them without disrupting the workflows that depend on lifelike data.

Database Refresh: What It Is, How It Works, and Best Practices

Development and testing teams depend on accurate, up-to-date data, but non-production databases have a habit of drifting out of sync with production over time. This article explains what a database refresh is, how the process works, and the practices that help teams do it well.

In this guide to database refresh, readers will find a clear breakdown of the concept alongside practical guidance for keeping non-production environments reliably current.

Delphix Data Masking: What It Is and How It All Works

Teams working in development and testing environments often face a tension between needing realistic data and protecting sensitive information from exposure outside production. This article explains how masking addresses that problem by substituting sensitive values with safer alternatives.

In this overview, you’ll find a clear breakdown of how Delphix data masking works and what it means for teams managing non-production environments.

RAG Status: What It Is and Using It for Project Management

RAG status is a traffic-light reporting method — Red, Amber, Green — that gives leaders a quick, consistent way to communicate how a project is tracking. This article looks at how that simple system fits into broader project management and technology leadership practice.

In this guide, you’ll find a clear explanation of how to apply rag status to monitor and communicate project health across a team or organisation.

What is a QA Environment? A Beginners Guide

Software testing is one of those topics that can feel overwhelming when you’re just getting started, and understanding the infrastructure behind it is a good place to begin. This article breaks down what a QA environment is and why it matters in the broader software development process.

In this beginner’s guide, you’ll find a clear explanation of the QA environment concept, along with the context you need to understand how it fits into a typical testing workflow.

SharePoint vs OneDrive: Key Differences Explained | Spin.AI

Many Microsoft 365 users find themselves uncertain about which storage service to reach for and when — OneDrive and SharePoint can feel deceptively similar until you need them to do different things. This piece is aimed at anyone who has paused mid-workflow and wondered whether they made the right call.

In this guide, the team at Spin.AI breaks down SharePoint vs OneDrive to help readers understand the practical differences between the two services and make more confident decisions about where their files belong.

DevOps workflow: What it is and how to build it

A DevOps workflow ties together the people, processes, and tools that carry software from idea to production — and understanding how those pieces fit is useful whether you’re starting from scratch or trying to smooth out an existing pipeline.

In this guide, the key phases of a devops workflow are laid out alongside practical advice on weaving in automation, collaboration, and continuous testing.

Requirements traceability: A complete guide

Requirements traceability is one of those fundamentals that can quietly make or break a software project, and this article offers a thorough look at the concept — from what it actually means to how it holds up across the full software development lifecycle.

In this guide, you’ll find a clear explanation of requirements traceability, including how to build a requirements traceability matrix and the best practices for keeping everything aligned as a project evolves.

Simplify SEO with Osiris

Test environment in software testing: 10-step guide

Setting up a test environment without a clear process is one of those things that looks manageable until it isn’t — configs drift, dependencies clash, and test results stop meaning anything. This article offers a structured walkthrough for teams who want to get it right from the start.

In this guide, you’ll find a practical ten-step setup process, a five-component checklist, and best practices for test environment management, all gathered in one place about test environment in software testing.

iOS Testing: XCTest & XCUITest with Swift examples

iOS testing can feel like a steep climb when you’re just starting out, and knowing which frameworks to reach for — and when — isn’t always obvious. This article walks through XCTest and XCUITest together, with Swift code examples and an honest look at the tradeoffs of each.

In this guide, you’ll find a practical side-by-side comparison plus a best practices checklist to help you get your footing with iOS testing.

Why Use Page Object Model in Selenium? Python

The Page Object Model is a design pattern that helps keep Selenium test suites tidy by reducing duplicated code — this article is a good read for anyone using Python who wants more maintainable browser tests.

In this guide, you’ll find a side-by-side comparison of POM and PageFactory alongside practical best practices for implementing page object model selenium with Python.

Unit testing in Python: A step-by-step tutorial

Unit testing in Python can feel like a vague obligation if you’ve never had a clear entry point — this tutorial is for developers who want to move from uncertainty to actually writing tests. It walks through pytest, unittest, and the arrange-act-assert pattern in a structured, hands-on way.

In this tutorial, you’ll go from zero to writing your first tests with a practical guide to python unit testing that covers the most widely used frameworks and patterns.

End to End testing for android: Selendroid setup guide

End-to-end testing on Android can be tricky, especially when modifying source code isn’t an option. This article walks through how Selendroid addresses that challenge, from initial setup all the way through running your first tests.

In this guide, you’ll find a step-by-step selendroid walkthrough covering everything from installation to test execution on Android apps.

API testing strategy: building an effective plan

API testing is one of those areas where having a clear plan matters as much as the tools you pick. This article is for teams looking to move beyond ad hoc testing and build something more deliberate and repeatable.

In this guide to building an API testing strategy, you’ll find best practices, testing approaches, automation tips, and advice on fitting it all into a CI/CD pipeline.

Validation master plan: key components and guide

A Validation Master Plan is the document that ties a company’s entire validation strategy together — defining scope, responsibilities, and how compliance will be demonstrated across systems and processes. This article is worth reading for anyone working in regulated industries who needs to understand what a VMP contains and how to put one together.

In this guide, you’ll find a practical walkthrough of the validation master plan, covering its key components, risk management approaches, and how to use it to streamline compliance efforts.

Generating test cases with AI: A detailed guide

AI-assisted test case generation is reshaping how QA teams approach coverage and efficiency, but it comes with trade-offs worth understanding before you commit. This article weighs both sides and walks through what getting started actually looks like.

In this guide, you’ll find an honest look at generating test cases with AI, including the practical steps to begin and the limitations to keep in mind.

How to Use the GitHub MCP Server: A Complete Guide

GitHub’s MCP server brings AI connectivity to your code repositories, letting you query repos, create branches and pull requests, and manage issues through Anthropic’s MCP protocol. This guide is aimed at anyone weighing a self-hosted setup against an enterprise-managed option.

In this guide, you’ll find a complete walkthrough of how GitHub MCP works, including what the server does and how hosted offerings compare to running it yourself.

HubSpot MCP Integration: A Practical How-to & Setup Guide

HubSpot’s Model Context Protocol support lets AI tools talk to HubSpot through a standardized connection rather than a custom-built integration, and the platform currently offers two distinct MCP servers for different use cases. This article is worth a look for anyone trying to understand how the setup actually works — from creating an auth app to authenticating with OAuth — and how it fits into a broader enterprise context.

In this guide, the practical steps for getting started with HubSpot MCP are laid out alongside an explanation of how the pattern can extend beyond CRM data to other business systems.

Salesforce MCP: Your Practical Guide to AI Agent Integration

Salesforce MCP is the pairing of Salesforce with Anthropic’s Model Context Protocol, a standard designed to let AI agents connect to external tools and data without requiring a separate integration for every platform. This article is worth a read if you’re trying to understand what that shift means in practice and why it matters for teams maintaining complex CRM workflows.

In this guide, the practical realities of Salesforce MCP are laid out — from how the protocol reduces redundant integrations to what security considerations teams should keep in mind when connecting AI agents to their Salesforce data.

Data Management vs. Data Governance: Differences Explained

Data management and data governance are terms that often get used interchangeably, but the distinctions between them matter — especially for teams trying to figure out where responsibilities begin and end. This article is worth a read for anyone who has found themselves tangled up in the two concepts.

In this explainer, the key differences are laid out clearly so you can see how the two practices relate and where they diverge, all covered in this piece on data governance vs data management.

Meme of the Month

That’s All, Folks!

Thanks for catching up with us and we’ll see you next month. In the meantime, feel free to reach out if you have any questions, want to share your thoughts, or want to talk shop!

Read the whole story
alvinashcraft
3 minutes ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories