10 interesting stories served every morning and every evening.

AI Isn’t Outthinking Mathematicians. It’s Out-Remembering Them.

davidepiffer.com

When an AI sys­tem solves a dif­fi­cult math­e­mat­i­cal prob­lem, the usual ex­pla­na­tion is that it has be­come more in­tel­li­gent.

Perhaps it has ab­sorbed mil­lions of math­e­mat­i­cal ex­am­ples. Perhaps re­in­force­ment learn­ing has taught it bet­ter rea­son­ing strate­gies. Perhaps it is be­gin­ning to de­velop some­thing re­sem­bling gen­uine math­e­mat­i­cal in­tu­ition.

All of these ex­pla­na­tions may con­tain some truth. But they over­look a sim­pler pos­si­bil­ity:

AI has ac­cess to a vastly larger work­ing mem­ory than the hu­man brain.

Or, more pre­cisely, it has ac­cess to an enor­mous ex­ter­nal sym­bolic work­space that per­forms many of the func­tions that work­ing mem­ory per­forms in hu­mans.

This dif­fer­ence may be es­pe­cially im­por­tant in math­e­mat­ics.

A hu­man math­e­mati­cian can hold only a small num­ber of un­fa­mil­iar el­e­ments in mind si­mul­ta­ne­ously. An AI model can keep the en­tire prob­lem state­ment, hun­dreds of in­ter­me­di­ate equa­tions, sev­eral aban­doned ap­proaches, de­f­i­n­i­tions, con­straints and ear­lier con­clu­sions in­side its con­text win­dow.

We nor­mally in­ter­pret the re­sult­ing per­for­mance as ev­i­dence of su­pe­rior rea­son­ing. But some of it may in­stead re­flect the re­moval of one of the most im­por­tant bi­o­log­i­cal lim­its on hu­man rea­son­ing: our ex­tremely re­stricted work­ing-mem­ory ca­pac­ity.

Working mem­ory is the men­tal sys­tem that al­lows us to hold and ma­nip­u­late in­for­ma­tion over short pe­ri­ods.

When solv­ing an equa­tion, you must re­mem­ber what each vari­able rep­re­sents, which op­er­a­tions have al­ready been per­formed and what the cur­rent goal is. During a proof, you may need to keep track of as­sump­tions, in­ter­me­di­ate lem­mas, ex­cep­tions and mul­ti­ple pos­si­ble cases.

Human work­ing mem­ory is re­mark­ably lim­ited.

Its ex­act ca­pac­ity de­pends on the task and on how in­for­ma­tion is or­ga­nized, but the gen­eral lim­i­ta­tion is ob­vi­ous from every­day ex­pe­ri­ence. Try mul­ti­ply­ing two three-digit num­bers in your head. The un­der­ly­ing op­er­a­tions are sim­ple. The dif­fi­culty comes largely from hav­ing to pre­serve par­tial re­sults while per­form­ing ad­di­tional cal­cu­la­tions.

Writing the num­bers down trans­forms the prob­lem.

Paper does not make you more in­tel­li­gent. It ex­pands your ef­fec­tive work­ing mem­ory.

The same prin­ci­ple ap­plies at higher lev­els of math­e­mat­ics. A math­e­mati­cian uses no­ta­tion, scratch pa­per, di­a­grams and pre­vi­ously writ­ten lem­mas not merely to com­mu­ni­cate the so­lu­tion, but to make the rea­son­ing cog­ni­tively pos­si­ble.

Experts com­pen­sate through chunking.” A novice sees a long se­quence of sym­bols. An ex­pert rec­og­nizes a fa­mil­iar struc­ture and treats it as a sin­gle con­cep­tual ob­ject. This al­lows far more in­for­ma­tion to fit in­side the same bi­o­log­i­cal work­ing-mem­ory limit.

But chunk­ing does not elim­i­nate the limit. It merely com­presses the in­for­ma­tion.

An AI model faces a very dif­fer­ent con­straint.

The im­por­tance of work­ing mem­ory for math­e­mat­ics is not merely the­o­ret­i­cal. It is vis­i­ble in the dif­fer­ences be­tween hu­man be­ings.

Working mem­ory is strongly re­lated to gen­eral in­tel­li­gence, which raises an ob­vi­ous ques­tion: does it in­de­pen­dently pre­dict math­e­mat­i­cal per­for­mance, or is it merely an­other im­per­fect mea­sure of IQ?

Several stud­ies sug­gest that it con­tributes some­thing be­yond con­ven­tional in­tel­li­gence mea­sures. Alloway and Passolunghi (2011), for ex­am­ple, ex­am­ined work­ing mem­ory, ver­bal abil­ity and math­e­mat­i­cal skills in chil­dren. They found that work­ing-mem­ory mea­sures made a dis­tinct con­tri­bu­tion to math­e­mat­i­cal per­for­mance rather than sim­ply re­pro­duc­ing the as­so­ci­a­tion be­tween math­e­mat­ics and gen­eral ver­bal abil­ity.

In a sep­a­rate six-year lon­gi­tu­di­nal study, Alloway and Alloway (2010) mea­sured chil­dren at age five and then ex­am­ined their aca­d­e­mic achieve­ment six years later. Early work­ing-mem­ory per­for­mance pre­dicted later lit­er­acy and nu­mer­acy even af­ter IQ was in­cluded in the analy­sis. Indeed, work­ing mem­ory was a stronger pre­dic­tor of the later aca­d­e­mic out­comes than the IQ mea­sure used in the study.

Blankenship and col­leagues (2015) sim­i­larly re­ported that work­ing mem­ory ex­plained unique vari­a­tion in math­e­mat­i­cal flu­ency and cal­cu­la­tion af­ter sta­tis­ti­cally con­trol­ling for IQ and age. A large meta-analy­sis by Friso-van den Bos and col­leagues (2013) also found a con­sis­tent re­la­tion­ship be­tween work­ing mem­ory and math­e­mat­ics across pri­mary-school stud­ies, al­though the strength of the re­la­tion­ship var­ied ac­cord­ing to the type of work­ing-mem­ory and math­e­mat­i­cal task be­ing mea­sured.

These find­ings should not be ex­ag­ger­ated. Working mem­ory and in­tel­li­gence over­lap sub­stan­tially, and sta­tis­ti­cal con­trol can­not per­fectly iso­late them as in­de­pen­dent psy­cho­log­i­cal mech­a­nisms. Nor does the ev­i­dence im­ply that com­mer­cially train­ing work­ing mem­ory will nec­es­sar­ily pro­duce large im­prove­ments in in­tel­li­gence or math­e­mat­ics.

The nar­rower con­clu­sion is nev­er­the­less im­por­tant: among chil­dren with sim­i­lar mea­sured in­tel­li­gence, dif­fer­ences in the abil­ity to hold, up­date and ma­nip­u­late in­for­ma­tion still pre­dict dif­fer­ences in math­e­mat­i­cal per­for­mance.

This pro­vides a cru­cial clue for un­der­stand­ing AI. If hu­man math­e­mat­i­cal per­for­mance is partly capped by a work­ing-mem­ory bot­tle­neck, then giv­ing a ma­chine an enor­mous sym­bolic work­space changes the na­ture of the con­test. The ma­chine may ap­pear more math­e­mat­i­cally in­tel­li­gent partly be­cause it is much less con­strained by a cog­ni­tive lim­i­ta­tion that sup­presses hu­man per­for­mance.

A mod­ern lan­guage model can process an enor­mous se­quence of to­kens at once. This se­quence may in­clude the orig­i­nal ques­tion, de­f­i­n­i­tions, ex­am­ples, in­ter­me­di­ate cal­cu­la­tions and the mod­el’s own ear­lier rea­son­ing.

The con­text win­dow is not iden­ti­cal to hu­man work­ing mem­ory. It is bet­ter un­der­stood as a gi­gan­tic ex­ter­nal note­book com­bined with an im­per­fect sys­tem for search­ing and us­ing what has been writ­ten in it.

This dis­tinc­tion mat­ters.

Humans pos­sess a form of ac­tive in­ter­nal mem­ory. We can silently choose a num­ber, hold it in mind, trans­form it and re­place it with a new value with­out say­ing or writ­ing any­thing.

Standard lan­guage mod­els are much weaker at main­tain­ing this kind of pri­vate, con­tin­u­ously up­dated men­tal state. Their most sta­ble form of mem­ory is usu­ally the se­quence of to­kens that has al­ready been gen­er­ated.

If the model writes:

x=6

and later writes:

x+3=9,

those state­ments re­main in­side the con­text. The model can at­tend to them again when gen­er­at­ing the next step.

Its rea­son­ing is there­fore of­ten ex­ter­nal­ized. The text is not merely a re­port of a com­pleted thought process. The text is part of the mech­a­nism by which the rea­son­ing oc­curs.

Humans do some­thing sim­i­lar when us­ing scratch pa­per. The ma­jor dif­fer­ence is scale.

An un­aided hu­man may strug­gle to keep five un­fa­mil­iar con­di­tions ac­tive si­mul­ta­ne­ously. An AI can pre­serve dozens or hun­dreds of them in ex­plicit form.

This does not mean that every item in a long con­text is re­trieved per­fectly. Models can over­look rel­e­vant in­for­ma­tion, be­come dis­tracted or lose track of de­tails. Advertised con­text length is not the same as per­fectly us­able mem­ory.

Nevertheless, the dif­fer­ence in po­ten­tial ca­pac­ity is enor­mous.

The con­text-win­dow ad­van­tage is not equally use­ful in every kind of rea­son­ing.

It mat­ters es­pe­cially for math­e­mat­ics be­cause math­e­mat­i­cal rea­son­ing can be trans­lated un­usu­ally well into ex­plicit sym­bols.

Almost every rel­e­vant el­e­ment of a math­e­mat­i­cal prob­lem can be writ­ten down:

the as­sump­tions;

the as­sump­tions;

the de­f­i­n­i­tions;

the de­f­i­n­i­tions;

the known equa­tions;

the known equa­tions;

the cur­rent ob­jec­tive;

the cur­rent ob­jec­tive;

the re­sults al­ready proved;

the re­sults al­ready proved;

the cases that have been elim­i­nated;

the cases that have been elim­i­nated;

the con­di­tions un­der which each step re­mains valid.

the con­di­tions un­der which each step re­mains valid.

Once writ­ten, this in­for­ma­tion re­mains sta­ble.

If (x) is de­fined as an in­te­ger at the be­gin­ning of a proof, it re­mains an in­te­ger un­less the proof ex­plic­itly changes the de­f­i­n­i­tion. A strict in­equal­ity does not grad­u­ally be­come a non-strict in­equal­ity be­cause of changes in mood, con­text or in­ter­pre­ta­tion.

Mathematical sym­bols are de­signed to re­duce am­bi­gu­ity.

This makes math­e­mat­ics al­most per­fectly suited to an in­tel­li­gence that op­er­ates through a large tex­tual work­space.

Consider a prob­lem re­quir­ing the solver to re­mem­ber that:

n is odd;

n is odd;

p is prime;

p is prime;

x≠0

x≠0

and that one branch of the ar­gu­ment has al­ready pro­duced a con­tra­dic­tion.

A hu­man may un­der­stand the ba­sic strat­egy but di­vide by x be­fore es­tab­lish­ing that x≠0. The er­ror is not nec­es­sar­ily caused by a lack of in­tel­li­gence. It may be a fail­ure of book­keep­ing.

An AI can re­state the ac­tive con­straints at each stage:

We are work­ing un­der the as­sump­tions that (n) is odd, (p) is prime and (x≠0).

We are work­ing un­der the as­sump­tions that (n) is odd, (p) is prime and (x≠0).

The con­text be­comes a ledger of the rea­son­ing state.

Many dif­fi­cult math­e­mat­i­cal prob­lems con­tain a pro­found in­sight some­where near the be­gin­ning, but they also con­tain a large amount of less glam­orous work af­ter­ward: ex­pand­ing ex­pres­sions, check­ing cases, car­ry­ing con­di­tions through trans­for­ma­tions and mak­ing sure that the fi­nal con­clu­sion is com­pat­i­ble with every ear­lier as­sump­tion.

A ma­chine does not need to pos­sess deeper in­sight than a hu­man to gain an ad­van­tage here. It may sim­ply be bet­ter equipped to pre­serve the en­tire state of the prob­lem while com­plet­ing a long se­quence of op­er­a­tions.

Mathematics is highly com­po­si­tional.

A proof can of­ten be rep­re­sented as:

A → B → C → D

If each step is valid and the chain is pre­served ac­cu­rately, the con­clu­sion fol­lows.

A large work­ing space al­lows the model to con­struct much longer chains be­fore los­ing the thread.

This is im­por­tant be­cause the dif­fi­culty of a prob­lem does not de­pend only on the dif­fi­culty of each in­di­vid­ual step. It also de­pends on how many steps must be co­or­di­nated.

A per­son may be per­fectly ca­pa­ble of un­der­stand­ing every lo­cal in­fer­ence in a 100-step ar­gu­ment while still be­ing un­able to gen­er­ate the en­tire ar­gu­ment un­aided. The prob­lem ex­ceeds the per­son’s abil­ity to main­tain the global struc­ture.

AI can po­ten­tially com­pen­sate by writ­ing down nearly every­thing.

This may ex­plain why ad­di­tional thinking time” of­ten im­proves model per­for­mance. More com­pu­ta­tion al­lows the sys­tem to pro­duce more in­ter­me­di­ate states, ex­am­ine al­ter­na­tive branches and pre­serve par­tial con­clu­sions.

What looks like deeper thought may some­times be broader search con­ducted in­side a much larger note­book.

Now com­pare a math­e­mat­i­cal prob­lem with a so­cial ques­tion:

Why has Maria sud­denly stopped re­ply­ing to my mes­sages?

Why has Maria sud­denly stopped re­ply­ing to my mes­sages?

A larger con­text win­dow might al­low an AI to ex­am­ine years of cor­re­spon­dence. It could iden­tify changes in tone, tim­ing and vo­cab­u­lary.

But the de­ci­sive in­for­ma­tion may still be miss­ing.

Perhaps Maria is an­gry. Perhaps she is busy. Perhaps she is ill. Perhaps she has lost her phone. Perhaps she is avoid­ing an un­re­lated prob­lem.

No amount of mem­ory can re­trieve facts that were never ob­served.

The chal­lenge is not sim­ply to pre­serve a known set of premises and de­rive their con­se­quences. It is to rea­son un­der un­cer­tainty about hid­den causes.

Informal rea­son­ing also de­pends heav­ily on con­cepts whose mean­ings are un­sta­ble.

Words such as fair,” successful,” responsible,” harmful” or intelligent” do not pos­sess the ex­act­ness of math­e­mat­i­cal vari­ables. Their mean­ing de­pends on cul­ture, goals and con­text.

A model can re­mem­ber every sen­tence in a dis­cus­sion while still mis­un­der­stand­ing what the par­tic­i­pants mean.

The same ap­plies to po­lit­i­cal analy­sis, his­tor­i­cal in­ter­pre­ta­tion, busi­ness strat­egy and psy­cho­log­i­cal judg­ment. In these do­mains, the cen­tral prob­lem is of­ten not work­ing-mem­ory ca­pac­ity. It is iden­ti­fy­ing the cor­rect causal model when the ev­i­dence is in­com­plete and am­bigu­ous.

A larger note­book helps, but it does not solve the fun­da­men­tal prob­lem.

Auto-research with codex: How I achieved a 232x Faster Kernel over baseline with Codex in GPU Mode's qr_v2 problem

sankalp.bearblog.dev

08 Jul, 2026

Table of Contents

Intro Contest in short Problem in­tro

Contest in short

Problem in­tro

Why this prob­lem is auto-re­search-able

Learning Enough to Ask Better Questions

(Optional) Math for QR de­com­po­si­tion: Householder re­flec­tions

Make se­r­ial work small with the help of the blocked Householder al­go­rithm

Other chal­lenges

Codex-maxxing Kernel progress break­throughs Breakthrough ideas

Kernel progress break­throughs

Breakthrough ideas

Introducing idea di­ver­sity to es­cape the lo­cal max­ima

Implementation Hints

What I could have done bet­ter

Conclusion

References

Acknowledgements

Intro

Contest in short

GPU Mode, in col­lab with Core Automation, re­cently hosted an auto-re­search themed con­test. The prob­lem state­ment was to im­ple­ment batched square com­pact-House­holder QR fac­tor­iza­tion aka QR de­com­po­si­tion. I placed 12th out of 183 par­tic­i­pants, end­ing up with a 232x speedup over the base­line so­lu­tion. This post is about how I got there. I will go through my ap­proach, learn­ings, and bot­tle­necks I ran into dur­ing the con­test. It was my first se­ri­ous at­tempt at auto-re­search. Some peo­ple will call this loop en­gi­neer­ing”, and hon­estly that is fine too.

Note that you don’t need to go through the math­e­mat­ics or the prob­lem it­self in de­tail to fol­low most of this blog post. I have fo­cused on my ap­proach while keep­ing the math and the prob­lem it­self sec­ondary as most peo­ple who will read this won’t have par­tic­i­pated in the con­test.

You can check out the full con­test page here: Problem Link and Leaderboard

This con­test was part of GPU Mode’s Linear Algebra Kernels in the Age of Research se­ries.

Problem in­tro

We were given a batch of square FP32 CUDA ma­tri­ces A with shape batch x n x n, and had to re­turn the same com­pact Householder QR rep­re­sen­ta­tion as torch.geqrf(A): an H ma­trix whose up­per tri­an­gle is R and whose lower tri­an­gle stores Householder vec­tors, plus a tau vec­tor of re­flec­tor co­ef­fi­cients. The checker re­built Q with torch.linalg.house­hold­er_prod­uct(H, tau), took R = triu(H), and ver­i­fied:

A≈QR,Q⊤Q≈I,Q⊤A≈R

Among cor­rect sub­mis­sions, the leader­board ranked run­time by geo­met­ric mean across shapes and con­di­tion­ing cases. The im­por­tant sizes were batched square ma­tri­ces like 512 x 512, with larger 1024, 2048, and 4096 cases too. Low-bit FP16, FP8, or NVFP4 was al­lowed in­ter­nally, but re­turned fac­tors still had to sat­isfy FP32-style QR checks.

A tiny 3 x 3 ex­am­ple is:

A=[12−5146167−68−424−41]=[6/7−69/175−58/1753/7158/1756/175−2/76/35−33/35]⏟Q[1421−140175−700035]⏟R

Here Q is or­thog­o­nal, which means its columns are unit-length and per­pen­dic­u­lar to each other, and R is up­per tri­an­gu­lar, which means every­thing be­low the di­ag­o­nal is zero. The con­test was not ask­ing us to print dense Q and R di­rectly; it asked for the com­pact Householder ver­sion that lets the checker re­con­struct Q and read R from the up­per tri­an­gle.

For the 3×3 ex­am­ple above, the very first re­flec­tor maps the first col­umn (12, 6, −4) straight onto (−14, 0, 0) in one shot. The −14 be­comes R11. How that works is in the math sec­tion.

Why this prob­lem is auto-re­search-able

GPU Mode pro­vides par­tic­i­pants with the pop­corn CLI mak­ing it agent-friendly. Agents can use this to test, bench­mark, and sub­mit to the leader­board di­rectly. The checker also pro­vided shape-wise feed­back along with the over­all geo­met­ric mean tim­ing.

Astute ob­servers will no­tice this is an apt setup for writ­ing a loop. Agents yearn for tight feed­back loops. They al­low them to hill-climb to their heart’s con­tent.

GPU Mode con­tests usu­ally give you some way to it­er­ate on ker­nels. Either you sub­mit di­rectly, or a spon­sor like Modal chips in cred­its. Here the or­ga­niz­ers ba­si­cally al­lowed un­lim­ited sub­mis­sions as long as you spaced them out. If you did­n’t, the queues got long and every­body’s runs timed out. At one point the work­space even ran out of Modal cred­its be­cause every­one had been ham­mer­ing sub­mis­sions. It’s a nice way to make learn­ing ac­ces­si­ble.

Over the course of 14 days, I made over 1500 sub­mis­sions.

Learning Enough to Ask Better Questions

I have known the ba­sics of GPU ker­nel op­ti­miza­tion (mainly in Triton with some un­der­stand­ing of CUDA) for a year, but haven’t worked in this do­main pro­fes­sion­ally. What I am try­ing to tell you is that I was an un­der­dog among the peo­ple around me on the leader­board. The per­son just above me on the leader­board (CUDA Colonel) is a prin­ci­pal en­gi­neer at NVIDIA.

Anyway aura farm­ing aside, since I know the ba­sics and had re­cently read about GatedDeltaNet, I was fresh on the gen­eral GPU ker­nel lingo.

The bet­ter you know some­thing, the bet­ter you can prompt the LLMs, be­cause you con­vert un­known un­knowns into known un­knowns.

At the same time, it’s worth not­ing that this con­test was doable with­out do­main knowl­edge - like you prob­a­bly won’t make it to the top 10, but you can get a re­spectable speedup over base­line by just re­ly­ing on your har­ness/​agent loop or what­ever.

My first steps in the con­test were to learn what QR de­com­po­si­tion is and how it can be done. There are a bunch of ways to do it - like Gram-Schmidt and Householder re­flec­tions. The con­test man­dated Householder re­flec­tions. I went back and forth with Claude and watched a few YouTube videos to build in­tu­ition. After my dis­cus­sions with Claude, it was clear that we needed to use the blocked Householder al­go­rithm as the main ar­chi­tec­ture with the trail­ing WY-update. As it turns out, GPT-5.5 also had a good idea about this. QR de­com­po­si­tion is a fairly well known prob­lem.

I found the con­cept in­ter­est­ing as ma­trix de­com­po­si­tions show up in sev­eral mod­ern op­ti­mizer vari­ants for LLM train­ing, es­pe­cially in meth­ods that use ma­trix pre­con­di­tion­ing, such as Shampoo-style op­ti­miz­ers and re­lated ap­proaches. Muon (used by Kimi) is an­other good ex­am­ple: in­stead of treat­ing a weight up­date as one gi­ant flat­tened vec­tor, it keeps the ma­trix struc­ture around and or­thog­o­nal­izes the mo­men­tum up­date, usu­ally through a few Newton-Schulz it­er­a­tions that ap­prox­i­mate the po­lar fac­tor.

(Optional) Math for QR de­com­po­si­tion: Householder re­flec­tions

I rec­om­mend skim­ming through this sec­tion if you are cu­ri­ous about the math oth­er­wise feel free to skip. The only thing to note is that there is a se­quen­tial de­pen­dency in Householder QR which makes it prob­lem­atic to do GEMM. We use blocked Householder to make it more ma­trix-mul­ti­pli­ca­tion shaped.

The con­tract

Quickly re­view­ing the con­tract: in­put is a batch of square FP32 ma­tri­ces A; out­put is the com­pact (H, tau) for­mat that torch.geqrf re­turns. The up­per tri­an­gle of H is R. Below the di­ag­o­nal, H stores the Householder vec­tors, and tau stores one scalar per col­umn. The checker re­builds Q from (H, tau) and ver­i­fies A ≈ QR.

Mirrors

Forget ma­tri­ces for a sec­ond. In a bath­room mir­ror, your re­flec­tion is ex­actly as far be­hind the glass as you are in front of it, straight through.

If x⟂ is the part of x stick­ing out per­pen­dic­u­lar to the glass, re­flec­tion just sub­tracts that part twice:

xre­flected=x−2x⟂

So a Householder re­flec­tion is about find­ing the per­pen­dic­u­lar part and sub­tract­ing it twice.

Storing the mir­ror

A Householder vec­tor is the mir­ror, stored com­pactly. In code, we don’t carry around the whole mir­ror plane. We store one vec­tor v stick­ing straight out of it. The mir­ror is every­thing per­pen­dic­u­lar to v, and the re­flec­tion moves along v.

The per­pen­dic­u­lar part is just the shadow of x along v, which is v⊤xv⊤v copies of v. Plug that into the sub­trac­tion above:

ℋx=x−τv(v⊤x),τ=2v⊤v

So tau is just 2v⊤v: the fac­tor of 2 and the length of v bun­dled into one pre­com­puted num­ber. v picks the mir­ror, tau scales the up­date. (I’ll write the math­e­mat­i­cal re­flec­tor as ℋj and re­serve H for the com­pact out­put ma­trix.)

Householder re­flec­tion in 2D tau = 0.00

Why QR cares about mir­rors

QR wants to turn A into an up­per-tri­an­gu­lar ma­trix R. Column 1 should be­come some­thing like (*, 0, 0), col­umn 2 should have ze­ros be­low row 2, and so on.

A Householder mir­ror is use­ful be­cause it can do that to a col­umn in one shot. Take the first col­umn of the 3×3 ex­am­ple above: (12, 6, -4). We want to send it to the x-axis so the lower en­tries be­come zero. A re­flec­tion can only change di­rec­tion, not length, so the tar­get must also have length 14. One valid tar­get is (-14, 0, 0). After that re­flec­tion, the 6 and -4 en­tries are gone, which is ex­actly what we wanted.

How do we find the mir­ror? It sits halfway be­tween the col­umn and its tar­get, so v, the vec­tor pok­ing through the mir­ror, is just the col­umn mi­nus its tar­get:

v = (12, 6, -4) - (-14, 0, 0) = (26, 6, -4)

The Householder up­date

Then com­pute tau = 2 / (vᵀv). The re­flec­tor it­self is:

ℋ=I−τvv⊤,τ=2v⊤v

ℋx=(I−τvv⊤)x

ℋx=x−τv(v⊤x)

ℋAactive=(I−τvv⊤)Aactive

ℋAactive=Aactive−τv(v⊤Aactive)

This turns the cur­rent col­umn into (-14, 0, 0) and rewrites the other columns con­sis­tently, so the next re­flec­tor is built from the up­dated ma­trix.

We keep do­ing this once per col­umn. In rough no­ta­tion, the re­peated up­dates look like:

A(1)=A(0)−τ1v1(v1⊤A(0))

A(2)=A(1)−τ2v2(v2⊤A(1))

A(3)=A(2)−τ3v3(v3⊤A(2))

R=A(n)

Each line uses the ma­trix pro­duced by the pre­vi­ous line. Each re­flec­tor ze­roes out every­thing be­low the di­ag­o­nal of its col­umn with­out dis­turb­ing the columns al­ready fin­ished. After the last one, A has walked down to an up­per-tri­an­gu­lar R:

A=ℋ1ℋ2⋯ℋn⏟QR

Mirrors don’t change lengths or an­gles, so each ℋj is or­thog­o­nal, and so is their prod­uct Q. That’s where the or­thog­o­nal­ity the checker ver­i­fies comes from for free.

What’s the com­pact for­mat

Once col­umn j is processed, every­thing be­low its di­ag­o­nal is dead space. geqrf reuses those slots to stash the tail of v_j (the lead­ing 1 is im­plicit). On and above the di­ag­o­nal you’re look­ing at R; be­low it, the re­flec­tors; and tau rides along as a sep­a­rate vec­tor. That’s why the checker needs both H and tau to re­build Q.

Compact geqrf stor­age (n = 6) hover a col­umn

H  (upper tri­an­gle = R, be­low di­ag­o­nal = re­flec­tor tails)

tau  (one scalar per re­flec­tor)

r en­tries of R tail of vj τj

Make se­r­ial work small with the help of the blocked Householder al­go­rithm

Householder QR ze­roes out A be­low the di­ag­o­nal one col­umn at a time. Each step builds a re­flec­tor from the cur­rent col­umn and ap­plies it to every­thing on the right. The prob­lem is re­flec­tor j+1 is built from the ma­trix af­ter re­flec­tor j has al­ready hit it. So you can’t re­order the steps and you can’t fuse them. It’s se­r­ial, and the se­r­ial ma­trix-vec­tor work runs in the slow vec­tor lanes of the SM while the ten­sor cores just sit there idle.

Householder QR, one re­flec­tor at a time (n = 5) math view: ze­ros ap­pear, trail­ing block gets rewrit­ten

orig­i­nal a fi­nal en­try of R rewrit­ten by this re­flec­tor 0 zeroed (vj gets stashed here)

The clas­sic fix is the blocked al­go­rithm. You pick a nar­row panel of b columns (say 32 or 64) and do all the se­r­ial work in­side it. That’s fine, be­cause the panel is only b columns wide, so it stays cheap. Then, in­stead of ap­ply­ing the pan­el’s b re­flec­tors to the rest of the ma­trix one at a time, you com­press them into a sin­gle rank-b up­date (the WY rep­re­sen­ta­tion”) and hit the en­tire trail­ing block in one shot with three back-to-back ma­trix mul­ti­plies. The se­r­ial work stays con­fined to the panel, and every­thing else turns into GEMMs, which is ex­actly the shape the ten­sor cores want.

Concretely, the WY rep­re­sen­ta­tion col­lapses a pan­el’s b re­flec­tors into a sin­gle rank-b up­date. Stack the pan­el’s Householder vec­tors as columns of V=[v1,v2,…,vb], build a small b×b up­per-tri­an­gu­lar T, then:

ℋ1ℋ2⋯ℋb=I−VTV⊤

and the trail­ing-block up­date be­comes three GEMM-shaped steps:

W=V⊤Atrail

Z=T⊤W

Atrail←Atrail−VZ

Blocked Householder (n = 6, panel width b = 2) con­fine the se­r­ial work, GEMM the rest

The other Sean Byrne doesn't exist

conic.al

Earlier this year Apple de­nied me ac­cess to App Store Connect af­ter de­cid­ing that I matched some­one on a U.S. gov­ern­ment re­stricted-party list.

Their ex­pla­na­tion was fairly de­fin­i­tive:

The in­for­ma­tion you pro­vided fully matches one or more re­stricted par­ties on the U.S. gov­ern­ment con­sol­i­dated screen­ing list or an­other gov­ern­men­t’s sanc­tions list.”

The in­for­ma­tion you pro­vided fully matches one or more re­stricted par­ties on the U.S. gov­ern­ment con­sol­i­dated screen­ing list or an­other gov­ern­men­t’s sanc­tions list.”

They al­ready had my pass­port.

I replied with my full le­gal name, Sean Joseph Byrne, up­loaded my dri­ver’s li­cense, and pointed out the ad­dress on the gov­ern­ment record they ap­peared to be match­ing me against. I’ve never lived at that ad­dress, never lived in County Sligo, and have no con­nec­tion to the com­pany in­volved. I asked them to es­ca­late it to their sanc­tions com­pli­ance folks and make a proper non-match de­ter­mi­na­tion.

Apple still has­n’t replied.

Apple’s re­sponse af­ter re­view­ing my iden­tity in­for­ma­tion.

I knew what had hap­pened be­cause this was­n’t the first time.

Cloonmull House

Search the U.S. gov­ern­men­t’s Consolidated Screening List for Sean Byrne and you get ex­actly one re­sult:

Sean Byrne Cloonmull House Drumcliffe, County Sligo Ireland

Source: Entity List, Bureau of Industry and Security Added: July 21, 2009 License re­quire­ment: All items sub­ject to the EAR License pol­icy: Presumption of de­nial

Sean Byrne Cloonmull House Drumcliffe, County Sligo Ireland

Source: Entity List, Bureau of Industry and Security Added: July 21, 2009 License re­quire­ment: All items sub­ject to the EAR License pol­icy: Presumption of de­nial

The Consolidated Screening List is­n’t it­self a sanc­tions list. It’s a U.S. gov­ern­ment screen­ing tool that com­bines a num­ber of ex­port-con­trol, sanc­tions and other re­stricted-party lists main­tained by the Departments of Commerce, State and Treasury.

The re­sult comes from the Commerce Department’s Bureau of Industry and Security Entity List. All items sub­ject to the EAR means the Export Administration Regulations, the rules gov­ern­ing what U.S. com­pa­nies can ship abroad. Presumption of de­nial” is a li­cens­ing pos­ture: if some­one ap­plies for a li­cence to ex­port some­thing to this per­son, the de­fault an­swer is no. That’s the en­tire pur­pose. It’s an ex­port-con­trol in­stru­ment but it says noth­ing about who can be em­ployed, or who can sell shares.

The per­son in the search re­sult is­n’t me. More in­ter­est­ingly, it does­n’t ap­pear to be any­one.

The en­try came out of the pros­e­cu­tion of an Irish air­craft-parts busi­ness called Mac Aviation. In 2009, the Department of Justice de­scribed Sean Byrne as Mac Aviation’s com­mer­cial man­ager and charged him along­side Thomas and Sean McGuinn over the il­le­gal ex­port of U.S. air­craft equip­ment to Iran.

Except Mac Aviation had ap­par­ently in­vented em­ploy­ees to make the com­pany look big­ger than it was.

Mac Aviation was a fa­ther and son work­ing out of a cot­tage on the edge of Drumcliffe vil­lage, Ben Bulben be­hind it. A Rolls-Royce of­fi­cial who came to visit was re­port­edly speech­less. The com­pany he had been sell­ing he­li­copter en­gines to, and had taken for a global op­er­a­tion em­ploy­ing hun­dreds of pro­fes­sion­als, was a house in Sligo.

Drumcliffe, County Sligo, with Ben Bulben in the back­ground.

To keep up the im­pres­sion of a much larger firm, the McGuinns signed doc­u­ments with false names. Sean Byrne was one of them. John Mooney re­ported in the Sunday Times that the name ap­peared on so much com­pany pa­per­work that the American au­thor­i­ties became con­vinced Byrne ex­isted and tried to in­dict him.”

When DOJ filed a su­per­sed­ing in­dict­ment in 2010, re­plac­ing the orig­i­nal, Sean Byrne was no longer a de­fen­dant. The de­fen­dants were Mac Aviation and Thomas and Sean McGuinn.

More im­por­tantly, the su­per­sed­ing in­dict­ment re­peat­edly de­scribes Sean Byrne as an alias used by one or more co-con­spir­a­tors. The phrase ap­pears more than fif­teen times, at­tached to spe­cific in­voices, emails and an own­er­ship state­ment. Mac Aviation staff used the name with sup­pli­ers in the U.S. and cus­tomers in Iran.

At some stage the U.S. gov­ern­ment ap­pears to have worked out that Sean Byrne was­n’t ac­tu­ally a sep­a­rate per­son. And yet the en­try in the Entity List sur­vived. Sixteen years later it still has no date of birth, pass­port num­ber, mid­dle name or other use­ful per­sonal iden­ti­fier. It’s ba­si­cally a com­mon Irish name, an ad­dress in Sligo and Ireland.

Cloonmull House in Sligo was Thomas McGuinn’s home, and the in­dict­ment gives it as Mac Aviation’s reg­is­tered mail­ing ad­dress. So the en­try is­n’t a record of a man in Sligo. It’s a name at­tached to some­body else’s house. And I’ve never lived in Sligo.

This has hap­pened be­fore

Years be­fore I moved back to Ireland, I was sell­ing stock through a ten­der of­fer when Nasdaq stopped my or­der af­ter a back­ground check re­turned a match on my name.

Their Head of Account Management emailed me say­ing that the check had found a match as­so­ci­ated with a pre­vi­ous in­ci­dent and that he was con­fi­dent it was a false pos­i­tive, but com­pli­ance wanted ad­di­tional proof of my California ad­dress. On the phone he gave me more de­tail and specif­i­cally asked me about Mac Aviation. I ex­plained that I’d never had any­thing to do with the com­pany, pro­vided the ex­tra doc­u­men­ta­tion they wanted and the sale went through with an en­ter­tain­ing story to tell peo­ple.

Nasdaq’s re­sponse af­ter a back­ground check matched my name.

More re­cently I or­dered a Starlink mount­ing pole from California. DHL, ship­ping on be­half of SpaceX, told me the prob­lem was a re­stricted-party match and asked for my pass­port. I sent it, they cleared it and the pole ar­rived. DHL also would­n’t send a hat I’d or­dered in the U.S. on to me in Ireland with­out a copy of my pass­port.

The fake Sean Byrne was as­so­ci­ated with at­tempts to pro­cure he­li­copter en­gines, fighter-air­craft parts and other U.S. equip­ment for Iran. The real Sean Byrne oc­ca­sion­ally needs to pro­duce a pass­port be­fore some­one will send him a hat.

Apple is the odd one out. Nasdaq and the ship­pers both gen­er­ated false pos­i­tives, asked for enough in­for­ma­tion to re­solve them, and then re­solved them. Apple al­ready had my pass­port, re­ceived my dri­ver’s li­cense and a fairly de­tailed ex­pla­na­tion of ex­actly why the match was wrong, and still told me that I fully” matched a re­stricted party.

Twelve men named Robert Johnson

None of this is novel. In October 2006, 60 Minutes found twelve American men named Robert Johnson who all had trou­ble board­ing flights, and brought them to New York to­gether. A politi­cian, a soc­cer coach, busi­ness­men and a serv­ing mem­ber of the mil­i­tary.

The Robert Johnson they kept be­ing con­fused with was­n’t a man named Robert Johnson. It was a known alias of some­one con­victed of plot­ting to bomb a Hindu tem­ple and a cin­ema in Toronto, who by then had served his sen­tence and been de­ported to Trinidad. The air­line agents check­ing the twelve real ones against it had a name and noth­ing else. Not even a date of birth.

Asked about it, the head of the FBIs Terrorist Screening Center said Robert Johnson would never get off the list, and that any­one with the name would be in­con­ve­nienced every time they tried to check in.

I’m not on the Entity List. I’m be­ing misiden­ti­fied as an en­try on it. Apple did­n’t make that dis­tinc­tion.

The con­sumer ver­sion of this has been lit­i­gated. In 2005 Sandra Cortez was held up buy­ing a car in Colorado be­cause TransUnion matched her against a woman on the Treasury Department’s sanc­tions list who was born 27 years af­ter her. The credit bu­reau had com­pared first and last names only, not dates of birth. A jury awarded her dam­ages and the Third Circuit up­held it, de­scrib­ing the fail­ure to com­pare birth dates as rep­re­hen­si­ble. Sergio Ramirez had the same ex­pe­ri­ence at a car deal­er­ship six years later, and his case reached the Supreme Court in 2021.

In both cases the courts called for bet­ter match­ing. Compare the date of birth. Compare the mid­dle name.

There is no ver­sion of that avail­able to me. The list­ing has no date of birth to com­pare. No mid­dle name and no pass­port num­ber, be­cause the per­son does­n’t ex­ist. A screen­ing sys­tem that does its job per­fectly will still flag me, for­ever, on the only two facts the record con­tains: a com­mon Irish name and a coun­try.

Which is why ar­gu­ing with com­pa­nies one at a time is the wrong ap­proach.

The real fake Sean Byrne

Remote hir­ing has de­vel­oped a se­ri­ous iden­tity-fraud prob­lem. It has also de­vel­oped, some­what un­be­liev­ably, a North Korea prob­lem.

North Korean IT work­ers have been get­ting re­mote jobs at U.S. com­pa­nies us­ing stolen or fab­ri­cated iden­ti­ties, proxy in­ter­view­ers and U.S.-based laptop farms” that make work­ers over­seas ap­pear to be con­nect­ing from in­side the United States. The FBI has been warn­ing com­pa­nies about it, and the DOJ has pros­e­cuted schemes that suc­cess­fully placed work­ers at more than 100 U.S. com­pa­nies.

So if you’re hir­ing re­mote en­gi­neers, is this per­son ac­tu­ally who they claim to be?” is now a le­git­i­mate se­cu­rity prob­lem.

A new class of re­cruit­ing prod­ucts is be­ing built around that prob­lem. They sit in­side the soft­ware com­pa­nies use to man­age job ap­pli­ca­tions, the ap­pli­cant track­ing sys­tem or ATS.

Tofu is one of them. Their pitch is that they screen every ap­pli­cant across more than forty sig­nals be­fore a re­cruiter opens a ré­sumé, and that when a screened ap­pli­cant trig­gers a sanc­tions match the sig­nal routes straight to com­pli­ance re­view. They are ex­plicit that this has to hap­pen early: screen­ing at the back­ground-check stage is, on their ac­count, al­ready too late, so it should run at ap­pli­ca­tion sub­mis­sion be­fore any re­cruiter makes con­tact. They also say a can­di­date flagged by one of their cus­tomers is flagged across their whole cus­tomer net­work through their API. Brainner makes a sim­i­lar case, check­ing ap­pli­cants against 3.5 bil­lion data points and flag­ging high-risk pro­files be­fore a re­cruiter re­views them.

Tofu says its data­base is built from analysed ap­pli­cant pro­files. Their home­page says more than 18 mil­lion. Most of their other pages say more than 5 mil­lion.

The sanc­tions screen­ing these ven­dors de­scribe is OFAC and the Specially Designated Nationals list, which is the right list for the risk they’re sell­ing against: pay­ing wages to a sanc­tioned per­son. I’ve no ev­i­dence that ei­ther com­pany queries the BIS Entity List, and no idea whether any com­pany I’ve ap­plied to uses ei­ther prod­uct.

But screen­ing my name against U.S. re­stricted-party data pro­duces a false pos­i­tive. It did at Nasdaq, at SpaceX, at DHL and at Apple. Four times in six years. And the in­dus­try’s an­swer to re­mote-hir­ing fraud is to run that class of check ear­lier, be­fore a hu­man is in­volved, and prop­a­gate the re­sult across a net­work of em­ploy­ers.

Mac Aviation fab­ri­cated an em­ployee to make it­self look like a big­ger com­pany. That fab­ri­cated em­ployee ended up in an au­thor­i­ta­tive U.S. gov­ern­ment data­base. Sixteen years later, com­pa­nies are build­ing sys­tems us­ing that data­base to de­tect fake ap­pli­cants, fraud­sters, crim­i­nals and state-backed ac­tors be­fore they get through the hir­ing process.

Has this cost me a job? I don’t know. I’ve spent my ca­reer in in­for­ma­tion se­cu­rity, much of it in the U.S., and I’m now ap­ply­ing for roles from Ireland. There have been jobs where I’ve a back­ground that should at least get a con­ver­sa­tion and I’ve heard noth­ing. That’s hardly re­mark­able on its own. Hiring is messy, roles get frozen, re­cruiters dis­ap­pear and com­pa­nies re­ject per­fectly good can­di­dates for rea­sons the can­di­date will never know. There is an en­tire web­site called Did They Ghost You?, so we’re not deal­ing with an un­ex­plained phe­nom­e­non.

But Nasdaq told me it was Mac Aviation. DHL ship­ping on be­half of SpaceX asked for a pass­port and told me it was due to a hit against the re­stricted par­ties on the U.S. gov­ern­ment con­sol­i­dated screen­ing list. Apple at least told me I’d matched some­thing, even if it then stopped talk­ing. An ap­pli­cant track­ing sys­tem will tell me noth­ing at all.

Upstream

I asked the Bureau of Industry and Security’s End-User Review Committee to re­view the orig­i­nal Entity List en­try. I’m not sure any­thing will come of it. The nor­mal process is de­signed for a listed per­son ask­ing to be re­moved, which cre­ates an in­ter­est­ing prob­lem here. I’m not the listed Sean Byrne, and the avail­able ev­i­dence sug­gests that per­son may never have ex­isted.

For now the U.S. gov­ern­men­t’s screen­ing data still says Sean Byrne, Cloonmull House, Drumcliffe, County Sligo.

I’ve still never lived in Sligo.

Just a moment...

alz-journals.onlinelibrary.wiley.com

Working With AI Feels More Like Leadership Than Coding

allen.bargi.org

allen@bargi:~/​notes$ cat work­ing-with-ai.md

For most of my ca­reer, code gave me cer­tainty. A pro­gram did what its in­struc­tions told it to do. If the same in­put pro­duced a dif­fer­ent re­sult, we called it a bug.

People were never like that. As a leader, I can ex­plain a task and get ex­actly what I asked for. I can also get some­thing bet­ter be­cause a col­league un­der­stood the in­tent be­hind the re­quest. Sometimes the re­sult shows that I was not as clear as I thought.

Working with AI feels closer to the sec­ond ex­pe­ri­ence.

AI runs on soft­ware, but work­ing with it is not fully pre­dictable. The same re­quest can pro­duce a dif­fer­ent an­swer. It can make a use­ful con­nec­tion, miss an ob­vi­ous point, or sur­prise me with an ap­proach I had not con­sid­ered.

This is frus­trat­ing when I treat AI like a com­piler. It be­comes more use­ful when I treat the in­ter­ac­tion as a form of col­lab­o­ra­tion.

That does not make AI a per­son. It has no lived ex­pe­ri­ence, ac­count­abil­ity, or hu­man judg­ment. The com­par­i­son is about how we work. Good lead­ers do more than is­sue in­struc­tions. They share con­text, ex­plain the de­sired out­come, set bound­aries, and re­spond to what comes back.

The same habits im­prove my work with AI. A good prompt helps, but a shared work­ing con­text helps more. Examples, cor­rec­tions, and reusable in­struc­tions re­duce mis­un­der­stand­ings. Over time, the sys­tem be­comes bet­ter aligned with how I think and what I need from it.

The in­vest­ment is not in pre­tend­ing that AI is hu­man. It is in be­com­ing bet­ter at ex­press­ing in­tent.

We spent years learn­ing how to tell com­put­ers ex­actly what to do. Now we also need to ex­plain why the work mat­ters, what a good re­sult looks like, and where judg­ment is needed.

For me, that is the shift. AI is mak­ing soft­ware work less like is­su­ing com­mands to a ma­chine and more like lead­ing through a con­ver­sa­tion. The tech­nol­ogy is new. The lead­er­ship skills are not.

This note led to a thought­ful dis­cus­sion on Hacker News. I rec­om­mend read­ing through all the com­ments; the agree­ment, crit­i­cism, and dif­fer­ent ex­pe­ri­ences add more to the idea than I could fit here.

Just a moment...

www.smithsonianmag.com

Eigendrum - draw a shape and hear it as a real drum

baselashraf81.github.io

how it works

A drum­head clamped at its rim can only vi­brate in cer­tain shapes, at cer­tain fre­quen­cies. Those shapes and fre­quen­cies are the so­lu­tions of

−∇²u = λu  inside the shape,  u = 0 on the edge

Each so­lu­tion u is a mode, a stand­ing wave, and each λ gives a fre­quency pro­por­tional to √λ. This is an eigen­value prob­lem, and for al­most every shape it has no for­mula. So Eigendrum solves it nu­mer­i­cally: it cov­ers your shape with a mesh of tri­an­gles, builds the fi­nite el­e­ment stiff­ness and mass ma­tri­ces, and finds the small­est eigen­val­ues of Kφ = λMφ.

why you can trust the num­bers

A few shapes have spec­tra that can be writ­ten down ex­actly, and the solver is tested against them on every change. A cir­cle’s fre­quen­cies are the ze­ros of Bessel func­tions; a rec­tan­gle’s are π²(m²/​a² + n²/​b²). The solver re­pro­duces both to bet­ter than a tenth of a per­cent, and be­cause a con­form­ing fi­nite el­e­ment method min­imises en­ergy over a re­stricted space, its an­swers are guar­an­teed slight over­es­ti­mates, never un­der. The mea­sured er­ror is in the num­bers”.

where you strike it mat­ters

Striking a spot dri­ves each mode in pro­por­tion to how much that mode moves there. Hit a line where a mode stands still and you can­not ex­cite it at all. That was not pro­grammed in; it falls out of pro­ject­ing the mal­let onto the modes.

So a strike is never one mode: it is every mode at once, in a mix­ture set by where your mal­let landed. The rules along the mode list are that mix­ture, and the modes marked with a square were the ones your mal­let could not reach. Pressing a row in­stead plays that sin­gle mode alone - some­thing no mal­let can do, and the only way to hear what one fre­quency of a shape ac­tu­ally sounds like.

drums from equa­tions

Besides trac­ing an out­line you can write one. r(t) gives the ra­dius as t sweeps one full turn, so 1 + 0.3cos(5t) is a five-lobed flower; a para­met­ric x(t), y(t) pair reaches the closed curves po­lar can­not, like a nephroid or an egg. This is not a short­cut for draw­ing. It reaches shapes no hand traces ac­cu­rately - eleven even lobes, a super­el­lipse part­way be­tween a cir­cle and a square - and it makes a shape some­thing you vary: change one num­ber and hear what moved.

A writ­ten shape trav­els as its own text. The link for a for­mula holds the for­mula, so it is some­thing you can read and re­type rather than a few hun­dred char­ac­ters of en­coded out­line, and edit­ing it in the ad­dress bar works. Anything too thin to mesh hon­estly is re­fused rather than an­swered, be­cause a sliver would still re­turn num­bers and they would be wrong.

can one hear the shape of a drum?

Mark Kac asked ex­actly that in 1966. In 1992 Carolyn Gordon, David Webb and Scott Wolpert an­swered no, by build­ing two dif­fer­ent shapes with iden­ti­cal spec­tra. Both are in the form list as Kac drum I and II. Each is made from the same seven tri­an­gles, re­arranged. They en­close the same area and the same perime­ter, and every fre­quency matches. Switch be­tween them and lis­ten: the out­lines are plainly dif­fer­ent and the sound is not.

what’s physics, and what’s just a slider

The fre­quency ra­tios, the mode shapes, and the pitch of the fun­da­men­tal are all baked into the out­line - you can’t touch them. What you can move is the wave speed (tension and den­sity): the pitch slider names the note a cir­cle of this area would sound, and your ac­tual shape lands above or be­low that on its own. Since every shape gets scaled to the same area first, that off­set is gen­uinely about the shape - roughly six semi­tones of spread across the built-in pre­sets, with the cir­cle al­ways low­est thanks to Faber-Krahn’s in­equal­ity. Fade time is a real slider too, since that’s ma­te­r­ial and air, not some­thing the maths pins down.

The mal­let works the same way. Its width is a slider; its con­tact time is fixed at a few mil­lisec­onds, be­cause no real beater is in­stant, and one that was would slam every mode equally hard. Both change how much of a mode a strike can reach - nei­ther one can shift where a mode ac­tu­ally sits. Damping is Rayleigh damp­ing, so loss rises with the square of fre­quency: the high over­tones die away first, which is why a drum dark­ens as it rings.

where it lives, and how to reach me

Eigendrum is hosted at eigen­drum.com. That is the ad­dress to link to and to cite; the older base­lashraf81.github.io/​eigen­drum is a mir­ror that now redi­rects there.

For ad­ver­tis­ing or part­ner­ship en­quiries, write to u2679054@uel.ac.uk. For any­thing wrong with the maths or the in­ter­face, an is­sue on the repos­i­tory is bet­ter, be­cause then the fix is pub­lic.

colophon

No build step and no ap­pli­ca­tion back­end: the mesh, the solve and the au­dio all run on your own ma­chine. The de­ployed site uses Vercel Analytics and Google Analytics; it car­ries no ad­ver­tis­ing net­work and no con­sent ban­ner. Support to­ward the do­main and host­ing is vol­un­tary, via the link above. The shape you draw lives in the ad­dress bar af­ter the #, which browsers never send to a server, and an­a­lyt­ics is con­fig­ured not to record it. Details in the pri­vacy no­tice. Set in Jost* by in­de­struc­tible type*. After Kac, Can One Hear the Shape of a Drum? (1966); Gordon, Webb and Wolpert (1992); and Driscoll, Eigenmodes of Isospectral Drums (1997), whose co­or­di­nates the two Kac drums use.

Source, in­clud­ing the solver and the tests that check it against the closed-form spec­tra: github.com/​Base­lAshraf81/​eigen­drum

Free to use, with no ac­count and noth­ing to in­stall. If you would like to put some­thing to­wards it, or would rather it were not ad-sup­ported: ko-fi.com/​base­lashraf

The mathematical beauty of hyperbezier curves

linebender.org

Raph Levien, August 8, 2026

I have for many decades been fas­ci­nated by the prospect of a curve fam­ily bet­ter suited for in­ter­ac­tive de­sign than cu­bic Béziers. In that search, I have come to a new-found re­spect for those Béziers. In par­tic­u­lar, though other curves like Euler spi­rals are bet­ter at rep­re­sent­ing smooth curves, they fall short at rep­re­sent­ing re­gions large cur­va­ture vari­a­tion, where cu­bic Béziers ex­cel. The great strength of Béziers is their ver­sa­til­ity.

So, to find a strictly bet­ter curve fam­ily, one re­quire­ment is clear: the fam­ily should con­tain both smooth cur­va­ture vari­a­tion and higher-ten­sion re­gions where cur­va­ture peaks. Polynomial spi­rals, or Spiro curves, the sub­ject of my PhD the­sis, fail to achieve this goal.

After con­sid­er­able search and re­ject­ing a num­ber of can­di­dates, I now bring a pro­posal for a curve fam­ily which I think is a very strong can­di­date for sup­plant­ing cu­bic Béziers in 2D vec­tor graphic de­sign.

Without fur­ther ado, the curve fam­ily is rep­re­sented by the Cesàro equa­tion, spec­i­fy­ing cur­va­ture as a func­tion of arc length:

$$\kappa(s) = \frac{as+b}{(cs^2+ds+1)^{1.5}}$$

This curve be­haves sur­pris­ingly sim­i­larly to a cu­bic Bézier, es­pe­cially at smaller an­gles, but when pushed has very dif­fer­ent be­hav­ior. Overall it has smoother cur­va­ture vari­a­tion and is more likely to have mo­not­o­nic cur­va­ture. It con­tains within it a few valu­able an­a­lytic curves, and is also good at ap­prox­i­mat­ing a wide range of oth­ers. The re­main­der of this blog post is de­voted to show­ing its be­hav­ior in a wide range of con­texts.

Approximation of cu­bic Béziers

The hy­per­bezier closely ap­prox­i­mates cu­bic Béziers at low de­flec­tion an­gles at the end­points. I will show rather than try to pre­sent math­e­matic rea­son­ing. Below is an in­ter­ac­tive tester that maps cu­bic Bézier con­trol points to a cor­re­spond­ing hy­per­bezier. The Bézier is shown in gray for com­par­i­son.

op­tions

cu­bic Bézier cur­va­ture comb

At larger an­gles, and also when the arm lengths” of the con­trol han­dles get larger, the fit with the cu­bic Bézier is not par­tic­u­larly close, but the con­trol scheme is still a use­ful way of set­ting the pa­ra­me­ters for the hy­per­bezier curve (setting the poly­no­mial co­ef­fi­cients di­rectly is not at all in­tu­itive).

Note that this pa­ra­me­ter map­ping is a first us­able draft, and may not be the fi­nal ver­sion. That said, in an in­ter­ac­tive edit­ing con­text, a per­fect map­ping is not re­quired, as it’s al­ways pos­si­ble to tweak the con­trol points to reach any de­sired curve shape.

The de­tails of the map­ping can be found in the JavaScript source for this page, but the ba­sic prin­ci­ple is that the arm lengths set the de­nom­i­na­tor, then the nu­mer­a­tor is solved to make the end­point tan­gents match.

Exact an­a­lyt­i­cal curves

The most ob­vi­ous an­a­lyt­i­cal curve con­tained in the fam­ily is the Euler spi­ral, which is clearly at­tained when $c == d == 0$. The Euler spi­ral has smooth cur­va­ture vari­a­tion (it is a so­lu­tion to the Minimum Variation Curve prob­lem) and mo­not­o­nic cur­va­ture. An ex­act cir­cu­lar arc is also within the pa­ra­me­ter space, sim­ply when $a == 0$ as well. Cubic Béziers, by com­par­i­son, only ap­prox­i­mate cir­cu­lar arcs.

There a few other log-aes­thetic curves lurk­ing in the pa­ra­me­ter space, mean­ing cur­va­ture is sim­ply the ar­clength raised to a par­tic­u­lar power. Reachable ex­po­nents in­clude -3, -2, -1.5, and -0.5 (alternatively, us­ing the con­ven­tion from the log-aes­thetic pa­pers, α can be 1/3, 1/2, 2/3, and 2). The last of these is the cir­cle in­vo­lute, which is in­ter­est­ing be­cause it is its own par­al­lel curve, among other things. And the first of these is the evo­lute of the Euler spi­ral.

The pa­ra­me­ter map­ping de­scribed above is de­signed so that when the con­trol points lie on the double parabola” in my Euler spi­ral par­al­lel curve blog post, then the re­sult is an ex­act Euler spi­ral.

Superellipses and squir­cles

A cu­bic Bézier can do super­el­lipses up to a cer­tain point, but does not ap­proach a sharp cor­ner; some­where be­fore then it starts de­vel­op­ing ad­di­tional in­flec­tion points, while a true super­el­lipse or squir­cle is of course con­vex.

The hy­per­bezier can go all the way to a sharp cor­ner, and vi­su­ally looks pretty close to the super­el­lipse. It’s not in­cred­i­bly ac­cu­rate (for mod­er­ate ex­po­nents like 5, the best cu­bic Bézier fit is slightly bet­ter, in fact), but vi­su­ally does the right thing. It’s prob­a­bly best to say that the hy­per­bezier is a sub­tly dif­fer­ent squir­cle than the super­el­lipse, nei­ther bet­ter nor worse.

Hyperbola

Another fun­da­men­tal curve is the hy­per­bola. It is round at the turn, but cur­va­ture tails off and the curve reaches a lin­ear as­ymp­tote on both sides. Cubic Béziers do not fit this curve well, and do not ex­hibit that as­ymp­totic be­hav­ior. But the hy­per­bezier fits it nat­u­rally and with very high ac­cu­racy.

We can also ap­pre­ci­ate the re­la­tion­ship math­e­mat­i­cally. In both, the cur­va­ture tails off as $\kappa \approx s^{-3}$ as­ymp­tot­i­cally. In ad­di­tion, us­ing the small an­gle ap­prox­i­ma­tion $\sin \theta \approx \theta, \cos \theta \approx 1$, in­te­grat­ing the Whewell equa­tion (see be­low) of the even-sym­met­ric hy­per­bezier yields the hy­per­bola ex­actly. This close re­la­tion­ship is one of the in­spi­ra­tions of the name; it is some­thing of a fu­sion be­tween a hy­per­bola and a Bézier. Another in­spi­ra­tion, in­ci­den­tally, is that the log-aes­thetic so­lu­tions, in­clud­ing the Euler spi­ral, are rep­re­sented by hy­per­ge­o­met­ric func­tions.

Elastica

An im­por­tant curve fam­ily to con­sider is the elas­tica, an ide­al­ized thin flex­i­ble strip. The math be­hind the elas­tica has hun­dreds of years of his­tory, but more to the point it is both a smooth curve (it can be char­ac­ter­ized as the ex­act so­lu­tion to the Minimum Energy Curve prob­lem) and can ex­hibit large cur­va­ture vari­a­tion when placed un­der ten­sion. To my eyes, it’s a more pleas­ing and nat­ural curve, as it’s based in phys­i­cal re­al­ity in a way that cu­bic Béziers aren’t. Ideally we’d be able to ap­prox­i­mate it well, and the fact that Spiro curves can’t is a strong case against them. Fortunately, our hy­per­bezier does rea­son­ably well. As in the case of the super­el­lipse, it’s a fairly de­cent vi­sual match, though again not a pre­cise ap­prox­i­ma­tion.

Some math­e­mat­i­cal prop­er­ties

This sec­tion is a grab-bag of some math­e­mat­i­cal prop­er­ties of the hy­per­bezier curve.

An ap­peal­ing prop­erty is that the Cesàro equa­tion is eas­ily in­te­grated, yield­ing a Whewell equa­tion:

$$\theta(s) = \frac{a’s+b’}{\sqrt{(cs^2+ds+1)}}$$

Here, the pa­ra­me­ters in the nu­mer­a­tor aren’t the same as the Cesàro equa­tion (though they are read­ily de­rived), but the qua­dratic poly­no­mial in the de­nom­i­na­tor is the same. Another round of in­te­gra­tion (which I be­lieve will be es­pe­cially use­ful for curve fit­ting) also yields sim­ple an­a­lyt­i­cal equa­tions, re­veal­ing that a close re­la­tion to trig func­tions.

The de­riva­tion of pa­ra­me­ters for the Whewell equa­tion fol­lows fairly straight­for­wardly from the fol­low­ing in­te­gral, which has a pleas­ing sym­me­try:

$$\int \frac{as+b}{(cs^2 + 1)^{1.5}} ds = \frac{bs-a/c}{\sqrt{cs^2 + 1}} + C$$

Going in the op­po­site di­rec­tion, the de­riv­a­tive is also straight­for­ward, yield­ing a qua­dratic over the same poly­no­mial in the de­nom­i­na­tor, this time with an ex­po­nent of 2.5. To com­pute roots, iden­ti­fy­ing the cur­va­ture ex­trema, in­volves merely solv­ing the qua­dratic.

Because the de­nom­i­na­tor is pos­i­tive, there is at most one in­flec­tion point, at $s = -b/a$, when it is in range [0, 1]. That clearly sig­nals that it can’t ac­cu­rately ap­prox­i­mate all cu­bic Béziers, as those can have two in­flec­tion points. In my ex­pe­ri­ence, in­stances of cu­bic Béziers with two in­flec­tion points are rarely used in de­signs (it might be in­ter­est­ing to look at a cor­pus of vec­tor graph­ics to quan­tify this).

I have ex­per­i­mented with other val­ues for the ex­po­nent than 1.5. A value of 1 would be ap­peal­ingly sim­ple, as it would re­sem­ble Padé ap­prox­i­ma­tion, but I found it can­not rep­re­sent high-ten­sion curves in a nu­mer­i­cally sta­ble way. I also con­sid­ered an ex­po­nent of 2, but the in­te­grals don’t come out as cleanly and over­all it did­n’t match cu­bic Béziers as closely. Perhaps this is not sur­pris­ing, as the ex­po­nent of 1.5 re­sem­bles the equa­tion for cur­va­ture of a para­met­ric curve $\mathbf{x}(t)$:

$$\kappa = \frac{\mathbf{x}′ \times \mathbf{x}‘’}{(\mathbf{x}′ \cdot \mathbf{x}’)^{1.5}}$$

In gen­eral, arc length pa­ram­e­trized curves are in many ways more pleas­ant to work with than gen­eral para­met­ric curves; there’s a non­triv­ial cal­cu­la­tion to solve the in­verse arc prob­lem for Béziers.

Future work

In this post, I pre­sent the curve fam­ily to the world. I wel­come and en­cour­age ex­per­i­men­ta­tion. Of course, there is lots to be done to make the math­e­mat­i­cal idea into a prac­ti­cal tool. For one, it should be wired up into a spline. I ex­pect to fol­low the ideas in The hy­per­bezier pen tool by Colin Rofls, which was based on an ear­lier draft of the hy­per­bezier math. This ear­lier draft had some of the de­sired be­hav­ior of the cur­rent pro­posal, but also some flaws, in­clud­ing not be­ing able to ap­prox­i­mate sharp super­el­lipses, and also not be­ing closed un­der sub­di­vi­sion. On the other hand, it had a straight­for­ward so­lu­tion to the prob­lem of map­ping Bézier-like con­trol points to the pa­ra­me­ters.

One idea from the above spline that I think is worth pre­serv­ing is mak­ing splines G2 con­tin­u­ous by con­struc­tion. Such ap­proaches don’t work well with cu­bic Béziers be­cause there are mul­ti­ple lo­cal min­ima, cre­at­ing sad­dle points in the op­ti­miza­tion ter­rain.

Another promis­ing di­rec­tion is work­ing out curve fit­ting. While I haven’t got­ten deep into it yet, I ex­pect curve fit­ting to be fairly straight­for­ward, es­pe­cially com­pared with cu­bic Béziers. I’m es­pe­cially in­ter­ested in fit­ting touch or pen data. As usual for this prob­lem, a cen­tral part of the chal­lenge is find­ing good sub­di­vi­sion points.

I hope to land bet­ter im­ple­men­ta­tions in the spline repos­i­tory, but make no guar­an­tees how fast that will go.

Acknowledgements

I’ve been work­ing on this for years, and have ben­e­fited from dis­cus­sions with many peo­ple, in­clud­ing Colin Rofls, Alex Ionuț, Jacob Rus, and Trevor David Black (apologies if I’ve missed some­one; just let me know). Special credit goes to Muhammad Ragib Hasin, who im­proved many of the nu­mer­i­cal and solv­ing tech­niques for pa­ra­me­ter map­ping. AI as­sis­tance was used to re­fine the cur­rent ver­sion of pa­ra­me­ter map­ping and to pre­pare the vi­su­als for this post.

Abdominal Fat Predicts Heart Disease Risk Better Than BMI - American College of Cardiology

www.acc.org

Contact: Olivia Walther, owalther@acc.org ,

WASHINGTON (Aug 11, 2026) -

The size of a per­son’s mid­sec­tion is a bet­ter in­di­ca­tor of car­dio­vas­cu­lar dis­ease risk when com­pared to their body mass in­dex (BMI) alone, ac­cord­ing to a study pub­lished in JACC, the flag­ship jour­nal of the American College of Cardiology. BMI has tra­di­tion­ally been used to de­ter­mine over­weight or obe­sity, com­mon risk fac­tors for heart dis­ease, but this study shows that not ac­count­ing for waist cir­cum­fer­ence (WC) or waist-to-hip ra­tio (WHR) can lead to mis­clas­si­fi­ca­tion of car­dio­vas­cu­lar dis­ease risk.

Indeed, it ap­pears that WC and WHR re­clas­sify risk de­fined by tra­di­tional BMI thresh­olds,” said Michael J. Blaha, MD, MPH, se­nior au­thor of the study and di­rec­tor of clin­i­cal re­search at Johns Hopkins Ciccarone Center for the Prevention of Cardiovascular Disease. We saw in­di­vid­u­als with clin­i­cally de­ter­mined nor­mal weight who had el­e­vated cen­tral adi­pos­ity and high WHR, as­so­ci­at­ing them with higher risk across most out­comes.”

BMI is cal­cu­lated by di­vid­ing weight in kilo­grams by height in me­ters squared and is a com­mon prac­tice for di­ag­nos­ing obe­sity. However, BMI can­not ac­count for dis­tri­b­u­tion of body fat. Studies have shown that vis­ceral fat, which is fat that sur­rounds the in­ter­nal or­gans in the ab­dom­i­nal area, is as­so­ci­ated with chronic dis­eases like heart dis­ease and di­a­betes, while sub­cu­ta­neous fat, which is lo­cated di­rectly un­der the skin, is not as strongly as­so­ci­ated.

Despite ev­i­dence link­ing cen­tral adi­pos­ity, the ac­cu­mu­la­tion of both vis­ceral and sub­cu­ta­neous fat in the ab­dom­i­nal area, to ad­verse car­dio­vas­cu­lar health out­comes, BMI is still the most used met­ric to de­ter­mine over­weight and obe­sity and fu­ture car­dio­vas­cu­lar risk.

This study ex­am­ines whether adding WC and WHR to BMI bet­ter pre­dicts fu­ture car­dio­vas­cu­lar risk. Researchers from the Cross Cohort Collaboration looked at over 260,000 peo­ple over an av­er­age of 20 years who had ei­ther WC or WHR data and at least one of nine out­comes: time to first fa­tal and non-fa­tal my­ocar­dial in­farc­tion, fa­tal and non-fa­tal stroke, heart fail­ure, atrial fib­ril­la­tion, to­tal coro­nary heart dis­ease (CHD), to­tal car­dio­vas­cu­lar dis­ease (CVD), CHD mor­tal­ity, CVD mor­tal­ity and/​or all-cause mor­tal­ity.

In in­di­vid­u­als with nor­mal weight as de­ter­mined by BMI, 5% had high WC and 18% had high WHR; among those with over­weight, 39% had high WC and 40% had high WHR. Among those with obe­sity, 9% had low WC and 45% had low WHR.

Those in­di­vid­u­als with nor­mal weight or over­weight and clin­i­cally de­fined high WC or WHR were as­so­ci­ated with a 15% - 50% greater risk for most of the nine stud­ied out­comes. Those with obe­sity and low WC were not found to be as­so­ci­ated with a sig­nif­i­cantly dif­fer­ent risk of out­comes com­pared with those who had nor­mal weight and low WC, ex­cept for all-cause mor­tal­ity, for which risk was sig­nif­i­cantly lower.

Our find­ings em­pha­size the crit­i­cal role of iden­ti­fy­ing el­e­vated cen­tral adi­pos­ity, even in in­di­vid­u­als with a nor­mal BMI or with a BMI in the over­weight range. Relying solely on BMI may re­sult in mis­clas­si­fi­ca­tion of car­dio­vas­cu­lar risk across a wide range of car­dio­vas­cu­lar out­comes,” Zeina A. Dardari, PhD, MS, lead au­thor of the study, said. We en­cour­age clin­i­cians to con­sider cen­tral adi­pos­ity dis­tri­b­u­tion across the en­tire BMI spec­trum when eval­u­at­ing car­dio­vas­cu­lar risk in pri­mary pre­ven­tion set­tings.”

Limitations of the study in­clude that it did not have mea­sures of phys­i­cal ac­tiv­ity, diet or ge­netic obe­sity risk, which have all been shown to play a role in the de­vel­op­ment of CVD. It also in­cluded only one as­sess­ment of WC and WHR, which could limit un­der­stand­ing of how changes in cen­tral fat ac­cu­mu­la­tion over time in­flu­ences CVD risk.

It is time to aban­don a sole fo­cus on body mass in­dex,” said Harlan M. Krumholz, MD, SM, MACC, FAHA, Editor-in-Chief of JACC and the Harold H. Hines, Jr Professor at the Yale School of Medicine. This enor­mously im­por­tant study, based on data from hun­dreds of thou­sands of par­tic­i­pants in large-scale co­hort stud­ies, au­thor­i­ta­tively shows that waist cir­cum­fer­ence and waist-to-hip ra­tio pro­vide crit­i­cal in­for­ma­tion about car­dio­vas­cu­lar risk, even among peo­ple with a BMI con­sid­ered nor­mal. Where fat is dis­trib­uted mat­ters, and these sim­ple mea­sures should be part of rou­tine car­dio­vas­cu­lar risk as­sess­ment.”

For an em­bar­goed copy of the study Risk Reclassification Beyond BMI by Waist Circumference and Waist-to-Hip Ratio Across Nine Cardiovascular Outcomes: Results from the Cross-Cohort Collaboration,” con­tact JACC Media Relations Manager Olivia Walther at owalther@acc.org.

The American College of Cardiology (ACC) is a global leader ded­i­cated to trans­form­ing car­dio­vas­cu­lar care and im­prov­ing heart health for all. For more than 75 years, the ACC has em­pow­ered a com­mu­nity of over 60,000 car­dio­vas­cu­lar pro­fes­sion­als across more than 140 coun­tries with cut­ting-edge ed­u­ca­tion and ad­vo­cacy, rig­or­ous pro­fes­sional cre­den­tials, and trusted clin­i­cal guid­ance. From its world-class JACC Journals and NCDR reg­istries to its Accreditation Services, global net­work of Chapters and Sections, and CardioSmart pa­tient ini­tia­tives, the College is com­mit­ted to cre­at­ing a world where sci­ence, knowl­edge and in­no­va­tion op­ti­mize pa­tient care and out­comes. Learn more at www.ACC.org or con­nect on so­cial me­dia at @ACCinTouch.

The ACCs JACC Journals rank among the top car­dio­vas­cu­lar jour­nals in the world for sci­en­tific im­pact. The flag­ship jour­nal, the Journal of the American College of Cardiology (JACC) — and spe­cialty jour­nals con­sist­ing of JACC: Advances, JACC: Asia, JACC: Basic to Translational Science, JACC: CardioOncology, JACC: Cardiovascular Imaging, JACC: Cardiovascular Interventions, JACC: Case Reports, JACC: Clinical Electrophysiology and JACC: Heart Failure — pride them­selves on pub­lish­ing the top peer-re­viewed re­search on all as­pects of car­dio­vas­cu­lar dis­ease. Learn more at JACC.org.

###

< Back to Listings

Oxiis Intelligent Bike Booster|Bike Booster|ASUS Global

www.asus.com

ASUS Oxiis E250G1

Ride Easy. Explore More.

Oxiis is a uni­ver­sal, fric­tion-drive mo­tor sys­tem that trans­forms any con­ven­tional bi­cy­cle into a smart e-bike. Its name fuses the Greek Oxis (agility) and Axis (pivot)—perfectly re­flect­ing how its high-per­for­mance drive core de­liv­ers ul­ti­mate ac­cel­er­a­tion and in­stant, nim­ble re­spon­sive­ness right to your ride.

Focus on es­sen­tials

Adaptive boost tech­nol­ogy

Precisely de­tects in­clines, pro­vid­ing seam­less as­sis­tance for ef­fort­less climbs.

Peak power 500W

Instant burst, ef­fort­lessly con­quer­ing chal­leng­ing ter­rains, mak­ing every ride eas­ier.

Wireless ca­dence sen­sor

Ditch the wires. Simple to in­stall, smart to ride.

Smart brake-de­tect­ing tail­light

Enhances night vis­i­bil­ity and safety, safe­guard­ing your jour­ney.

Design

Simple de­sign. Impressive ben­e­fits.

The ASUS Oxiis E250G1 de­signed with the user in mind: min­i­mum struc­ture, max­i­mum util­ity. Every de­tail is metic­u­lously crafted to el­e­vate your daily ex­pe­ri­ence, de­liv­er­ing seam­less in­ter­ac­tion and a func­tional mas­ter­piece of pre­mium qual­ity and beauty.

Premium alu­minum con­struc­tion

Built to last with high-grade, rugged ma­te­ri­als.

Anti-slip tech­nol­ogy

Dynamically pres­sure au­to­mat­i­cally grips the tire for ef­fi­cient, slip-free power trans­fer.

Easy in­stal­la­tion

Quick trans­for­ma­tion. Zero mod­i­fi­ca­tions to gears or brakes.

Efficient heat dis­si­pa­tion

Reduced risk of over­heat­ing.

Battery

Removable mod­u­lar bat­tery

Easy to charge and swap, of­fer­ing ul­ti­mate free­dom for your jour­ney.

100W USB-C® PD

2 hours fast charge

158 Wh

bat­tery ca­pac­ity

Flight-safe for carry on lug­gage (Requires air­line ap­proval pri­or­ity to fly­ing)

Compatibility

Universal de­sign, per­fect fit

ASUS Oxiis E250G1 works with a wide range of bike frame types, in­clud­ing city, road, gravel, and fold­ing bikes, as well as hy­brid or hard­tail moun­tain bikes.

Accommodates

Find your fit

To guar­an­tee op­ti­mal per­for­mance, seam­less in­stal­la­tion, and max­i­mum safety, please dou­ble-check that your bike’s spe­cific tire width, wheel size, and seat post mea­sure­ments fully meet our cri­te­ria be­fore your first setup.

Tire width

Supports tire widths up to 60 mm.

Tire size

Compatible with tire sizes from 16 to 29 inches, plus 700C.

Seat post

Fits 25.4 – 34.9 mm posts (spacers in­cluded).

Installation Guide

Easy in­stal­la­tion

No com­plex tools are needed to in­stall ASUS Oxiis E250G1.

App

ASUS Oxiis app

Three modes. One seam­less ex­pe­ri­ence.

Switch modes ef­fort­lessly us­ing the in­te­grated but­ton or ded­i­cated app.

Eco mode: Efficient sup­port for flat ter­rain and tail­winds.

Normal mode: Smooth, bal­anced power for every­day ad­ven­tures.

Sport mode: Instant boost for steep climbs and high-speed per­for­mance.

Spec

Product Specifications

Motor Power

250W (Rated) / 500W (Peak)

Range

50 km (31 miles) in eco mode

Battery

158.4 Wh / 36 V

Weight

3.7 kg (including bat­tery)

Dimensions

400 x 84 x 128 mm (L x W x H)

Max Speed

32 km/​h (Limited to 25 km/​h in spe­cific re­gions)

Charging Time

2 hours (100W PD Charger re­quired)

Waterproof Rating

IPX4

App Compatibility

Android & iOS

Get lo­cal ASUS Zenbook 14 avail­abil­ity alerts - and more from ASUS/ROG

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.