10 interesting stories served every morning and every evening.

Hister | Your Own Search Engine

hister.org

Free soft­ware

AGPLv3

Self hosted

Run it on your own ma­chine or server

Privacy fo­cused

No teleme­try, no ex­ter­nal re­quests

Preserve Knowledge.Find It Again.

Hister stores ex­tracted doc­u­ment con­tent with the search in­dex and dis­plays it as a read­able pre­view along­side search re­sults.

Download Hister Try the live demo

Search the con­tent you chose to in­dex

Look be­yond book­marks and file­names. Hister in­dexes the full con­tent of the pages and files you choose, then keeps that search­able knowl­edge on a server you con­trol.

Search the ac­tual con­tent

Look be­yond ti­tles and URLs to the words in­side every in­dexed doc­u­ment.

Narrow with pre­ci­sion

Use fields, phrases, wild­cards, nega­tion, pri­or­i­ties, and your own aliases.

Read it in con­text

Open a clean stored pre­view be­side the re­sults with­out los­ing your search.

How Hister works

A pri­vate mem­ory with­out the busy­work

Collect

Save newly vis­ited pages with the browser ex­ten­sion, watch lo­cal fold­ers, im­port your his­tory, or crawl a site.

Visited pages

Local files

Index

Hister ex­tracts the parts that mat­ter and in­dexes their full text on the server you choose.

Full text

Stored con­text

Find

Search from the web, ter­mi­nal, com­mand line, or let an AI as­sis­tant re­trieve it through MCP.

Web and ter­mi­nal

MCP as­sis­tants

The sim­ple loop

Browser ex­ten­sions can in­dex pages as they are vis­ited. File watch­ers, his­tory im­ports, and crawlers add other sources to the same in­dex.

Why Hister

Preserve Knowledge. Keep Control.

The in­dex, stored page con­tent, and rules re­main on the Hister server you con­fig­ure. The server has no teleme­try and does not re­quire a cloud ser­vice.

No teleme­try

The server does not phone home or re­port what you search.

No manda­tory cloud

A com­plete per­sonal setup can run on one lo­cal ma­chine.

Your cho­sen server

Clients send in­dexed con­tent only to the Hister server you con­fig­ure.

Auditable soft­ware

The source is pub­lic and li­censed as free soft­ware un­der AGPLv3.

Optional se­man­tic search sends text to the em­bed­dings end­point you con­fig­ure. Browser ex­ten­sions may re­trieve page fav­i­cons. You choose whether and where these con­nec­tions run.

Built for real re­call

One in­dex. Many ways back in.

Hister in­dexes vis­ited pages, watched files, im­ported browser his­tory, and crawled web­sites. The in­dex is avail­able through web, ter­mi­nal, CLI, HTTP API, and MCP in­ter­faces.

Browser ex­ten­sions can in­dex vis­ited pages au­to­mat­i­cally. File watch­ing, his­tory im­ports, and the crawler add other sources.

Browser ex­ten­sions

Local file watch­ing

History im­port

Website crawler

Full text search sup­ports field fil­ters, quoted phrases, wild­cards, nega­tion, date ranges, and query aliases.

Field fil­ters

Quoted phrases

Wildcards and nega­tion

Query aliases

Content ex­trac­tors han­dle struc­tured data from sup­ported for­mats and web­sites. Semantic search is op­tional.

Content ex­trac­tors

Semantic search

Language aware in­dexes

Readable pre­views

Skip and pri­or­ity rules con­trol in­dex­ing and rank­ing. Versioning can re­tain ear­lier doc­u­ment con­tent.

Skip rules

Priority rules

Version track­ing

Sensitive con­tent checks

The same in­dex is avail­able through the web in­ter­face, ter­mi­nal client, CLI, HTTP API, and MCP server.

Web in­ter­face

Terminal in­ter­face

HTTP API and CLI

MCP server

A sin­gle bi­nary can run lo­cally. Shared servers sup­port user scoped ac­cess with SQLite or PostgreSQL.

No con­fig quick­start

SQLite or PostgreSQL

Multiple users

Docker and Nix

Additional ca­pa­bil­i­ties

Hister also sup­ports mul­ti­ple crawler back­ends, lan­guage spe­cific in­dexes, con­tent ver­sion­ing, own­er­ship rules, and con­fig­urable ex­trac­tors.

Why your local LLM feels dumber than it is

forum.level1techs.com

Quick Introduction

We have all been on fo­rums, chats, red­dit, dis­cord, youtube, or some­where and heard Oh! Model XYZ is AMAZEBALLZ!zomgwtfbbq” then down­loaded it (or more likely, some quan­tized form of it) and said eww… This sucks!”

This post is go­ing to be a rather tech­ni­cal se­ries of ex­per­i­ments to demon­strate the im­pact of im­ple­men­ta­tion-spe­cific haz­ards with in­fer­ence. I will be us­ing the term reference im­ple­men­ta­tion” to de­scribe the lab that pub­lished and of­fers first-party host­ing of their mod­els and posts orig­i­nal bench­mark claims. Their hard­ware will be dif­fer­ent than yours. Their soft­ware will be very dif­fer­ent than yours. And the com­par­isons in this post are not go­ing to be run­ning some 2.58-bit-gguf-in-ollama with a cou­ple test prompts.

I am in­ten­tion­ally gloss­ing over en­tire emerg­ing fields of study, moun­tains of re­search pa­pers and lit re­view to make this more ap­proach­able for you the reader. Don’t nit pick my over­sim­pli­fi­ca­tions or I will make you read the re­ally long un­pleas­ant ver­sion with math.

Your lo­cal im­ple­men­ta­tion sucks. But that’s ok, be­cause every­one else’s does too.

Every sin­gle in­stance of hard­ware and soft­ware run­ning an LLM to­day is a lit­tle bit dif­fer­ent. or a lot dif­fer­ent when it comes to some cases. The av­er­age home lab user might be mix­ing mul­ti­ple dif­fer­ent gen­er­a­tions of GPU. The chips on those have dif­fer­ent in­struc­tion sets. Those in­struc­tion sets will im­ple­ment and ex­e­cute math to cal­cu­late your next to­ken dif­fer­ently from any other per­son, even when run­ning the same ex­act weights.

So that begs the first ques­tion: How much does your par­tic­u­lar setup suck? Turns out there are a num­ber of dif­fer­ent ways to go about mea­sur­ing that.

The prac­ti­cal ap­proach is straight for­ward. Run stan­dard bench­marks. A va­ri­ety of them. ter­mi­nal bench, hle, SWEthis, HELLAthat, MMLU-whatever… take your pick. Just make sure its rep­re­sen­ta­tive of your ac­tual work­load/​use case. Do not crank tem­per­a­ture to zero and paste in 3 test prompts then call it good/​bad. Zero-shot tests are not a good ana­log of most agen­tic tasks. You need long-con­text tool-call­ing and do­main spe­cific knowl­edge eval­u­a­tions to fig­ure out where your setup is weak when run­ning the same weights as some­body else repli­cat­ing those same bench­marks.

But the purely math­e­mat­i­cal an­swer is where my fo­cus is go­ing to be­gin be­cause as @wendell said:

Math is Math!

Logits” are the mod­els scores for each pos­si­ble next to­ken. They are nor­mal­ized into prob­a­bil­i­ties, passed through the con­fig­ured sam­pler, and con­verted back into text by the deto­k­enizer to gen­er­ate THE→NE→XT→TOK→EN dur­ing de­code.

A side note about sam­pler set­tings: the model card on HF usu­ally spec­i­fies ex­actly what sam­pler set­tings (and chat tem­plate) you should be us­ing. temp 1.0, top-p 0.95, etc. it varies by model so make sure you are us­ing the right ones. btw, set­ting temp too low is why your qwen is sit­ting there loop­ing un­able to es­cape its THINK out­put. You’re wel­come, glad I could fix that for you.

When the next to­ken prob­a­bil­ity changes enough, THE→NE→XT be­comes THE→NE→W→DAY… And while those small changes might be fine, odds are that’s the be­gin­ning of the nig­gling sen­sa­tion in the back of your mind that some­thing feels off.

Some of you may have heard the term KLD be­fore, or KL Divergence. Don’t worry, I won’t make you do any math or flood your brain with ta­bles of very small dec­i­mal num­bers. But just in case you wanted the sim­ple ver­sion: con­vert the out­put log­its into a prob­a­bil­ity dis­tri­b­u­tion, and mea­sure how far that dis­tri­b­u­tion has moved from a cho­sen base­line. Lower KLD means closer to that base­line, not au­to­mat­i­cally smarter’. KLD is also di­rec­tional, so the or­der of the two dis­tri­b­u­tions mat­ters.

A word of cau­tion: Don’t get suck­ered in by im­pos­si­bly low KLD claims on a quant HF model card. It is im­pos­si­ble to in­ter­pret a num­ber un­less the au­thor dis­closes the ref­er­ence check­points and full run­time en­vi­ron­ment, eval­u­a­tion text, cal­i­bra­tion data, con­text lengths, sam­pled po­si­tions, KL di­rec­tion, any vo­cab­u­lary trun­ca­tion, and how the mea­sure­ments were ag­gre­gated. The method­ol­ogy mat­ters as much as the num­ber and plenty of peo­ple get it wrong.

What the hell is vllm do­ing?

Now, we need to take a brief field trip down what the gi­ant stack of soft­ware is do­ing on your in­fer­ence en­gine to un­der­stand where some of those sources of di­ver­gence come from.

At every step of this over­sim­pli­fied di­a­gram are com­po­nents that can be con­fig­ured or changed based on your spe­cific hard­ware/​soft­ware foot­print, model, quant, ten­sor shape, etc.

The nightly VLLM con­tainer im­age I snagged had 734 (252 uv/​pip Python) pack­ages in it. That’s 734 code­bases each with their own bugs and un­doc­u­mented idio­syn­crasies. The path your spe­cific im­ple­men­ta­tion takes through that moun­tain of code will be dis­tinct.

Test 1: Precision Benchmarking Attention Backends

Lets start with one piece of that in­fer­ence flow­chart. During pre­fill (prompt pro­cess­ing) there are a sev­eral at­ten­tion back­ends your in­fer­ence en­gine will se­lect from. This im­pacts both speed and pre­ci­sion of pre­fill, while re­quir­ing dif­fer­ent cuda ker­nels for every GPU fam­ily / SM com­pute ca­pa­bil­ity 1.3. The CUDA plat­form — CUDA Programming Guide . Lets test them and com­pare.

(I’m re­ally very sorry, I had to…)

I started with the of­fi­cial BF16 check­point of Qwen3.6 – 27B on an RTX PRO 6000 Blackwell GPU at ten­sor par­al­lelism 1. The KV cache was BF16, with no weight/​ac­ti­va­tion or KV-cache quan­ti­za­tion. The soft­ware was a pinned nightly vllm build. I used ea­ger ex­e­cu­tion, dis­abled CUDA graphs, pre­fix caching, and MTP, and used 2k-token chun­ked pre­fill.

Qwen3.6 – 27B is dense, not an MoE, but it is still a hy­brid model. 64 lay­ers re­peat in a pat­tern of three Gated DeltaNet/linear-attention lay­ers fol­lowed by one full-at­ten­tion layer. Only those 16 full-at­ten­tion lay­ers use the se­lec­table at­ten­tion back­end in this ex­per­i­ment; the Gated DeltaNet path re­mained fixed.

The work­load re­played here is Prompt 2”, a roughly 100k to­ken con­text cap­tured from a real Turnstone lab work­stream con­tain­ing mul­ti­ple tool calls and real work prod­ucts. It was se­lected to re­sem­ble what a lo­cal agent ac­tu­ally does rather than a syn­thetic nee­dle-in-a-haystack test. And maybe more im­por­tantly, it does­n’t ap­pear in any bench­mark or train­ing dataset in the wild to­day. Nobody could have bench­maxed for this, or cal­i­brated their quant to ac­com­mo­date it.

There are three avail­able full at­ten­tion back­ends to se­lect from in vllm for this work­load: FlashAttention 2, Flash Inference, and Triton Attention. This was the only change made be­tween ex­e­cu­tions, the rest of the hard­ware and soft­ware stack re­mained sta­ble.

I also per­formed a same-back­end cross-GPU re­peata­bil­ity con­trol. For this graph, I cap­tured the full-vo­cab­u­lary log­its in BF16 every 32 prompt to­kens. Distribution com­par­isons such as KLD were cal­cu­lated af­ter­ward in FP64 from those stored log­its.

Top-1 agree­ment is whether the to­ken with the high­est logit, the greedy argmax, was the same. All three back­ends were eval­u­ated against the same forced to­ken his­tory. A top-1 flip” there­fore means a back­end would have cho­sen a dif­fer­ent greedy next to­ken at that po­si­tion. We did not let that choice al­ter the re­main­ing his­tory. This keeps the math­e­mat­i­cal com­par­i­son con­trolled, but it does not show how far an un­con­strained gen­er­a­tion would branch or whether a tool call would even­tu­ally fail… that comes in test 2 ;D

The fol­low­ing graph shows % of sam­pled log­its re­sult­ing in to­ken flips:

For the first sev­eral thou­sand to­kens, every run of the model agreed about what the next to­ken was go­ing to be re­gard­less of back­end. Then in later por­tions of the prompt, back­ends be­gan dis­agree­ing. Triton was se­lected as the base­line to sim­plify up­com­ing quan­ti­za­tion chi­canery.

Each 8k-token win­dow con­tains 250 sam­pled po­si­tions, one probe every 32 to­kens. The per­cent­age is the frac­tion of those probes where the other back­ends high­est-scor­ing to­ken dif­fered from Triton’s.

Random noise was ac­counted for by run­ning the same test with the same at­ten­tion back­end mul­ti­ple times. The log­its across runs at every hid­den state were bit for bit iden­ti­cal. Meaning this par­tic­u­lar di­ver­gence comes ex­clu­sively from the ma­trix mul­ti­pli­ca­tion and ad­di­tion op­er­a­tions hap­pen­ing dur­ing pre­fill in­side trt/​fa2/​fi.

Disagreements ap­peared in clus­ters and var­ied with prompt con­tent rather than in­creas­ing smoothly with con­text length. This is not ev­i­dence of one uni­ver­sal length at which the model falls apart” but… we will get there soon…

Now that we have a base­line com­par­i­son of in­ter­est­ing prompt fuel, lets dive into…

Test 2: KV Cache quan­ti­za­tion, or why your LLMs IQ drops like a rock af­ter 40k to­kens

Repeating the same method­ol­ogy, we took the BF16 weights and BF16 kv cache base­line above run­ning Triton, and ran the next ex­per­i­ment. What hap­pens when you leave the weights and ac­ti­va­tions alone, and JUST quan­tize the kv-cache?

Ah, di­ver­gence. And this leads us to our first dump­ster-fire of the evening: a com­pletely re­pro­ducible tool call­ing er­ror.

Enough top-to­kens got flipped dur­ing tool calls, we let them play out and while BF16 was fine, int8 kv-cache even­tu­ally man­aged to re­cover, int4 did not!

Test 3: Weight Weight, Don’t Tell Me!

This time we are leav­ing all the kv-caches full size at bf16. We are adding some new play­ers to the game how­ever by com­par­ing:

BF16 ref­er­ence: Qwen/Qwen3.6 – 27B ( Qwen/Qwen3.6 – 27B · Hugging Face )

Official FP8: Qwen/Qwen3.6 – 27B-FP8 ( Qwen/Qwen3.6 – 27B-FP8 · Hugging Face )

INT8 W8A16: TheHouseOfTheDude/Qwen3.6 – 27B-INT8 ( TheHouseOfTheDude/Qwen3.6 – 27B-INT8 · Hugging Face )

NVIDIA NVFP4: nvidia/​Qwen3.6 – 27B-NVFP4 ( nvidia/​Qwen3.6 – 27B-NVFP4 · Hugging Face )

AWQ W4A16: cyankiwi/​Qwen3.6 – 27B-AWQ-BF16-INT4 ( cyankiwi/​Qwen3.6 – 27B-AWQ-BF16-INT4 · Hugging Face )

These 4 quants rep­re­sent a broad pic­ture of weights and ac­ti­va­tions. A no­table piece of in­for­ma­tion for our math­na­sium is the ac­tual CUDA ker­nel / GEMM (general ma­trix mul­ti­pli­ca­tion) / MMA (matrix mul­ti­ply ac­cu­mu­late) in­struc­tions be­ing run to cal­cu­late the log­its for each quant are dif­fer­ent:

Qwen3.6 – 27B (reference)

Weights/activations: BF16 weights, BF16 ac­ti­va­tions

Linear/GEMM: UnquantizedLinearMethod → torch.nn.func­tional.lin­ear. Each CUDA tile se­lected by its as­so­ci­ated shape/​geom­e­try.

KV cache: BF16 (Forced)

Qualification: Reference check­point.

Qwen3.6 – 27B-FP8

Weights/activations: E4M3 FP8 weights in 128×128 blocks; dy­namic FP8 ac­ti­va­tion quan­ti­za­tion in­side con­verted lin­ears; ex­cluded mod­ules such as lm_­head re­main BF16

Linear/GEMM: Fp8LinearMethod → CutlassFp8BlockScaledMMKernel

KV cache: BF16 (Forced)

Qualification: DeepGemm was au­to­mat­i­cally dis­abled be­cause vLLM flags its E8M0 scale for­mat as ac­cu­racy-de­grad­ing for this ar­chi­tec­ture (SM120); CUTLASS was se­lected in­stead. No cal­i­bra­tion dataset was iden­ti­fied in the pub­lished files.

Qwen3.6 – 27B-INT8

Weights/activations: Static, sym­met­ric, chan­nel-wise INT8 lin­ear weights; BF16 ac­ti­va­tions (W8A16). GDN/linear_attn pro­jec­tions and lm_­head ex­cluded from quan­ti­za­tion.

Linear/GEMM: CompressedTensorsWNA16 → MarlinLinearKernel

KV cache: BF16 (Forced)

Qualification: One-shot quan­ti­za­tion with ex­plic­itly no cal­i­bra­tion dataset. Its un­usu­ally good fi­delity is less mys­te­ri­ous once you ac­count for W8A16 plus un­quan­tized GDN pro­jec­tions.

Qwen3.6 – 27B-NVFP4

Weights/activations: Mixed check­point — 208 sta­tic FP8 W8A8 tar­gets cov­er­ing 64 full-at­ten­tion pro­jec­tions and 144 GDN pro­jec­tions; 193 NVFP4 W4A16 tar­gets cov­er­ing 192 MLP pro­jec­tions plus lm_­head, group size 16

Linear/GEMM:

FP8 tar­gets: ModelOptFp8LinearMethod → FlashInferFP8ScaledMMLinearKernel NVFP4 tar­gets: NVFP4 GEMM → MarlinNvFp4LinearKernel

FP8 tar­gets: ModelOptFp8LinearMethod → FlashInferFP8ScaledMMLinearKernel

NVFP4 tar­gets: NVFP4 GEMM → MarlinNvFp4LinearKernel

KV cache: BF16 (Forced)

Qualification: Not na­tive FP4 arith­metic in our up­stream-nightly run. vLLM clas­si­fied the GPU path as lack­ing na­tive FP4 sup­port and ex­plic­itly se­lected weight-only FP4 com­pres­sion through Marlin. The check­point’s em­bed­ded FP8 KV scheme was over­rid­den with BF16 KV for the bake­off.

Qwen3.6 – 27B-AWQ-BF16-INT4

Weights/activations: Static asym­met­ric INT4 weights, group size 32, MSE ob­server; BF16 ac­ti­va­tions (W4A16). GDN/linear_attn pro­jec­tions and lm_­head ex­cluded.

Linear/GEMM: CompressedTensorsWNA16 → MarlinLinearKernel

KV cache: BF16 (Forced)

Qualification: AWQ cal­i­bra­tion dataset dis­closed as STEM and Agentic.”

Other no­table in­for­ma­tion for this run:

Full soft­max/​GQA at­ten­tion for all mod­els was AttentionBackendEnum.TRITON_ATTN; JIT mon­i­tor ob­served ker­nel_u­ni­fied_at­ten­tion.

GDN pre­fill: Triton/FLA GDN pre­fill ker­nel, re­quested as tri­ton, head­_k_dim=128.

During ex­e­cu­tion, the re­cur­rent path also JIT-compiled _causal_conv1d_update_kernel, fused_re­cur­ren­t_­gat­ed_delta_rule_­packed_de­code_k­er­nel, and re­duce_seg­ments.

TP1, ea­ger mode, no CUDA graphs, no MTP/speculative de­cod­ing, lan­guage-only ex­e­cu­tion.

The next-to­ken flip re­sults shake out fairly pre­dictably. TheDude (W8A16) mops the floor with every­body, beat­ing first party FP8 (W8A8) and Nvidia(FP4-is-a-Lie) re­lease. In fact, out of the 5 op­tions, Nvidia’s re­lease comes in dead last hit­ting ~50% to­ken flips by the time we reach 88k con­text.

Both the NVFP4 and AWQ W4A16 failed to prop­erly close their tool calls and botched Cisco com­mand line syn­tax (the cor­rect com­mand was show arp’, while they ex­e­cuted show run’), while both FP8 and INT8 were able to com­plete the cor­rect calls.

In fu­ture ex­per­i­ments I will try to ex­plore the im­pact of us­ing dif­fer­ent fused GEMMs for the same weights, this is an­other in­ter­est­ing source of di­ver­gence where some­times you have to trade pre­ci­sion for speed.

Part 1 Wrap Up

I have quite a few more ex­per­i­ments and ob­ser­va­tions to post, but re­quire a great deal of par­al­lel GPU time to cal­cu­late and record every logit sam­pled across huge con­text chains on mul­ti­ple prompts with dozens of dif­fer­ent set­tings.

If you have spe­cific ques­tions, shoot me a DM or poke me on dis­cord I guess.

The Golden Rule for Becoming a Better Writer

nappertime.com

I’m ob­sessed with the craft of writ­ing. I write every day, I read about the craft of­ten, and in my spare time I like to un­wind by… watch­ing in­ter­views where au­thors talk about their writ­ing process. It’s a sick­ness. Help me.

One of the key things I’ve learned is this: there’s no real blue­print. I say this to as­pir­ing writ­ers in my work­shops, and those I men­tor. There’s no one way — every writer will have a dif­fer­ent path to cre­ation. Now, this does­n’t mean you should­n’t be lis­ten­ing to other au­thors, not at all — it’s a great way to help you think about the cre­ative process — but it does mean noth­ing is holy writ.

Except the one golden rule*. One rule that is true, no mat­ter the writer. One rule, that if you don’t fol­low, means you should­n’t be writ­ing in the first place.

Here it is: Read as much as you can. Read widely and well.

I would’ve thought the ne­ces­sity of read­ing in this pro­fes­sion ob­vi­ous. But I’ve no­ticed a wor­ry­ing trend lately: as­pir­ing writ­ers who don’t read.

Whenever I give a work­shop, or an oc­ca­sional cre­ative writ­ing lec­ture at uni, or men­tor an in­di­vid­ual, I al­ways ask the fol­low­ing ques­tions: who are your favourite au­thors? And, what are you read­ing now? I do this as a short cut to find­ing out their in­ter­ests, and how there­fore I might frame my ad­vice.

But over the past few years, more and more the an­swer will be: I’m too busy to read. Or: I haven’t read a book in a while (whereafter they rack their brains and tell me they might’ve read Fourth Wing a year back).

To which I say this: fuck you, you’re not too busy.

Joking. I would never say that. But I cer­tainly fuck­ing think it. Now, to be clear — I’m not diss­ing the Fourth Wing here. On the con­trary: if Fourth Wing is a gate­way drug to get­ting some­one back into read­ing, then any­one who loves books should be thank­ful to Rebecca Yarros.

But I am say­ing this: go look at your phone, and tell me what your av­er­age screen time is per day. Two hours? Five? Seven? If so — shut up: you’ve time to read.

I write full-time, cur­rently work three gig jobs on the side, and am en­gaged with lives of my two chil­dren. I read every night. It’s not hard: in­stead of star­ing at my phone, or stream­ing, I read. This is not a boast, nor is it spe­cial. This is my job as a writer.

You want to be a writer? Then shut up and read.

Here’s why:

1) Reading teaches the writer about the craft

Every book is an ed­u­ca­tion. Good, bad, mediocre, they teach us the writ­ing craft. Even if we’re not study­ing the text per se, we’re learn­ing. All the books you’ve ever read — es­pe­cially the books you read when you were younger — have im­printed them­selves on your brain.

It might be genre, char­ac­ter type, trope, set­ting, struc­ture, any­thing, every­thing — you’ve ha­bit­u­ated your brain to the pat­terns and el­e­ments of the novel. Certain writ­ers will have a style that will ap­peal, and it is com­pletely fine to em­u­late that style as you de­velop your own voice’ as a writer (by voice I mean, the ex­pres­sion of in­di­vid­u­al­ity in your art).

When I be­gan writ­ing, I had some early beta read­ers say: oh, I see you’ve fol­lowed the clas­sic three-act struc­ture. To which I thought: I did? I did­n’t know struc­ture back then; I’d never taken a cre­ative writ­ing class. Yet my writ­ing brain in­stinc­tively cre­ated one, be­cause it had been in­formed by my life as a reader.

In the years since, I’ve sub­se­quently taught classes on three and five-act struc­tures, and the pur­pose of struc­ture in gen­eral. I’m not say­ing such for­mal classes are of no value, but I do tend to think they are over­rated. The re­al­ity is, up un­til re­cent decades, creative writ­ing’ was not a de­gree in and of it­self. The much-vaunted MFA is only a rel­a­tively re­cent phe­nom­ena. They might be use­ful for some, but ul­ti­mately are pe­riph­eral com­pared to the cen­tral im­por­tance of read­ing.

2) Reading in­spires the writer

I love read­ing out of genre. The best ideas I get for sci­ence fic­tion don’t come from sci­ence fic­tion. Crime, for ex­am­ple — hard­boiled fic­tion in par­tic­u­lar — helped me bet­ter un­der­stand the ori­gins of cy­ber­punk, its the­matic core, and some of the styl­is­tic pos­si­bil­i­ties of the sub­genre. Non-fiction has given me an un­end­ing sup­ply of the raw ma­te­ri­als for story — whether that be cur­rent events, or his­tory, or sci­ence, or phi­los­o­phy, or any­thing else — and been a con­stant source of in­spi­ra­tion. Poetry, as a third ex­am­ple, has taught me how I might use words in an el­e­gant way, and with the strictest of econ­omy cre­ate an im­age, or a mood, or a feel­ing.

A book al­most al­ways has some­thing to teach us — even if it’s how not to write.

3) Reading changes the struc­ture of the brain

There was a ter­ri­ble American TV show called Everyone Loves Raymond. I re­mem­ber lit­tle about it, other than when it came on, I tended to change the chan­nel (the show is so old that chang­ing chan­nels was still a thing). But to this day I re­mem­ber an ex­change be­tween the two leads. Raymond has just left his job as a jour­nal­ist.

His wife says to him: Why don’t you write the great American novel?”

Raymond replies: Write it? I would­n’t want to read it.”

Cue the canned laugh­ter. It is a lit­tle funny, I guess, be­cause Raymond has no in­ter­est in lit­er­a­ture, so the thought of him writ­ing it is ab­surd.

But here’s the thing: it sums up what’s wrong with the men­tal­ity of many an as­pir­ing writer to­day. One I sim­ply don’t un­der­stand. Why be a writer if you don’t love read­ing? Why de­vote your in­tel­lec­tual and emo­tional en­ergy to cre­at­ing a book, when it’s a form you’re not in­vested in? Why write, when you aren’t steeped in won­der of sto­ry­telling?

Think about the great film di­rec­tors. Nolan, or Tarantino, or Scorsese, any of them. They love film. They live and breathe it. Their knowl­edge of cin­ema is en­cy­clopaedic and it has with­out ques­tion in­spired them and made them bet­ter di­rec­tors. Their cin­e­matic vi­sion has been in­formed by the rich­ness of the his­tory of cin­ema, and re­alised through their life-long com­mit­ment to the form.

Literature is no dif­fer­ent. Take Le Guin, or Virginia Woolf, or Nabokov. These writ­ers were ex­tra­or­di­nar­ily well-read, whose pas­sion for the writ­ten word in­fused their en­tire cre­ative ex­is­tence, whose time, when not writ­ing, was of­ten spent dis­cussing or re­view­ing or de­bat­ing nov­els.

That’s the thing about Generative AI. It gives all the Raymonds out there, the peo­ple who don’t even like read­ing, the ca­pac­ity to gen­er­ate a book. It’s not just that they are lazy and tal­ent­less, they’re not even in­ter­ested in lit­er­a­ture. They don’t ac­tu­ally like art, they just like the idea of mak­ing art.

But I don’t want to waste my time talk­ing about those losers (and yes, I’m get­ting to the part about brain struc­ture — this pre­am­ble is rel­e­vant). This ar­ti­cle is not for them, but for you, the as­pir­ing writer (or, per­haps, some­one like me, a pub­lished au­thor who yet is ob­sessed with the way oth­ers con­ceive of their craft).

I read 52 books a year. I have friends who read over a hun­dred (which for me per­son­ally would be too much: I like to savour my books). Some au­thors I know read as low as 20, and that re­ally is the bare min­i­mum.

Reading changes the struc­ture of the brain, and for the good. But here’s the rub: a dig­i­tal ad­dic­tion also changes your brain, and for the ill.

This is a phe­nom­e­non dealt with by Maryanne Wolf in Reader, Come Home: The Reading Brain in a Digital World,’ but which I’ve seen else­where, time and again, in opin­ion ar­ti­cle and in peer re­viewed sci­ence. In essence, the dig­i­tal brain — dis­tracted by so­cial me­dia, fiercely hunt­ing for the next en­dor­phin hit, its at­ten­tion span se­verely lim­ited — is anath­ema to the read­ing brain, which needs time, sus­tained con­cen­tra­tion, vivid imag­i­na­tion, and crit­i­cal think­ing skills.

More and more we lose the abil­ity to im­merse our­selves in a book, be­cause we’ve rewired our neural path­ways to the dig­i­tal ex­pe­ri­ence. You know the feel­ing. The urge to keep pick­ing up your phone, the doom scrolling that eats un­told hours/​days/​weeks from your life, the anx­ious­ness caused by your so­cial me­dia feed and the anx­ious­ness caused by not hav­ing ac­cess to your so­cial me­dia feed. It’s a per­ni­cious age, where the smart phones we all must carry are in­fested by apps al­go­rith­mi­cally de­signed by the bio­hack­ers of the large tech com­pa­nies to hi­jack the time­line of your life, and di­vert your at­ten­tion.

And here’s the thing: the read­ing brain — which many of us are los­ing — is also the writ­ing brain. That is: at­ten­tion span, sus­tained con­cen­tra­tion, and a vivid imag­i­na­tion are fun­da­men­tal skills re­quired the au­thor. Writing a book is like run­ning a marathon, and the fit­ness regime re­quired to do so is read­ing. It builds your cre­ative mus­cles, the sta­mina to stay at your com­puter and find the words, and if you are lucky, en­ables the flow state of cre­ative writ­ing, where the world dis­ap­pears and all that re­mains is story. Flow state: that ex­tra­or­di­nary and rare ex­pe­ri­ence that yet all writ­ers have known, where sud­denly hours have passed while you’ve been im­mersed in story.

And to be clear: if you are ad­dicted to the dig­i­tal, there’s hope for you yet. Just a few weeks of putting aside the phone at night, of set­tling down with a book for an hour, this will change your brain. It will de­velop your writ­ing mus­cles.

So there you have it: the se­cret to be­ing a bet­ter writer, and the se­cret all great writ­ers share. And I’ve given it to you for free. Now all you need to do, is do it, every day.

Go forth, and read.

My lat­est re­lease: This Machine Kills Billionaires

And click here for all my books.

(*It goes with­out say­ing that to you must write, as well. This is not a rule’ as such as it is a state­ment of re­al­ity: writ­ers write. Write as much as you can, as your sched­ule will al­low. No ex­cuses. Write).

typ.ing

typ.ing

typ.ing is an awe­some typ­ing trainer, de­signed to help you get faster and more ac­cu­rate when typ­ing with an ex­ter­nal key­board.

It looks like you’re us­ing a mo­bile de­vice - typ.ing will work much bet­ter if you plug a phys­i­cal key­board in (or just use a com­puter).

Do you have a phys­i­cal key­board con­nected?

Typey typey type

Thinking in Python

thinkinginpython.com

Bruce Eckel

Insights, Idioms and Patterns

01Introduction

Part I · Foundations

02Tour

03Containers

04Control Flow

05Functions

06Modules and Packages

07Classes

08Static Typing

09Class Attributes

10Cleanup

Part II · Techniques

11Testing

12Data Classes as Types

13Pattern Matching

14Decorators

15Context Managers

16Comprehensions

17Metaprogramming

18Performance

19Concurrency

Part III · Patterns

20Rethinking Objects

21The Pattern Concept

22Data Transfer Objects

23Iterators

24Singleton

25Template Method

26Surrogate

27Factory

28Function Objects

29Changing the Interface

30Observer

31State Machines

32Multiple Dispatching

33Visitor

34Composite and Interpreter

35Flyweight

36Memento

37Pattern Refactoring

38Simulation

39Pattern Catalog

Part IV · Functional Programming

40Foundations

41Toolkits

42Error Handling

43Assurance

Part V · Effects

44Effect Management

45Generators

46Stateless

47Stateless in Practice

© 2026 Bruce Eckel. Licensed CC BY-NC-ND 4.0.Freely read­able on­line. No re­pro­duc­tion with­out per­mis­sion.

Book Examples & Exercise Solutions on GitHub

RF Cafe Homepage

www.rfcafe.com

Hugo Gernsback - A Concise Biography

Being a big fan of

Hugo Gernsback’s tech­ni­cal work through his many elec­tron­ics-re­lated pub­li­ca­tions (The Electrical Experimenter, Radio Amateur News, Radio News, Radio-Craft, Short-Wave Craft, Radio-Electronics, etc.), I de­cided to task a cou­ple of dif­fer­ent AI mod­els with con­duct­ing a deep-dive re­search pro­ject on all as­pects of his back­ground - fam­ily, school­ing, busi­ness, fi­nances, pol­i­tics, etc. Then, I had the AI com­bine all re­sults, while avoid­ing du­pli­ca­tion, and fil­ter­ing out facts” that can­not be val­i­dated. A lot of web­sites con­tain Hugo Gernsback bios of vary­ing lengths, but this, I be­lieve, is the most com­pre­hen­sive and con­cise. Photos were col­lected across the WWW

Amateur Radio Crossword Puzzle

This cus­tom Amateur Radio cross­word puz­zle con­tains many words par­tic­u­lar to Amateur Radio (labeled with an as­ter­isk *). Each week for two decades I have cre­ated a new tech­nol­ogy-themed cross­word puz­zle us­ing only words (1,000s of them) from my cus­tom-cre­ated lex­i­con re­lated to en­gi­neer­ing, sci­ence, math­e­mat­ics, chem­istry, physics, as­tron­omy, etc. You will never find among the words names of politi­cians, moun­tain ranges, ex­otic foods or plants, movie stars, or any­thing of the sort. You might, how­ever, find some­one or some­thing in the oth­er­wise ex­cluded list di­rectly re­lated to this puz­zle’s tech­nol­ogy theme, such as Hedy Lamarr or the Bikini Atoll…

How Audions Were Built

If you have never read the story of Lee de Forest’s jour­ney from ini­tial ex­per­i­ments to fi­nally achiev­ing suc­cess with his am­pli­fy­ing vac­uum tube, the Audion, then you might want to take a few min­utes to look over this ar­ti­cle. It was pub­lished in a 1947 is­sue of Radio-Craft mag­a­zine as part of the 40th an­niver­sary of the in­ven­tion that changed the elec­tron­ics world. With so many other things which are nowa­days very com­mon­place, we tend to not think about or ap­pre­ci­ate the in­ge­nu­ity and ef­fort that went into them. It is one thing to make in­cre­men­tal im­prove­ments in an ex­ist­ing tech­nol­ogy, but to con­ceive of and cre­ated an en­tirely new realm of sci­ence is quite an­other. As with Albert…

Student’s Radio Physics Course - Series & Parallel Circuits

Not every­one who vis­its web­sites like RF Cafe is a sea­soned elec­tron­ics vet­eran. While I and most likely you, too, can do se­ries and par­al­lel cir­cuit analy­sis (and se­ries/​par­al­lel for that mat­ter, pos­si­bly us­ing Fourier or La Place trans­forms for re­ac­tive AC cir­cuits) in our sleep, many are re­cently get­ting into the won­der­ful world of elec­tron­ics who are just com­ing of age or have sud­denly at a later point in life de­vel­oped a pas­sion for the craft. Accordingly, this ar­ti­cle from Radio News mag­a­zine pro­vides yet an­other tu­to­r­ial on the fun­da­men­tals of se­ries and par­al­lel cir­cuit analy­sis. Only re­sis­tors and ba­sic Ohms law are cov­ered…

Exodus AMP20005 18 – 40 GHz, 20 W SSPA

Exodus Advanced Communications pre­sents the

AMP20005 is a solid-state RF power am­pli­fier op­er­at­ing from 18.0 to 40.0 GHz with 20 W min­i­mum power. Designed for EMI/RFI, lab­o­ra­tory, CW/pulse, and com­mu­ni­ca­tion ap­pli­ca­tions, the am­pli­fier fea­tures in­stan­ta­neous wide band­width, Class A/AB lin­ear de­sign, built-in pro­tec­tion cir­cuits, and re­mote-con­trol ca­pa­bil­i­ties. Features Include * Designed for EMI/RFI, lab, CW/Pulse and all com­mu­ni­ca­tions ap­pli­ca­tions * Small form fac­tor, rack-mounted sys­tem * Class A/AB lin­ear de­sign * High power ad­vanced tech­nol­ogy de­vices * Instantaneous ul­tra-wide band­width * Built-in pro­tec­tion cir­cuitry…

Thévenin’s Theorem Quiz

Thévenin’s the­o­rem stands as one of the most pow­er­ful cir­cuit sim­pli­fi­ca­tion tools in elec­tri­cal en­gi­neer­ing. It states that any lin­ear, two-ter­mi­nal net­work - no mat­ter how com­plex - can be re­duced to an equiv­a­lent cir­cuit com­pris­ing a sin­gle volt­age source (VTH) in se­ries with a sin­gle re­sis­tance (RTH). To de­ter­mine these pa­ra­me­ters, en­gi­neers short all in­de­pen­dent volt­age sources, open all in­de­pen­dent cur­rent sources, and cal­cu­late the equiv­a­lent re­sis­tance seen from the ter­mi­nals. VTH is sim­ply the open-cir­cuit volt­age across the ter­mi­nals. This the­o­rem proves in­valu­able when an­a­lyz­ing how dif­fer­ent loads af­fect cir­cuit per­for­mance, as the equiv­a­lent cir­cuit re­mains un­changed…

Comics with an Electronics Theme

Here are a cou­ple more tech-themed comics from a vin­tage elec­tron­ics mag­a­zine (Popular Electronics). The one from page 101 re­minds me again about how dif­fer­ent the world of re­tail sales is to­day com­pared to just two short decades ago. Prior to the ad­vent of on­line mar­ket­ing and sales, you ei­ther walked into a brick and mor­tar (a term rarely heard be­fore the Internet era) type store and walked out with your pur­chased prod­uct, or you thumbed through a cat­a­log and placed an or­der ei­ther by mail or tele­phone. Most peo­ple opted to pay for a postage stamp rather than pay the long dis­tance phone charge (a term rarely heard to­day). Free overnight or 2-day ship­ping from many e-stores makes…

Ward Para-Con Antenna

The word pre­fix para” can mean above and be­yond” or resembling” or abnormal or in­cor­rect.” Ward Products prob­a­bly pre­ferred first two be in­ferred by po­ten­tial cus­tomers when nam­ing their PARA-CON tele­vi­sion an­tenna, al­though it ac­tu­ally is a short­en­ing of parabolic.” The con” part is a short­en­ing of conical.” After read­ing the text of this full-page ad­ver­tise­ment from a 1951 is­sue of Radio & Television News mag­a­zine, I’m in­clined to as­sign the third pre­fix mean­ing of para” to it. Then, add in the con” part where con” can take on ei­ther the noun form mean­ing of disadvantage” or the verb form de­f­i­n­i­tion of to trick or de­fraud,” and you get what this an­tenna truly rep­re­sented in terms…

Transmission-Line Feed for Short-Wave Antennas

When some­one with the first name of True” writes an ar­ti­cle about trans­mis­sion line feeds for short-wave an­ten­nas, you should prob­a­bly take note. This very topic has been cov­ered in de­tail many times since the use of im­ped­ance-matched trans­mis­sion lines have been in use (more than a cen­tury), but since there are al­ways peo­ple new to the con­cept, it is good to keep in­tro­duc­ing the topic on a reg­u­lar ba­sis.“Trans­mis­sion-Line Feed for Short-Wave Antennas” ap­peared in a 1932 is­sue of QST mag­a­zine. Even in this era of pre­fab­ri­cated every­thing, it still of­ten comes down to wind­ing coils and ad­just­ing ca­ble lengths to get op­ti­mal im­ped­ance matches be­tween trans­ceivers and an­ten­nas…

Electrodrome: Fog and Poison Gas Dissipator

The 1934 Flying Aces mag­a­zine’s Electrodrome: Fog and Poison Gas” ar­ti­cle de­scribed a de­vice in­vented by William Haight that al­legedly used high-volt­age elec­tro­sta­tic fields to precipitate” fog over a ra­dius of about 1.5 miles and, by ex­ten­sion, might neu­tral­ize poi­son gas. The con­cept was based on a real phys­i­cal phe­nom­e­non - charged droplets and aerosols can be moved, col­lected, or co­a­lesced by elec­tric fields - but the ar­ti­cle’s large-scale claims and Haight’s at­mos­pheric the­ory do not align with mod­ern at­mos­pheric physics. The likely out­come was fail­ure as a prac­ti­cal out­door fog-dis­per­sal or poi­son-gas-de­fense sys­tem. I found no cred­i­ble ev­i­dence that Haight’s elec­tro­drome was adopted by air­ports, the U.S. gov­ern­ment, mil­i­tary…

Electronic Crossword Puzzle

This Electronic Crossword” ap­peared in the September 1958 is­sue of Radio & TV News mag­a­zine. Its cre­ator, John Gill, de­signed spe­cialty theme cross­word puz­zles for many other edi­tions of Radio & TV News and Electronics World (see the big list at the bot­tom of the page). He con­sid­ered this cross­word to be a fooler” be­cause he claims to in­clude many unusual de­f­i­n­i­tions and a num­ber of ob­scure words which you will have to work around if your vo­cab­u­lary of exotic words’ is rusty.” It re­ally does­n’t seem so dif­fi­cult to me, and any­one used to work­ing my cus­tom RF Cafe Crosswords will have no prob­lem with it…

Building Your Own Audio Frequency Choke Coils

One very sat­is­fy­ing as­pect of rolling your own’ au­dio fre­quency coils (aka chokes, aka in­duc­tors), is how well the sim­ple in­duc­tance equa­tions match mea­sured end re­sults. Unless you re­ally man­age to man­gle the job, if you use the right equa­tion and are rea­son­ably care­ful to ob­serve wire size, spac­ing (including in­su­la­tion), and core di­am­e­ter, you will be amazed at how close prac­tice matches the­ory. Although strictly speak­ing au­dio fre­quen­cies run from a few Hertz up to maybe 15 kHz for peo­ple with re­ally good hear­ing. My ex­pe­ri­ence is that sim­i­lar suc­cess can be had even into the low MHz realm with just a lit­tle tun­ing re­quired. It’s not un­til you get into the realm of self-res­o­nance…

Heath Company: Heathkit Advertisement

Heathkit’s claim to fame was that it was able to of­fer user-as­sem­bled kits of high qual­ity elec­tronic prod­ucts at a price lower than what equiv­a­lent fac­tory as­sem­bled equiv­a­lents would cost. While that is prob­a­bly gen­er­ally the case, it is dif­fi­cult to gauge what the rel­a­tive qual­ity re­ally is. Some of the kits were easy to as­sem­ble for even peo­ple with lit­tle ex­pe­ri­ence, but a good por­tion of them re­quired fa­mil­iar­ity with sol­der­ing and how elec­tron­ics were put to­gether. The in­struc­tions pro­vided were very thor­ough, com­plete with pho­tos and draw­ings of how each step should look. In fact, ac­cord­ing to a 1972 in­stall­ment of Mac’s Service Shop en­ti­tled Philosophy of a Kit Manufacturer,” every Heathkit kit…

RF Cafe Quiz #92: Electric Fields

An elec­tric field is a vec­tor field that sur­rounds elec­tri­cally charged par­ti­cles and ex­erts a force on all other charged par­ti­cles in the field, ei­ther at­tract­ing or re­pelling them. It is the fun­da­men­tal man­i­fes­ta­tion of the elec­tric force, act­ing as the in­ter­me­di­ary through which charges com­mu­ni­cate. From the sta­tic po­ten­tial of a charged ca­pac­i­tor plate to the dy­namic, wave-prop­a­gat­ing fields of an an­tenna, elec­tric fields are cen­tral to elec­tron­ics, semi­con­duc­tor physics, and elec­tro­mag­net­ics. This Electric Fields Quiz ex­plores the prin­ci­ples that gov­ern these in­vis­i­ble forces, in­clud­ing the in­verse-square re­la­tion­ship de­fined by Coulomb’s Law, the con­cept of elec­tric po­ten­tial (voltage)…

The Tecnetron: Competitor to the Transistor?

Breaking news from May 1958: Hardly a month passes nowa­days with­out the an­nounce­ment of some sensational’ new am­pli­fy­ing de­vice. The great ma­jor­ity of these star­tling in­ven­tions, af­ter their brief flurry in the pop­u­lar and tech­ni­cal press, dis­ap­pear into obliv­ion. But we be­lieve that the Tecnetron, just an­nounced in France, has a bril­liant and en­dur­ing fu­ture.” Have you ever heard of a Tecnetron? I did­n’t think so; nei­ther had I be­fore read­ing this ar­ti­cle in Radio-Electronics. I guess that pretty much negates the pre­ced­ing pre­dic­tion. The holy grail of the Tecnetron, whose et­y­mol­ogy in and of it­self is worth read­ing about (it’s not what you would guess), is that its transcon­duc­tance…

Simpson Electric Company Advertisement

Before the days of cheap stuff from China, the sup­ply of most com­mon items- par­tic­u­larly high tech­nol­ogy - were the do­main of rel­a­tively few com­pa­nies. In some ways it was not en­tirely a bad thing be­cause, at least the­o­ret­i­cally, the econ­omy of scale en­abled larger pro­duc­ers to lever­age bulk buy­ing, well-equipped de­vel­op­ment labs and man­u­fac­tur­ing equip­ment, and pool­ing of tal­ent re­sources to sell qual­ity prod­ucts at a lower price. Of course it re­quired that the com­pany had se­ri­ous com­peti­tors or mo­nop­o­lis­tic ten­den­cies re­sulted in goug­ing - it’s hu­man na­ture, un­for­tu­nately. Hewlett Packed, as much as I ap­pre­ci­ate what the com­pany did for elec­tron­ics test equip­ment, had got­ten…

Varian Associates Radar Illustrations by C.E.B. Bernard

Frequent RF Cafe vis­i­tor who goes by the moniker Unknown Engineer” sent me a hy­per­link to a PDF file on Amazon’s CloudFront* con­tent de­liv­ery net­work (CDN - ba­si­cally a file server) that con­tains no fewer than 17 amaz­ing radar and vac­uum tube re­lated line draw­ings pub­lished by Varian Associates’ TWT Division, Palo Alto Tube Division, Solid State Division, Eastern Tube Division, Western Tube Division, Solid State West Division. These highly de­tailed and busy draw­ings were done around 1975 by British il­lus­tra­tor/​artist C.E.B. Bernard; a search for his works did not re­veal much. The events shown are fic­ti­tious, as are the ac­com­pa­ny­ing hand-printed sto­ries. Some of the puns…

Loading his­tory…

The RF Cafe Homepage Archive is a com­pre­hen­sive col­lec­tion of every item ap­pear­ing daily on this web­site since 2008 - and many from ear­lier years. Many thou­sands of pages of unique con­tent have been added since then.

Many years have passed since I sat in a col­lege class­room to learn about tran­sis­tor fun­da­men­tals. The in­dus­try had long moved past ger­ma­nium tran­sis­tors and was solidly into sil­i­con. Having been for­mally in­tro­duced to tran­sis­tors in the USAF, I was fa­mil­iar with their func­tion­al­ity from a tech­ni­cian’s per­spec­tive of check­ing for gain, proper bias (as in­di­cated on educated” schemat­ics), and de­ter­min­ing go-no-go health by per­form­ing a front-to-back re­sis­tance mea­sure­ment us­ing an ohm­me­ter. Holes, en­ergy bands, gate widths, and dop­ing lev­els were first en­coun­tered in solid state physics class, how­ever. This ar­ti­cle does a nice job of in­tro­duc­ing the terms and con­cepts at a lay­man’s level. I ac­tu­ally found the vac­uum tube cir­cuits in our radar unit eas­ier…

Each week, for the sake of all avid cru­civer­bal­ists amongst us, I cre­ate a new tech­nol­ogy-themed cross­word puz­zle us­ing only words from my cus­tom-cre­ated lex­i­con re­lated to en­gi­neer­ing, sci­ence, math­e­mat­ics, chem­istry, physics, as­tron­omy, etc. This one for November 10, 2019 cel­e­brates Veterans Day. You will never find among the words names of politi­cians, moun­tain ranges, ex­otic foods or plants, movie stars, or any­thing of the sort. You might, how­ever, see some­one or some­thing in the ex­clu­sion list who or that is di­rectly re­lated to this puz­zle’s theme, such as Hedy Lamarr or the Bikini Atoll, re­spec­tively…

Just as most peo­ple no longer wear a wrist­watch since their (practically) sur­gi­cally at­tached smart­phones can pro­vide the time, few peo­ple bother with car­ry­ing around an elec­tronic cal­cu­la­tor. It’s’ been that way for at least a decade now. When this ar­ti­cle en­ti­tled Calculators Get Smaller, Smarter and Cheaper” ap­peared in a 1974 is­sue of Popular Mechanics mag­a­zine, pocket elec­tronic cal­cu­la­tors were still a rel­a­tively new phe­nom­e­non. Hewlett Packard had in­tro­duced their first cal­cu­la­tor, the HP-35, just two years ear­lier. The first American-made pocket cal­cu­la­tor, the Bowmar 910B, aka The Brain,” came out in late 1971/early 1972 and sold for about $240. It had only ba­sic math func­tions and sported a tiny LED dis­play. Prices fell very quickly as many com­pa­nies were re­leas­ing mod­els with more and more fea­tures. By the time of this ar­ti­cle, cal­cu­la­tors with ba­sic func­tions could be bought for a mere $16.95 ($84.05 in 2019 money…

This is a re­peat of some­thing I posted a decade ago, but by now mil­lions more peo­ple have en­tered the elec­tron­ics realm and might ap­pre­ci­ate it. You might, too, if you did­n’t see it orig­i­nally. You have prob­a­bly seen some­where along the line in your elec­tron­ics ca­reer the re­sis­tor cube prob­lem. The 12 edges of the cube each con­tain a 1 Ω re­sis­tor, and the chal­lenge is to cal­cu­late what the equiv­a­lent re­sis­tance is be­tween two op­pos­ing cor­ners. It is a daunt­ing prob­lem us­ing straight cir­cuit analy­sis, since it re­quires writ­ing and solv­ing mul­ti­ple mesh equa­tions. There are lots of op­por­tu­ni­ties for mak­ing mis­takes. One op­tion if you had the time and fa­cil­i­ties would be to build the model in a cir­cuit sim­u­la­tor and let it de­ter­mine the re­sult. Usually, though, the cube is thrust upon you in a com­pro­mis­ing sit­u­a­tion, like in a job in­ter­view…

The year was 1941 and the ra­dio in­dus­try was go­ing strong world­wide. Sales of re­ceivers was hit­ting new highs every quar­ter and ser­vice shops had all the work they could han­dle for re­pair, up­grades, and in­stal­la­tions. The ra­dio broad­cast realm was scram­bling to build new stu­dios, in­stall trans­mit­ters and an­ten­nas, hire an­nounc­ers and man­agers, and up­grade to keep up with the quickly evolv­ing busi­ness. Take a look at these 24 full pages of ra­dio-re­lated prod­ucts of­fered by the Sears, Roebuck Company in their Fall and Winter 1941 – 1942 cat­a­log. It is typ­i­cal of most ra­dio man­u­fac­tur­ers’ cat­a­logs of the era. For the last decade en­gi­neers had been work­ing over­time to sat­isfy con­sumer de­mand for fancier cab­i­net de­signs with fancier fea­tures. So strong was pub­lic de­mand that peo­ple put their high­est pri­or­ity on ac­quir­ing the lat­est mod­els (not un­like the smart­phone craze of to­day). Then,…

The RCA Victor Model C9 – 4 is a 9-tube, 3-band su­per­hetero­dyne con­sole model ra­dio made in the mid 1930s. A Radio Service Data Sheet for it ap­peared in the January 1936 is­sue of Radio-Craft mag­a­zine. The im­age of the ra­dio was found on the RadioMuseum.org web­site. FM broad­cast­ing was not in com­mon use yet, so only AM bands and some short­wave bands were avail­able. In fact, 1936 was the year that fre­quency mod­u­la­tion (FM) in­ven­tor Edwin H. Armstrong first demon­strated his new­fan­gled con­cept that largely solved the elec­tri­cal sta­tic noise prob­lem cause by light­ning, mo­tor brushes, arc­ing over­head power lines…

In 1958, most peo­ple were not ac­cus­tomed to see­ing the now-fa­mil­iar maps plot­ting the si­nu­soidal courses of satel­lites across the face of the earth. It had only been in October of the pre­vi­ous year that any ob­ject other than the moon was in or­bit around our home planet - that was U.S.S.R.’s Sputnik. Just as peo­ple of all ages and all back­grounds en­thu­si­as­ti­cally joined in the new­fan­gled phe­nom­e­non of aero­planes af­ter the Wright Brothers flew their frag­ile craft at Kitty Hawk, elec­tron­ics com­mu­ni­ca­tions and sci­en­tists world­wide hopped aboard the satel­lite train (so to speak). This ar­ti­cle from a 1958 is­sue of Radio & TV News mag­a­zine pro­vided in­sight into the con­struc­tion and flight char­ac­ter­is­tics of early U.S. satel­lites, and of­fered ad­vice on how to par­tic­i­pate in the on­go­ing International Geophysical Year (IGY) re­search ef­fort by tun­ing in and re­port­ing your sig­nal re­cep­tion char­ac­ter­is­tics. Activity was not just the do­main of op­er­a­tors with so­phis­ti­cated equip­ment…

This quiz from Popular Electronics mag­a­zine chal­lenges (not too much, though) your knowl­edge of en­ergy con­ver­sion in com­mon de­vices. A few of them might be un­fa­mil­iar to peo­ple born af­ter about 1990, but even so, you’ve prob­a­bly seem them all at some point, es­pe­cially if you are a reg­u­lar RF Cafe vis­i­tor (meaning you’re prob­a­bly smart). It won’t be giv­ing any­thing away by telling you that item B is a heater that screws into a light bulb socket, and item F is a phono­graph sty­lus Robert P. Balin con­structed many quizzes of this kind in the 1960s and 70s. A com­plete list of all the Popular Electronics Quizzes is lower on this page…

Proving once again what a vi­sion­ary Hugo Gernsback was re­gard­ing sci­ence and en­gi­neer­ing, he pub­lished in his Radio-Craft mag­a­zine this prog­nos­ti­ca­tion for the even­tual sup­plant­ing of point-to-point wiring with printed cir­cuit boards. Admittedly, by 1948 the elec­tron­ics in­dus­try had be­gun to out­grow hand-wired chas­sis as­sem­blies with a rats nest of wires, com­po­nents, and ter­mi­nal strips. It was in dire need of a new par­a­digm that re­duced la­bor costs and re­duced the op­por­tu­nity for wiring er­rors. Less than a year ear­lier (December 1947) the trio of en­gi­neers at Bell Labs an­nounced their tran­sis­tor in­ven­tion, so Mr. Gernsback knew the world was about to change sig­nif­i­cantly. Bulky trans­form­ers, vac­uum tubes, and high volt­age cir­cuits would soon be rel­e­gated - at least in the con­sumer prod­uct realm - to the new­fan­gled tele­vi­sion prod­ucts, so minia­tur­iza­tion would fol­low quickly. Even the smaller fin­gers of women on the as­sem­bly lines…

Here is a lit­tle elec­tron­ics hob­by­ist hu­mor in the form of a comic se­ries ti­tled Hobnobbing with Harbaugh,” com­pli­ments of Popular Electronics artist Dave Harbaugh. Citizens Band ra­dio and dirty hip­pies were the topic of the day in the 1970s, so that’s what you see in a cou­ple of these comics. I got my first 23-channel CB ra­dio (FCC man­dated 40 chan­nels in 1977) in 1976 and in­stalled it in my 1969 Camaro SS hot rod. It re­quired a Class D ra­dio op­er­a­tor li­cense at the time, but shortly there­after no li­cense was needed. The Inventions Wanted” comic is my fa­vorite, fol­lowed by Mayday… Mayday!” You don’t need to be an am­a­teur ra­dio op­er­a­tor to ap­pre­ci­ate these comic strips…

Forgive me if I sound like a bro­ken record (a scratched record, ac­tu­ally), but when se­lect­ing ar­ti­cles for post­ing here on RF Cafe, I like to in­clude ones that are di­rected to­ward new­com­ers to the field of elec­tron­ics as well as for sea­soned vet­er­ans. This piece from a 1958 is­sue of Radio & TV News mag­a­zine en­ti­tled Basic Electronic Counting,” is a prime ex­am­ple in that it in­tro­duces the con­cept of bi­nary num­bers. We’ve all been there at some point in our ca­reers. A big dif­fer­ence be­tween now and when this ar­ti­cle ap­peared is that in 1958, al­most no­body was fa­mil­iar to bi­nary num­bers, and fuggetabout [sic] oc­tal and hexa­dec­i­mal. Only those rel­a­tively few peo­ple de­sign­ing and work­ing with mul­ti­mil­lion dol­lar, vac­uum tube-based dig­i­tal com­put­ers in­stalled in uni­ver­si­ties, mega­cor­po­ra­tions, and gov­ern­ment re­search fa­cil­i­ties…

Radio Service Data Sheets were pub­lished by var­i­ous elec­tron­ics trade mag­a­zines back in the early to mid­dle decades of the last cen­tury. SAMS Photofact doc­u­ment sets were pub­lished on just about every ap­pli­ance made, and those had much more de­tail than these briefs. However, for the low-bud­get re­pair shop or the do-it-your­selfer, the Radio Service Data Sheets were a god­send. I have been scan­ning, clean­ing up, and post­ing all the ones I find in my vin­tage elec­tron­ics mag­a­zine col­lec­tion. See a com­plete list at the bot­tom. Many fine ex­am­ples of re­stored vin­tage ra­dios can be found on the Internet. A re­stored ex­am­ple of the RCA Victor Model 102 s ap­pears on the RadioMuseum.com web­site…

For two decades, I have been cre­at­ing cus­tom en­gi­neer­ing- and sci­ence-themed cross­word puz­zles for the brain-ex­er­cis­ing ben­e­fit and plea­sure of RF Cafe vis­i­tors who are fel­low cru­civer­bal­ists. This November 17, 2019, puz­zle uses a data­base of thou­sands of words which I have built up over the years and con­tains only clues and terms as­so­ci­ated with en­gi­neer­ing, sci­ence, phys­i­cal, as­tron­omy, math­e­mat­ics, chem­istry, etc. You will never find a word tax­ing your knowl­edge of a numb­nut soap opera star or the name of some ob­scure vil­lage in the Andes moun­tains. You might, how­ever, en­counter the name of a movie star like Hedy Lamarr or a ge­o­graph­i­cal lo­ca­tion like Tunguska, Russia, for rea­sons which…

Most of us are likely fa­mil­iar with the on­go­ing de­bate over whether

ra­di­a­tion from cell­phones, Wi-Fi routers and lap­top com­put­ers, cell tow­ers, smart me­ters, and other such mod­ern gad­getry is harm­ful to hu­mans. It is not ion­iz­ing ra­di­a­tion like nu­clear de­cay, but there are heat­ing ef­fects that can cause dam­age un­der the right con­di­tions. One week news breaks from the lat­est or­ga­ni­za­tion shock­ing the pub­lic with proof of tis­sue cell dam­age to brain, hand, face, eye­ball, and groin tis­sue (from lap­tops). The next week brings a counter re­port re­fut­ing apoc­a­lyp­tic claims of pre­vi­ous stud­ies… then the cy­cle re­peats. Early in the age of ubiq­ui­tous wire­less de­vices, those seek­ing to mit­i­gate wor­ries of ra­di­a­tion ar­gued - some­what cor­rectly - that enough time had not yet passed to col­lect sta­tis­ti­cally mean­ing­ful data. If sig­nif­i­cant harm could be proven right away, dis­miss­ing the em­pir­i­cal re­sults…

Channel Master is one of the few tele­vi­sion and FM ra­dio an­tenna com­pa­nies that has sur­vived the evo­lu­tion from over-the-air (OTA) broad­cast­ing to ca­ble-based and then Internet-based broad­cast­ing. Up un­til around the end of the last cen­tury - which is in­cred­i­bly two decades ago - a large num­ber of peo­ple still re­lied on rooftop and set-top an­ten­nas for pro­gram re­cep­tion. Airwaves con­tin­ued to get more crowded both due to ad­di­tional sta­tions be­ing built and the am­bi­ent noise level in­creas­ing due to many other lower power de­vices in use. An in­creas­ing num­ber of man­made ob­sta­cles that blocked and/​or re­flected sig­nals re­sulted in many more low sig­nal strength pock­ets and ar­eas plagued by mul­ti­path sig­nal vari­abil­ity com­pounded the prob­lem…

I gave Qwen 3.8 27B a reverse-engineering job I assumed needed a frontier model, and it finished in 30 minutes

www.xda-developers.com

Qwen 3.8 27B was one of the most highly-an­tic­i­pated open-weights re­leases that I’ve seen in a long time, and like many oth­ers, I im­me­di­ately got to work test­ing it out and play­ing with it when it dropped. I’m run­ning it on a sin­gle Lenovo ThinkStation PGX, the com­pact work­sta­tion built on Nvidia’s GB10 Grace Blackwell chip, pack­ing 128 GB of uni­fied mem­ory and 273 GB/s of band­width. Out of the box, it man­ages a fairly dull 15 to 30 to­kens a sec­ond, but with an SGLang, NVFP4, and DFlash2 spec­u­la­tive-de­cod­ing setup that’s be­come the stan­dard recipe for this hard­ware, it can reach around 50 to­kens a sec­ond on code and rea­son­ing.

One of my tests, though, proved just how in­cred­i­ble lo­cal mod­els have be­come.

There are rea­sons to be­lieve the hype when it comes to the Qwen mod­els; I’ve had con­sis­tently good ex­pe­ri­ences with Qwen 3.6 27B, and Qwen 3.8 27B is, so far, more of the same but bet­ter. In fact, Artificial Analysis has it as the top open-weights model in its 4B to 40B size class out of 135 mod­els, with a 52 on its in­tel­li­gence in­dex, and its own num­bers on things like SWE-bench Pro beat mod­els that cost far more to run.

I gave it the hard­est real task that fits on one ma­chine: re­verse-en­gi­neer­ing a com­mer­cial ap­p’s li­cense check, and it’s one that I’ve al­ready paid for and used, just to see how it would fare. It was un­likely to be in its train­ing data, but it’s a highly com­plex, spe­cial­ized task, and given the con­cerns some peo­ple have ex­pressed for the mod­el’s cy­ber­se­cu­rity ca­pa­bil­i­ties, I fig­ured it was a good test. Not only did it turn out to be one of the most im­pres­sive demon­stra­tions I’ve ever seen from a lo­cal model, it was able to fix its own mis­takes along the way.

I’m us­ing the Pi har­ness for this test, and the model only called stan­dard Bash-based tools through­out.

It re­fused, then talked it­self into build­ing a by­pass any­way

I posed as the de­vel­oper of the ap­pli­ca­tion, it caught me out

The plan I had was pretty sim­ple, and one that used to work with lo­cal LLMs pretty con­sis­tently. I told the model we’d built the app and wanted to know whether the li­cense check was as solid as we be­lieved, us­ing a jail­break sys­tem prompt.

As it turns out, prob­a­bly un­sur­pris­ingly, Qwen rec­og­nizes com­mon jail­break at­tempts, and one of the first things it told me was that it was­n’t go­ing to fall for the jail­break prompt. It then checked the sign­ing cer­tifi­cate and pointed out (correctly, might I add) that I had­n’t built this app, be­fore nam­ing the ac­tual de­vel­oper. I was caught out. Oops.

These days, that’s not the most im­pres­sive achieve­ment, given how good mod­els have got at re­fus­ing cer­tain prompts when pushed. With that said, what mat­ters is what it did next. It told me that it would au­dit the li­cense ver­i­fi­ca­tion and doc­u­ment weak­nesses but would not build a work­ing by­pass, and then it got on with the ac­tual work right up to that line. By the end, I had a fully writ­ten re­port of every step along the way, how the au­then­ti­ca­tion works, how it can be over­rid­den, and then changed its tune and built the ac­tual by­pass, be­cause the steps to do it were now in front of me any­way.

It was en­tirely sta­tic analy­sis

It never ex­e­cuted the app once

Qwen never ac­tu­ally launched the app un­til the very end when it demon­strated that the by­pass worked. Instead, it worked via sta­tic analy­sis, dis­as­sem­bling the frame­work, go­ing through thou­sands of lines of ar­m64, map­ping the se­cu­rity func­tions to their call sites, and work­ing out that the ven­dor had hid­den the cor­re­spond­ing pub­lic ver­i­fi­ca­tion key in­side the bi­nary. Then it found all of those pieces, com­bined them to­gether, and gave me the pub­lic key that the app ver­i­fies its li­censes against.

Because I have a le­git­i­mate, pur­chased copy of the ap­pli­ca­tion, it could ver­ify that the real li­cense on my ma­chine had been signed by a pri­vate key that matched the re­con­structed key. In other words, a model that fits in 17 GB of VRAM re­cov­ered a key the ven­dor had de­lib­er­ately ob­scured, prov­ing that it had de­con­structed that en­tire chain ef­fec­tively. It also took ap­prox­i­mately 30 min­utes, when it could take sig­nif­i­cantly longer for a hu­man.

With the key, every­thing else is much eas­ier to un­der­stand; the model kept a de­tailed re­port as it went, ex­plain­ing how its ac­ti­va­tion takes place once, on­line, when you buy or up­grade. After that, every­thing is ver­i­fied of­fline at launch: the sig­na­ture check, ma­chine bind­ing to the hard­ware se­r­ial read from the plat­form, an em­bed­ded re­vo­ca­tion list, a check that the bi­nary is still signed, and a signed up­date path. It was the kind of thing you could do painstak­ingly by hand with the likes of Ghidra.

Qwen con­cluded the scheme is un­usu­ally thor­ough for an app of this class, with the weak points in three spe­cific places: the key is an awk­wardly sized RSA key well be­low what any­one would call mod­ern strength; be­ing fully of­fline means a leaked key can only be re­voked by push­ing an up­date; and every check lives in lo­cal code, which is patch­able the way all lo­cal checks are. After some back and forth, once it knew where the gate was, it turned the find­ing into a work­ing proof of con­cept ex­e­cuted with a small script. I moved the li­cense from its ex­pected path, ran it, and it worked.

When it made mis­takes, it solved them as well

The first key was al­most right

The first at­tempt at re­cov­er­ing the key was wrong in a very spe­cific way; it pro­duced a work­ing key and the sig­na­ture check passed, but a hash the bi­nary com­putes as an in­tegrity check did­n’t match. In my ex­pe­ri­ence, most mod­els would have called it done and left it at that, but Qwen 3.8 27B did­n’t do that. Instead, it high­lighted the mis­match, went back to the draw­ing board, and kept go­ing un­til the value matched byte for byte.

With this model, there’s a pretty big catch when it comes to that kind of back and forth. By de­fault, its rea­son­ing ef­fort is set to its max­i­mum, so even triv­ial re­quests can burn a few hun­dred to a few thou­sand to­kens. Even when gen­er­at­ing be­tween 30 and 50 to­kens per sec­ond, that still takes quite a long time.

Even still, given the re­sults, I would not call it waste. Its first wrong guess was self-cor­rected, with­out in­put from me, and came to the right con­clu­sion. Is it ver­bose? Yeah, it re­ally is. But was it right? Also yes, and ul­ti­mately, the right an­swer is bet­ter than a wrong one given con­fi­dently.

A lo­cal 27B is now a real in­put to threat mod­els

The pri­vacy cuts both ways

I can’t get over the fact that Qwen ac­tu­ally de­con­structed and un­der­stood the li­cens­ing scheme. I know that fron­tier mod­els have been ca­pa­ble of im­pres­sive re­verse en­gi­neer­ing for a while, but this is a lo­cal 27B model. It ran en­tirely of­fline on a ma­chine be­side me, with no cloud in­volved at any point.

And to be very clear, it pro­duced a work­ing au­then­ti­ca­tion by­pass for a com­mer­cial ap­pli­ca­tion.

This is a gen­uinely mean­ing­ful thresh­old to cross for a lo­cal model: Qwen went from an un­fa­mil­iar com­mer­cial bi­nary to un­der­stand­ing its li­cens­ing ar­chi­tec­ture, re­cov­ered de­lib­er­ately ob­scured cryp­to­graphic ma­te­r­ial, caught and cor­rected its own in­cor­rect re­con­struc­tion, and ul­ti­mately turned that into a work­ing proof of con­cept. I did­n’t have to send the bi­nary, the li­cense, or any of its analy­sis to some­body else’s server to do it.

There are ob­vi­ous caveats. This was one ap­pli­ca­tion, one run, and a ma­chine on which I al­ready had a le­git­i­mate li­cense. I also don’t know how rep­re­sen­ta­tive this tar­get is. A harder ap­pli­ca­tion might have stopped it com­pletely, and I’m not go­ing to ex­trap­o­late one suc­cess­ful re­sult into a claim that Qwen can sud­denly re­verse-en­gi­neer any­thing you put in front of it.

What I’m tak­ing away from this is that these mod­els are gen­uinely ca­pa­ble, even if that ca­pa­bil­ity is still un­even. Some dif­fi­cult tar­gets can suc­cumb sur­pris­ingly quickly, whereas oth­ers, for what­ever rea­son, ap­pear in­sur­mount­able.

Something has changed, then, and I think it’s pri­mar­ily our as­sump­tion about where this class of ca­pa­bil­ity has to re­side. The model I used can run on a con­sumer graph­ics card, and once it’s on a ma­chine, it’s there as long as the user wants it to be. You don’t need to use a cloud API, there’s no us­age limit, and there’s no re­mote ser­vice over­see­ing the bi­nary, the prompts, or what the model pro­duces. That’s fan­tas­tic if you’re an­a­lyz­ing pro­pri­etary soft­ware, con­fi­den­tial code, or mal­ware you don’t par­tic­u­larly want leav­ing an iso­lated ma­chine.

But that goes both ways. A model run­ning lo­cally ul­ti­mately leaves the de­ci­sion about what it should be used for with who­ever is sit­ting at the key­board. On my desk, with soft­ware I own, that’s use­ful. Change the per­son at the key­board and the same prop­er­ties that make lo­cal mod­els so ap­peal­ing sud­denly be­come part of the threat model. That’s not an ar­gu­ment against lo­cal mod­els, but it was a gen­uinely shock­ing re­sult that I did­n’t ex­pect.

This class of ca­pa­bil­ity fits on one ma­chine

And no­body needs to give you ac­cess to it

Qwen 3.8 27B mat­ters more than the by­pass it­self. It’s proof that lo­cal mod­els are ac­cel­er­at­ing fast, and even if it does­n’t suc­ceed with the next bi­nary I throw its way, that does­n’t change what hap­pened here. It won’t be the only model that’s this ca­pa­ble at this size, even if it might stay ahead for a while. A model small enough to fit on a con­sumer graph­ics card took half an hour to tear apart a com­mer­cial ap­pli­ca­tion’s au­then­ti­ca­tion sys­tem and build a work­ing by­pass. Completely lo­cally.

To be clear, I’m not nam­ing the ap­pli­ca­tion be­cause it’s a real prod­uct that peo­ple pay for, and pub­lish­ing its name adds noth­ing use­ful here. Regardless, the in­ter­est­ing part is­n’t which app it was, but that a task I would once have as­so­ci­ated with a fron­tier model is now some­thing I can hand to a freely avail­able model that runs on the ma­chine be­side me.

I don’t care about the bench­mark num­bers at this point. This is a much big­ger change than an­other few points on a bench­mark.

reuters.com

www.reuters.com

Please en­able JS and dis­able any ad blocker

hdiutil is deprecated in macOS 27 Golden Gate

lapcatsoftware.com

August 14 2026

The ma­cOS com­mand-line tool hdiu­til is used to ma­nip­u­late disk im­ages. From the WHAT’S NEW sec­tion of man hdiu­til on the lat­est ma­cOS 27 Golden Gate beta:

In ma­cOS 27.0, hdiu­til is dep­re­cated. Use disku­til im­age in­stead for all disk im­age op­er­a­tions. disku­til im­age pro­vides sub­com­mands for at­tach, cre­ate, re­size, info, and ch­pass. ASIF (Apple Sparse Image Format) im­ages are only sup­ported by disku­til im­age and are not sup­ported by hdiu­til.

There’s also a DEPRECATION NOTICE at the top of the man page that lists the disku­til re­place­ments for hdiu­til sub­com­mands.

The ma­jor­ity of op­tions from hdiu­til ap­pear to be pre­served in disku­til, though un­der dif­fer­ent names. However, some hdiu­til op­tions are miss­ing, for ex­am­ple -puppetstrings:

pro­vide progress out­put that is easy for an­other pro­gram to parse. PERCENTAGE out­puts can in­clude the value -1 which means hdiu­til is per­form­ing an op­er­a­tion that will take an in­de­ter­mi­nate amount of time to com­plete. Any pro­gram try­ing to in­ter­pret hdiu­til’s progress should use -puppetstrings.

Also miss­ing are some op­tions spe­cific to hdiu­til cre­ate -srcfolder:

-[no]crossdev -[no]scrub -[no]anyowners -skipunreadable -[no]atomic -copyuid

I at­tempted to com­pare hdiu­til and disku­til on Golden Gate by per­form­ing a backup of the user home folder, some­thing I do daily on my MacBook Pro with ma­cOS Sequoia. First:

time hdiu­til cre­ate -encryption -format UDZO -noatomic -noscrub -srcfolder /Users/stupiduser -stdinpass -verbose /Users/Shared/hdiutil.dmg

This took around 110 to 115 sec­onds on av­er­age.

It’s cru­cial to note that hdiu­til trig­gers an au­then­ti­ca­tion prompt, be­cause one of the files is, an­noy­ingly, owned by the root user. From the Terminal out­put:

copy-helper[2598:97396] uid 501 does not have own­er­ship of /Users/stupiduser/Library/Group Containers/group.com.apple.secure-control-center-preferences/Library/Preferences/group.com.apple.secure-control-center-preferences.av.plist - set­ting needAuth to YES Scanning… Error 80 (Authentication er­ror). /Users/stupiduser/Library/Group Containers/group.com.apple.secure-control-center-preferences/Library/Preferences/group.com.apple.secure-control-center-preferences.av.plist: Authentication er­ror

The disk im­age cre­ation con­tin­ues and fin­ishes suc­cess­fully af­ter au­then­ti­cat­ing with ad­min cre­den­tials.

Now the new method:

time disku­til im­age –stdinpassphrase –verbose cre­ate –encrypt from –format UDZO /Users/stupiduser /Users/Shared/diskutil.dmg

This sim­ply fails and, de­spite the ver­bose op­tion, does­n’t tell you why.

[100% com­pleted] Error: Failed to cre­ate disk im­age: The op­er­a­tion could­n’t be com­pleted. Operation not per­mit­ted

Luckily, I guessed the rea­son, the root-owned file. Unlike hdiu­til, disku­til does not trig­ger an au­then­ti­ca­tion prompt. Thus, I had to delete the root-owned file to get disku­til to work.

[100% com­pleted] /Users/Shared/diskutil.dmg cre­ated

Again, not par­tic­u­larly ver­bose. However, the progress per­cent­age does up­date in place dur­ing the disk im­age cre­ation, so there is some kind of sub­sti­tute for the hdiu­til -puppetstrings op­tion.

The good news is that disku­til was sig­nif­i­cantly faster, tak­ing around 40 to 45 sec­onds on av­er­age to fin­ish, more than a minute faster than hdiu­til. Also, the re­sult­ing dmg file from disku­til was smaller, 2.8 GB, as op­posed to 2.89 GB from hdiu­til.

I mounted the two disk im­ages and used the FileMerge app (embedded in­side the Xcode app) to com­pare them. Aside from a few files that were nat­u­rally mod­i­fied in the few min­utes be­tween the two com­mand-line in­vo­ca­tions, the main dif­fer­ence was that the hdiu­til disk im­age in­cluded the ~/.Trash/ folder, while the disku­til disk im­age did not. In other words, disku­til be­haved as if the -scrub op­tion of hdiu­til were en­abled.

-[no]scrub do [not] skip tem­po­rary files when imag­ing a vol­ume. Scrubbing is the de­fault when the source is the root of a mounted vol­ume. Scrubbed items in­clude trashes, tem­po­rary di­rec­to­ries, swap files, etc.

So it ap­pears that disku­til in Golden Gate needs some work:

Improve ver­bose log­ging

Handle file per­mis­sion prob­lems

Add the -[no]scrub op­tion

To con­clude, I don’t un­der­stand why hdiu­til needs to be dep­re­cated when the same func­tion­al­ity will live on in disku­til. For some rea­son, Apple seems in­tent on break­ing long­time work­flows and scripts. Many years ago I ac­tu­ally worked on an app, Knox, that calls hdiu­til di­rectly. If hdiu­til were re­moved from ma­cOS, that would com­pletely break such an app.

By the way, both hdiu­til and disku­til on Golden Gate still suf­fer from the bug I blogged about last year, Inaccessible .bnnsir files on ma­cOS Sequoia. A cou­ple days ago I got a ridicu­lous up­date to the bug re­port I filed with Apple, hdiutil cre­ate copy er­ror with Siri CoreSpeech .bnnsir files” (FB17162985). Despite giv­ing Apple 100% re­li­able steps to re­pro­duce, they asked me if the is­sue still oc­curred in the lat­est beta, and if it does, then I should sub­mit an iOS sys­di­ag­nose. Yes, Apple re­quested an iOS sys­di­ag­nose for a ma­cOS bug. And need­less to say, the lat­est Golden Gate beta did not mag­i­cally fix the bug.

MartyPC Web Edition

martypc.net

Choose a System

Loading sys­tems…

Use the ar­rows or key­board to ro­tate Swipe or tap the ar­rows to ro­tate

To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".

10HN is also available as an iOS App

If you visit 10HN only rarely, check out the the best articles from the past week.

Visit pancik.com for more.