10 interesting stories served every morning and every evening.

If you’re a button, you have one job – Unsung

unsung.aresluna.org

One thing I was (and still am) wor­ried about when it comes to my re­cent big in­ter­ac­tive es­say is that by show­ing all these clas­sic desk­top ex­am­ples, the whole thing might ap­pear old-fash­ioned, rel­e­vant only to a by­gone era.

Yet, the chal­lenges it shows are uni­ver­sal. Here’s some­thing I just spot­ted. This is how you ro­tate an im­age on an iPhone and on a Nothing Phone:

It’s a pretty stan­dard con­trol — tap once to ro­tate coun­ter­clock­wise, tap a sec­ond time to do it again, etc. — with a help­ful tran­si­tion of the pho­to’s ori­en­ta­tion so that you don’t lose yours.

Now, I’m go­ing to ex­ag­ger­ate the prob­lem a bit and tap 90-degree ro­ta­tion quickly eight times. Eight times should re­sult in what en­gi­neers call a no op” — the im­age ro­tat­ing twice in full, and end­ing up where it started. That in­deed hap­pens on the iPhone:

But it’s a dif­fer­ent story on the Nothing Phone/​Android:

iPhone will re­mem­ber and buffer the taps, so that the sec­ond, pend­ing ro­ta­tion will hap­pen as soon as the first is done. The Nothing Phone but­ton gives you a tap con­fir­ma­tion via both hap­tics and sound, and then ig­nores the tap if a pre­vi­ous ro­ta­tion is still an­i­mat­ing.

Why does it mat­ter?

I of­ten keep think­ing about the frame­work of sit­u­a­tional dis­abil­ity, stat­ing that dis­abil­ity is not just some­thing that hap­pens to a few peo­ple and no one else. No, pretty much every­one will oc­ca­sion­ally en­counter a sit­u­a­tion that will make them ef­fec­tively dis­abled, and this is why ac­ces­si­bil­ity mat­ters much more than many of us as­sume:

I think sim­i­larly about ca­sual and non-ca­sual use. Photo-taking on phones is typ­i­cally ca­sual. Phone cam­eras are typ­i­cally very good at de­tect­ing the photo ori­en­ta­tion — but get con­fused when you’re point­ing down. Now, as an ex­am­ple, if you had to take pho­tos of a bunch of land­scape doc­u­ments, you might end up hav­ing to ro­tate dozens of pho­tos, one by one. And it would be so much more pre­dictable and pleas­ant if you could just tap the but­ton three times at any pace you wanted with­out think­ing, with­out pay­ing at­ten­tion, with­out get­ting your UI blocked by an an­i­ma­tion that no longer helps you.

This is, I sup­pose, situational power user-ness.” Given a long enough time­frame — or, in this case, a large enough pop­u­la­tion — even a ca­sual in­ter­face like phone photo edit­ing (or, GarageBand) will meet some­one who will have no choice but to treat it more se­ri­ously and ex­pect more from it.

By the way, buffer­ing the taps is not the only an­swer. You can also just stop/​​ac­cel­er­ate the an­i­ma­tion af­ter an in­ter­rupt­ing tap. But the rule is: never force the user to wait for the an­i­ma­tion to fin­ish.

Chat Control 1.0: EU Council forces messenger scans via fast-track

www.heise.de

The dis­pute over dig­i­tal let­ter se­crecy in the EU is reach­ing a new level of es­ca­la­tion shortly be­fore the sum­mer break. After ne­go­ti­a­tions on Chat Control 2.0 — i.e., the manda­tory, sus­pi­cion­less scan­ning of en­crypted com­mu­ni­ca­tion — stalled due to per­sis­tent re­sis­tance in the EU Parliament, the Council of Ministers is now push­ing for­ward with a le­gal ma­neu­ver.

The mem­ber states want to re­ac­ti­vate the tran­si­tional reg­u­la­tion for vol­un­tary mon­i­tor­ing of mes­sages by tech­nol­ogy groups, which ex­pired on April 3, in an ex­pe­dited pro­ce­dure. The Council adopted a cor­re­spond­ing po­si­tion for a new” reg­u­la­tion on Thursday via writ­ten pro­ce­dure to close a loom­ing le­gal loop­hole and in­crease pres­sure on MEPs.

The rea­son for the trick: Since the end of 2020, in­ter­net-based, num­ber-in­de­pen­dent com­mu­ni­ca­tion ser­vices such as mes­sen­ger apps, web­mail, and VoIP tele­phony have been sub­ject to the strict pro­vi­sions of the European E-Privacy Directive. This pro­tects the fun­da­men­tal right to con­fi­den­tial­ity of com­mu­ni­ca­tion and pro­hibits unau­tho­rized in­ter­cep­tion or eval­u­a­tion of con­tent and traf­fic data. To still al­low tech­nol­ogy providers to vol­un­tar­ily search pri­vate chats us­ing AI and hash match­ing for known abuse ma­te­r­ial or groom­ing pat­terns, the EU law­mak­ers cre­ated a tem­po­rary ex­emp­tion in 2021. This reg­u­la­tion, re­ferred to as Chat Control 1.0, ex­pired in the spring, as the Council and Parliament could not agree on an ex­ten­sion.

Child Protection and Letter Secrecy

For the Council, the ex­piry of the dead­line is an un­ten­able sit­u­a­tion. The providers’ vol­un­tary de­tec­tion mea­sures are an in­dis­pens­able tool for iden­ti­fy­ing af­fected chil­dren early, res­cu­ing vic­tims from abuse sit­u­a­tions, and curb­ing the un­con­trolled fur­ther dis­sem­i­na­tion of il­le­gal im­age and video ma­te­r­ial on­line. Furthermore, the pro­ce­dure makes an im­por­tant con­tri­bu­tion to on­line law en­force­ment, even though re­ports con­tinue to flow de­spite the ex­pired norm. The new reg­u­la­tion aims to pre­vent frag­men­ta­tion through na­tional uni­lat­eral ac­tions.

Critics, how­ever, see the cho­sen pro­ce­dure as an at­tempt to cir­cum­vent de­mo­c­ra­tic con­trol bod­ies and to sur­prise Parliament. Since an al­ready ex­pired reg­u­la­tion can­not sim­ply be ex­tended in for­mal terms, the EU gov­ern­ments are re­sort­ing to a trick: Instead of an ex­ten­sion, they have put for­ward a leg­isla­tive pro­posal that is largely iden­ti­cal in con­tent but dif­fer­ent in form.

Tactical Timing Before the Summer Break

The draft is to be put on Parliament’s agenda as early as Tuesday as part of an ur­gent pro­ce­dure — im­me­di­ately be­fore the start of the sum­mer break. Should the ple­nary ses­sion ap­prove the ac­cel­er­ated pro­ce­dure, a vote threat­ens on the last day of ses­sion be­fore the hol­i­days, when many MEPs have his­tor­i­cally al­ready de­parted. Compounding the is­sue, the pro­ce­dure is al­ready in its 2nd read­ing. At this stage, the Council’s po­si­tion can only be stopped or mod­i­fied by amend­ments if an ab­solute ma­jor­ity of the rep­re­sen­ta­tives vote against it. A hur­dle that, in prac­tice, is con­sid­ered al­most in­sur­mount­able shortly be­fore the sum­mer break.

Although the Council em­pha­sizes that the scans will be lim­ited to the ab­solutely nec­es­sary ex­tent and that no gen­eral, in­dis­crim­i­nate sur­veil­lance will take place, the in­tru­sion into the pri­vacy of all users re­mains sig­nif­i­cant. The reg­u­la­tion stip­u­lates that the processed con­tent and traf­fic data must be ir­rev­o­ca­bly deleted no later than twelve months af­ter de­tec­tion, un­less a con­crete sus­pi­cion is con­firmed. A per­ma­nent, long-term le­gal frame­work for abuse pre­ven­tion, mean­while, moves fur­ther into the dis­tance.

(kbe)

Don’t miss any news — fol­low us on Facebook, LinkedIn or Mastodon.

This ar­ti­cle was orig­i­nally pub­lished in

German.

It was trans­lated with tech­ni­cal as­sis­tance and ed­i­to­ri­ally re­viewed be­fore pub­li­ca­tion.

GPT-5.5 Codex reasoning-token clustering at 516/1034/1552 may be leading to degraded performance on complex tasks

github.com

Summary

I found an ag­gre­gate pat­tern in Codex to­ken_­count meta­data: gpt-5.5 re­sponses dis­pro­por­tion­ately land at ex­actly rea­son­ing_out­put_­to­kens = 516, with ad­di­tional fixed-bound­ary spikes around 1034 and 1552.

This ap­pears model-spe­cific and co­in­cides with lower over­all rea­son­ing-to­ken in­ten­sity, which may help ex­plain de­graded per­for­mance on com­plex/​high-stakes Codex tasks.

This is re­lated to #29353, which re­ported a task-level re­pro­duc­tion where gpt-5.5 runs end­ing at ex­actly 516 rea­son­ing to­kens re­turned the wrong an­swer. This is­sue adds ag­gre­gate ev­i­dence across a larger Feb-Jun win­dow.

I am not claim­ing this proves hid­den chain-of-thought trun­ca­tion. The nar­rower claim is that Codex teleme­try shows a GPT-5.5-specific fixed-to­ken clus­ter­ing anom­aly that looks con­sis­tent with thresh­olded rea­son­ing-bud­get be­hav­ior.

Environment

Product: Codex

Model most im­pli­cated: gpt-5.5

Data source: Codex to­ken_­count meta­data

Time win­dow an­a­lyzed: Feb 1-Jun 27, 2026 UTC

Related is­sue: gpt-5.5 xhigh some­times short-cir­cuits with rea­son­ing_out­put_­to­kens=516 and wrong fi­nal_an­swer in Codex Desktop #29353

Evidence

Model-level re­sult:

Monthly ex­act-516 clus­ter­ing in­creased sharply:

At the same time, over­all rea­son­ing-to­ken in­ten­sity de­creased:

Why this looks sus­pi­cious

The anom­aly is not sim­ply higher rea­son­ing-to­ken us­age over­all. Mean and P90 rea­son­ing-to­ken in­ten­sity fell from February-April to May-June, while ex­act-516 clus­ter­ing rose sharply.

The clus­ter­ing is also not evenly dis­trib­uted across mod­els. gpt-5.5 ac­counts for only 19.3% of re­sponses but 82.0% of ex­act-516 events. Its ex­act-516 / >=516 ra­tio is about 33.6x higher than the non-GPT-5.5 base­line.

The fixed val­ues are also no­table: 516, 1034, and 1552 look like re­peated thresh­old bound­aries rather than a nat­u­rally vary­ing rea­son­ing-to­ken dis­tri­b­u­tion.

Expected be­hav­ior

Reasoning-token counts for com­plex Codex tasks should vary nat­u­rally with task com­plex­ity and should not dis­pro­por­tion­ately clus­ter at ex­act fixed val­ues for one model fam­ily.

Actual be­hav­ior

gpt-5.5 re­sponses clus­ter heav­ily at ex­actly 516 rea­son­ing to­kens, with re­lated spikes around 1034 and 1552. This pat­tern is much weaker or ab­sent in sev­eral other mod­els.

Ask

Could the Codex team in­ves­ti­gate whether gpt-5.5 has a rea­son­ing-bud­get, rout­ing, trun­ca­tion, fall­back, or sched­uler be­hav­ior that causes re­sponses to ter­mi­nate around 516/1034/1552 rea­son­ing to­kens?

If this is ex­pected be­hav­ior, it would be use­ful to know whether ex­act 516 in­di­cates a nor­mal stop­ping point, a bud­get cap, a de­graded tier, or an­other in­ter­nal thresh­old.

Useful in­ter­nal val­i­da­tion checks:

Query to­ken_­count events with rea­son­ing_out­put_­to­kens by model.

Compare ex­act-value counts for 0, 516, 1034, and 1552.

Compute count(rea­son­ing_out­put_­to­kens = 516) / count(rea­son­ing_out­put_­to­kens >= 516) by model and day.

Compare gpt-5.5 against gpt-5.2, gpt-5.4, and Codex-specific vari­ants.

Replay matched com­plex tasks across GPT-5.2 and GPT-5.5 with qual­ity evals, es­pe­cially sep­a­rat­ing ex­act-516 re­sponses from longer-rea­son­ing re­sponses.

Changelog

ui.shadcn.com

July 2026 - Base UI as the Default

Starting to­day, Base UI is the de­fault com­po­nent li­brary in shadcn/​ui.

First, a bit of his­tory. When shadcn/​ui launched in January 2023, it was built on Radix. At the time, noth­ing else came close. Unstyled head­less com­po­nents, great APIs, great ac­ces­si­bil­ity, bat­tle-tested in mil­lions of apps.

Fast for­ward a few years and the same folks who built Radix are build­ing some­thing new: Base UI. They’ve done it once. Now they get to do it again, with every­thing they learned the first time.

Last year, Base UI tagged a beta and a lot of you asked if we are go­ing to re­place Radix with it. I said the worst thing you can do for your pro­duc­tion app is switch com­po­nent li­braries”. I meant it, and it still holds. So in­stead of switch­ing, we did the shadcn thing: we re­built every com­po­nent for Base UI, kept the same ab­strac­tion, and let you choose. December brought npx shadcn cre­ate with both li­braries. January brought full Base UI docs.

Then we watched what you did with it.

Why Now

Base UI is sta­ble. It’s at 1.6.0 with 6M+ weekly down­loads.

It keeps get­ting bet­ter. The team ships new and use­ful com­po­nents reg­u­larly.

We use it. Every new pro­ject we’ve started runs on Base UI.

You use it. Projects cre­ated on shadcn/​cre­ate now pick Base UI over Radix 2 to 1.

The com­mu­nity al­ready made the call. We’re mak­ing it of­fi­cial.

What’s Changed

New pro­jects de­fault to Base UI. Run npx shadcn init and Base UI is the de­fault pick.

shadcn/​cre­ate shows Base UI first.

The docs de­fault to Base UI. Component pages open on the Base UI tab. Radix docs are one click away.

What This Means for You

Radix is not be­ing dep­re­cated. We still sup­port it, and every up­date and new com­po­nent will ship for both li­braries (unless a com­po­nent only ex­ists in Base UI).

You do not need to mi­grate. Radix is a ma­ture, tested li­brary. We still run it in pro­duc­tion to­day and we’re not mi­grat­ing. If your app works, keep ship­ping.

Prefer Radix for new pro­jects? It’s one flag away:

If you have scripts or CI run­ning shadcn init non-in­ter­ac­tively and ex­pect­ing Radix, add -b radix to keep them on the same path.

Building a reg­istry? Ship a reg­istry:base con­fig if you want to pin a spe­cific li­brary. Items with­out one now init as Base UI.

Starting some­thing new? We rec­om­mend Base UI.

When You’re Ready to Migrate

You don’t need to mi­grate. But if you want to, we built a skill for it:

Then ask your cod­ing agent:

mi­grate ac­cor­dion to base-ui

It’s pro­gres­sive by de­fault: mi­grate one com­po­nent and its us­age at a time while your pro­ject stays green and ship­pable. Both li­braries co­ex­ist while you work. Stop halfway, ship, come back next week and it picks up where you left off. Or ask for the whole pro­ject in one go.

Why a skill and not a code­mod?

Because you own the code. You’ve added vari­ants, changed classes, threaded new props. A code­mod han­dles the com­po­nents you never touched and breaks on the ones you did.

So we shipped knowl­edge in­stead: every re­name, every prop change, every be­hav­ior dif­fer­ence, hand-checked against both li­braries. Your agent reads it, fig­ures out what you changed, and car­ries those changes over.

Mechanical things get fixed every­where (asChild is now ren­der). Behavior changes get flagged, never silently patched. You de­cide.

What a mi­gra­tion pro­duces

Every run leaves three things:

Working code. Typechecked and built be­fore it re­ports suc­cess.

A re­port per com­po­nent in .migration/ at your pro­ject root: what changed, what was left alone, and a short check­list of things to ver­ify by hand.

Clean git his­tory. One com­mit per com­po­nent, on a branch. Rollback is delet­ing the branch.

Here’s what a re­port looks like:

# ac­cor­dion

<!– date, strat­egy used, and the one-line ver­dict –>

## Changed

<!– every file touched, with what changed and why –>

## Left alone

<!– files that look re­lated but were in­ten­tion­ally not touched –>

## Behavior changes

<!– dif­fer­ences that com­pile fine but act dif­fer­ently. flagged, not patched –>

## Verify by hand

<!– a short check­list: open, click, tab through. takes a minute –>

No hid­den state. Progress lives in your files and git his­tory, so any agent, any ses­sion, any day picks up where the last one stopped.

It works with Claude Code, Cursor, or any agent that sup­ports skills. We tested it on real pro­jects: 60+ com­po­nents, 36 of them on Radix. A full mi­gra­tion ran in about 25 min­utes at roughly 10k to­kens per com­po­nent. Clean builds, cus­tomiza­tions in­tact.

June 2026 - Components for Chat Interfaces

Today, we’re re­leas­ing a new set of com­po­nents for build­ing chat in­ter­faces: MessageScroller, Message, Bubble, Attachment, and Marker.

This is the first phase of the chat com­po­nents work. We’re tak­ing it one piece at a time, reimag­in­ing the ab­strac­tion be­hind each part, and ship­ping them as shadcn/​ui com­po­nents you can copy, com­pose, and adapt to your prod­uct.

We are start­ing with the con­ver­sa­tion layer: scrolling, mes­sage rows, bub­bles, at­tach­ments, and mark­ers.

We asked our­selves: what makes a great stream­ing chat ex­pe­ri­ence? Then we ab­stracted the core rules into a set of prim­i­tives: MessageScroller.

MessageScroller is the scroll con­tainer for a con­ver­sa­tion. It han­dles the parts that are easy to get wrong: an­chored turns, streamed replies, saved thread re­store, prepended his­tory, jump-to-mes­sage, scroll con­trols, and vis­i­bil­ity track­ing.

MessageScroller owns that be­hav­ior with­out own­ing your mes­sages, AI state, trans­port, per­sis­tence, or model state. You bring the con­tent ren­derer.

The MessageScroller is also avail­able as an un­styled head­less com­po­nent in @shadcn/react.

Message, Bubble, Attachment, and Marker

The rest of the com­po­nents cover the every­day pieces you need around the scroller.

Message lays out a row in the con­ver­sa­tion with avatar, align­ment, header, con­tent, footer, and grouped mes­sages.

Bubble ren­ders the mes­sage sur­face, with vari­ants, align­ment, re­ac­tions, links, but­tons, and col­lapsi­ble con­tent.

Attachment ren­ders files and im­ages with me­dia, meta­data, up­load state, ac­tions, and a full-card trig­ger that keeps ac­tions sep­a­rately click­able.

Marker ren­ders sta­tus up­dates, sys­tem notes, bor­dered rows, and la­beled sep­a­ra­tors for things like stream­ing state, tool ac­tiv­ity, and date breaks.

They are in­ten­tion­ally small. Compose them to­gether for AI chats, sup­port in­boxes, team threads, group chats, and prod­uct-spe­cific con­ver­sa­tions.

We also added two new CSS util­i­ties for the de­tails that make chat in­ter­faces feel bet­ter.

scroll-fade adds scroll-aware edge fades to scroll con­tain­ers. Use it on MessageScroller, ScrollArea, at­tach­ment rows, and any long list where you want to hint at more con­tent with­out adding over­lays or scroll lis­ten­ers.

shim­mer adds a text shim­mer for live sta­tus. Use it for things like Thinking…”, Generating re­sponse…”, run­ning tools, and stream­ing mark­ers.

Both util­i­ties ship with shadcn/​tail­wind.css, so pro­jects ini­tial­ized with npx shadcn@lat­est init al­ready have them.

@shadcn/react

We also cre­ated @shadcn/react, a new pack­age for un­styled, head­less React com­po­nents.

The first prim­i­tive is @shadcn/react/message-scroller. The reg­istry com­po­nent wraps it with shadcn/​ui styles, but the scroll be­hav­ior lives in the pack­age: an­chor­ing, auto-fol­low, prepend preser­va­tion, scroll com­mands, and vis­i­bil­ity.

This lets us ship be­hav­ior with­out lock­ing it to a vi­sual style. You still get copy-and-paste com­po­nents that match your pro­ject, and the hard in­ter­ac­tion logic stays tested in one place.

Available now for Radix and Base UI.

AI Elements

This does not re­place AI Elements. You can keep us­ing AI Elements for AI in­ter­face com­po­nents and pat­terns. This re­lease is about bring­ing the core pieces of chat into shadcn/​ui, one com­po­nent at a time.

If you are al­ready us­ing a com­po­nent from AI Elements, you do not need to rewrite your app. Keep what works. Try the shadcn/​ui ver­sion when you want the newer ab­strac­tion, the up­dated styling, or sup­port across Radix and Base UI.

The goal is to make these pieces easy to adopt in­de­pen­dently. Replace one part, com­pose it with what you al­ready have, and keep build­ing.

View Components

June 2026 - GitHub Registries

You can now turn any pub­lic GitHub repos­i­tory into a reg­istry.

Add a reg­istry.json file at the root of the repos­i­tory, de­fine the items you want to dis­trib­ute, and users can in­stall them di­rectly from GitHub with the shadcn CLI.

For ex­am­ple, to in­stall the pro­ject-con­ven­tions item from the acme/​toolkit repos­i­tory:

GitHub reg­istries are source reg­istries. You do not need to run shadcn build, pub­lish gen­er­ated item JSON files or set up a reg­istry server. The CLI reads the root reg­istry.json, re­solves in­clude en­tries, finds the re­quested item and in­stalls the files de­clared by that item.

Distribute any­thing

Registry items are not lim­ited to com­po­nents. A GitHub reg­istry can dis­trib­ute com­po­nents, hooks, util­i­ties, de­sign to­kens, fea­ture kits, pro­ject con­ven­tions, agent in­struc­tions, test­ing setup, CI work­flows, re­lease work­flows, tem­plates, code­mods, mi­gra­tion kits and other pro­ject files.

For ex­am­ple, a repos­i­tory can ex­pose a pro­ject-con­ven­tions item that in­stalls shared docs, ed­i­tor set­tings and agent in­struc­tions:

{ $schema”: https://​ui.shadcn.com/​schema/​reg­istry.json, name”: acme-toolkit”, homepage”: https://​github.com/​acme/​toolkit, items”: [ { name”: project-conventions”, type”: registry:item”, files”: [ { path”: AGENTS.md”, type”: registry:file”, target”: ~/AGENTS.md” }, { path”: .editorconfig”, type”: registry:file”, target”: ~/.editorconfig” }, { path”: docs/conventions.md”, type”: registry:file”, target”: ~/docs/conventions.md” } ] } ] }

Commands

GitHub reg­istry ad­dresses work with the same com­mands as other reg­istry ad­dresses.

List items from a GitHub reg­istry:

Search items:

View an item:

Install an item:

See the GitHub Registries docs for the full guide.

May 2026 - shadcn eject

When we added sup­port for both Radix and Base UI, we needed a place for shared Tailwind util­i­ties that both li­braries de­pend on, e.g. cus­tom vari­ants like data-open: and data-closed: and util­i­ties like no-scroll­bar.

We also ran into a few bugs while work­ing on RTL sup­port that were eas­ier to fix in one shared place rather than du­pli­cat­ing across every com­po­nent.

So we cre­ated shadcn/​tail­wind.css. When you run init, it adds @import shadcn/tailwind.css” to your global CSS file. It works just like other CSS im­ports such as tw-an­i­mate-css: a small de­pen­dency that is tree-shaken in pro­duc­tion and re­solved at build time.

If you pre­fer not to de­pend on the shadcn pack­age for that CSS, we’ve added the shadcn eject com­mand. It in­lines shadcn/​tail­wind.css into your global CSS file and re­moves the shadcn de­pen­dency from your pro­ject.

Introduction to Compilers and Language Design

dthain.github.io

Prof. Douglas Thain at Notre Dame

This is a free on­line text­book: you are wel­come to ac­cess the chap­ter PDFs di­rectly be­low. If you pre­fer to hold a real book, you can also pur­chase a hard­cover or pa­per­back be­low. The text­book and ma­te­ri­als have been de­vel­oped by Prof. Douglas Thain as part of the CSE 40243 com­pil­ers class at the University of Notre Dame. Join our mail­ing list to re­ceive oc­ca­sional an­nounce­ments of new edi­tions and other up­dates.

A com­piler trans­lates a pro­gram writ­ten in a high level lan­guage into a pro­gram writ­ten in a lower level lan­guage. For stu­dents of com­puter sci­ence, build­ing a com­piler from scratch is a rite of pas­sage: a chal­leng­ing and fun pro­ject that of­fers in­sight into many dif­fer­ent as­pects of com­puter sci­ence, some deeply the­o­ret­i­cal, and oth­ers highly prac­ti­cal. This book of­fers a one se­mes­ter in­tro­duc­tion into com­piler con­struc­tion, en­abling the reader to build a sim­ple com­piler that ac­cepts a C-like lan­guage and trans­lates it into work­ing X86 or ARM as­sem­bly lan­guage. It is most suit­able for un­der­grad­u­ate stu­dents who have some ex­pe­ri­ence pro­gram­ming in C, and have taken courses in data struc­tures and com­puter ar­chi­tec­ture.

A com­piler trans­lates a pro­gram writ­ten in a high level lan­guage into a pro­gram writ­ten in a lower level lan­guage. For stu­dents of com­puter sci­ence, build­ing a com­piler from scratch is a rite of pas­sage: a chal­leng­ing and fun pro­ject that of­fers in­sight into many dif­fer­ent as­pects of com­puter sci­ence, some deeply the­o­ret­i­cal, and oth­ers highly prac­ti­cal. This book of­fers a one se­mes­ter in­tro­duc­tion into com­piler con­struc­tion, en­abling the reader to build a sim­ple com­piler that ac­cepts a C-like lan­guage and trans­lates it into work­ing X86 or ARM as­sem­bly lan­guage. It is most suit­able for un­der­grad­u­ate stu­dents who have some ex­pe­ri­ence pro­gram­ming in C, and have taken courses in data struc­tures and com­puter ar­chi­tec­ture.

Introduction to Compilers and Language Design, 2nd Edition

The au­thor grants per­mis­sion to down­load, print, and use these PDFs for per­sonal and aca­d­e­mic use. Commercial print­ing or dis­tri­b­u­tion is pro­hib­ited. Instead of copy­ing PDFs lo­cally, please point stu­dents to this page (compilerbook.org) so that they can ac­cess the lat­est ver­sion.

The au­thor grants per­mis­sion to down­load, print, and use these PDFs for per­sonal and aca­d­e­mic use. Commercial print­ing or dis­tri­b­u­tion is pro­hib­ited. Instead of copy­ing PDFs lo­cally, please point stu­dents to this page (compilerbook.org) so that they can ac­cess the lat­est ver­sion.

Code Resources. The com­piler­book-ex­am­ples github repos­i­tory con­tains ad­di­tional re­sources that cor­re­spond to the book, in­clud­ing sev­eral scan­ners and parsers, a starter code struc­ture for the pro­ject com­piler, and sam­ple test cases for each stage of the scan­ner, parser, type­checker, and code gen­er­a­tor.

Errata. Found a typo or mis­take? Please send an email to the au­thor `dthain@nd.edu` with the ti­tle Compiler Book Errata” and I’ll be happy to cor­rect it and ac­knowl­edge you in the next edi­tion.

It's not about physical vs digital games, it's about ownership

popcar.bearblog.dev

05 Jul, 2026

A few days ago, PlayStation an­nounced that they’ll stop pro­duc­ing disks for new games start­ing from January 2028, con­firm­ing what we al­ready felt was go­ing to hap­pen: con­soles are go­ing fully dig­i­tal, and the disk drive will cease to ex­ist.

I’ve seen a lot of great dis­cus­sions on the in­ter­net about this, but I can’t help but feel like peo­ple are mad about the wrong thing, or com­pletely mis­un­der­stand why this is an is­sue. They have the right idea, get­ting rid of disks is bad for every­one, but it’s not about the disk and putting your games on the shelf… it’s about Sony’s at­tempt to com­pletely kill own­er­ship. People keep com­par­ing this to PC get­ting rid of disk dri­ves, but these two sce­nar­ios are not com­pa­ra­ble at all. I’ll get to that later.

Ownership as in the abil­ity to trade

The biggest thing about own­ing some­thing is the abil­ity to trade it with who­ever you’d like. When I was younger, I used to con­stantly trade PS3 and PS4 games with my friends. Whether it was to loan them a copy of the Jak & Daxter tril­ogy or to sell a game to some­one I know, pass­ing around con­sole games is prac­ti­cally tra­di­tion at this point.

But com­pa­nies have al­ways been vo­cal about how much they de­spise used games. How could some­one pos­si­bly buy God of War for $20 from their friend in­stead of buy­ing it for $40 from the store?! Every dime spent on used games is a dime lost for the com­pany, right?!

The de­ci­sion to kill disks is­n’t some knee­jerk re­ac­tion to any­thing, it’s some­thing con­sole own­ers have been slowly build­ing up to for the last ~15 years. The en­tire rea­son Xbox One flopped so hard and be­came a laugh­ing stock was, among other things, be­cause they tried to kill the abil­ity to re-sell the disk you paid for, and forc­ing your con­sole to al­ways be on­line to ver­ify your games. Apparently, they were just too early to try this.

This also is­n’t spe­cific to video games. It’s some­thing lit­er­ally every in­dus­try has been ob­sessed with to max­i­mize prof­its. If any­thing, video games were late com­pared to some­thing like the mu­sic in­dus­try, where not own­ing your mu­sic has been the sta­tus quo for a while now!

And now that we’re catch­ing up, the con­cept of giving a game to some­one else” will cease to ex­ist. The next gen­er­a­tion of young games will just ac­cept buy­ing a dig­i­tal game off the store as just how games work now. You’ll be there ex­plain­ing to the young’uns how it used to be. How giv­ing your fa­vorite game to your best friend in school was the nor­mal thing that they will never get to ex­pe­ri­ence.

Sure, you could ar­gue that disks on mod­ern con­soles are prac­ti­cally just li­censes these days, but you could still pass that own­er­ship to some­one else, with­out it be­ing tied down to one spe­cific ac­count or con­sole.

Ownership as in preser­va­tion

Just a few days be­fore this an­nounce­ment, peo­ple in the gam­ing space were cel­e­brat­ing the re­lease of Omnidrive, a mod for op­ti­cal dri­ves that lets you eas­ily rip blu rays. That in­cludes, you guessed it, PS3/PS4/PS5 games (though they’re en­crypted, but that’s an is­sue that can be solved later).

Game preser­va­tion and em­u­la­tion has al­ways been an­other arch neme­sis of game com­pa­nies. They hate that you can ever play a game with­out be­ing tied to their ser­vice or con­sole, or even with­out tak­ing per­mis­sion from them! A lot of games have been de-listed for var­i­ous rea­sons, many of them le­gal, but most have been straight up be­cause the com­pany never both­ered to port them to mod­ern con­soles.

Most retro games would be lost me­dia if not for peo­ple pre­serv­ing them. This is a big­ger deal than peo­ple give it credit for. Imagine liv­ing in a world where most games be­fore 2014 have just been com­pletely lost for­ever. SNES games I loved. PlayStation 2 clas­sics. Even games that aren’t that old! PlayStation an­nounced that the PS3 and Vita stores will close next month, and there are tons of games there that you bet no com­pany will want to pre­serve.

Last year, I bought a Playstation Vita and re­ally en­joyed play­ing the games on it. You bet those games and ports will never be archived by Sony. Even PS3 games I loved like LittleBigPlanet and Asura’s Wrath and Infamous have never been ported, and are on the verge of be­ing lost for­ever if not for peo­ple spend­ing time and ef­fort grab­bing them via dump­ing disks or hacked con­soles!

My point: What hap­pens if the PlayStation 6 comes out and has no disk drive and has in­cred­i­bly strong se­cu­rity that makes dump­ing games im­pos­si­ble? Games could be lost for real this time. When PlayStation ever de­cides to make games stream­ing-only (more on that later), or de­cides to de-list a game, or de­cides to axe the PS6 servers? It would be a dis­as­ter. Imagine work­ing on a game for many years then be­ing told a cou­ple of years later that it does­n’t ex­ist any­more. Not own­ing your game means they can never be pre­served by the con­sumer.

Stop Killing Games is al­ready fight­ing for con­sumer rights to keep games playable af­ter be­ing shut down, but no­body own­ing their games means that no­body can fight back to keep the games they bought, even through more ex­treme means.

Ownership as in hav­ing op­tions

Even if you buy your games 100% dig­i­tally on con­soles, it’s still very com­fort­ing to know that phys­i­cal games are an op­tion should you ever want one. It’s good that you’re not to­tally trapped into buy­ing games from the PS Store with prices only dic­tated by Sony.

You could al­ways drive to a lo­cal store and buy a game that might be on sale. You have the op­tion of buy­ing a game used from some­one on the in­ter­net. You could al­ways go to that same store and trade your game for a small cash­back.

Hell, where I live, the most pop­u­lar game store has a rental sys­tem where you can rent a game and pay for each week you keep it. Some peo­ple still use that be­cause pur­chas­ing a game out­right is out of their price range. That too won’t ex­ist any­more. Your many op­tions are now lim­ited to one, whether you like it or not.

But PC is all dig­i­tal! They ac­cepted it with no is­sues!

Everyone who brings up the fact that PC has been dig­i­tal and how that turned out fine does­n’t re­ally un­der­stand what’s go­ing on.

Yes, PC is dig­i­tal, but there’s a mas­sive dif­fer­ence: we can still own our games on PC. You’re not trapped to one ecosys­tem or one dig­i­tal store, you have dozens of op­tions. Most im­por­tantly, there are tons of DRM-Free games and stores out there. Websites like GOG, Itch.io, etc. let you down­load and play games with­out be­ing tied to any ser­vice.

This means you can’t have your li­cense re­voked or worry about the game com­pletely dis­ap­pear­ing for any rea­son. You can back up the game, mod­ify it, play it on dif­fer­ent sys­tems, and gen­er­ally know that 10 years from now you can prob­a­bly get it to work and play it again.

But most peo­ple use Steam any­way, I hear you say. That’s true, but you can still own your games on Steam. Very eas­ily, in fact! Steam does­n’t ap­ply a hard DRM for games on their plat­form, you can by­pass it and play your games of­fline with­out the launcher if you know what you’re do­ing.

Because PC is an open plat­form, peo­ple have fig­ured this out and will con­tinue to fig­ure out by­passes in case things go south (which they haven’t so far, thank­fully). All you need is to get some­thing called the Goldberg Emulator, re­place the SteamAPI file, then add an ap­p_id.txt file. Done. You can play any Steam game of­fline (assuming the pub­lisher did­n’t put their own DRM like Denuvo). I’ve done this a lot, and it is le­gal as long as you don’t share your game to other peo­ple.

So no, plat­forms like PC los­ing out on phys­i­cal games is not com­pa­ra­ble to con­soles los­ing phys­i­cal games. PC gamers can still own and pre­serve their games through dig­i­tal means, and hon­estly, I think dig­i­tal is way bet­ter than hav­ing to use a disk. For con­sole gamers, you just lost your only way to ac­tu­ally own your games. Now you’re get­ting trapped in a walled gar­den with no other choice, un­less you aban­don the con­sole for­ever, which is a tough pill to swal­low for the av­er­age per­son be­cause they don’t want to lose all their games and friends they have on the plat­form to move to a new thing they don’t know or un­der­stand.

But this does­n’t af­fect me! I’m al­ready on PC or am buy­ing con­sole games 100% dig­i­tally!”

It will! That’s like say­ing Spotify get­ting pop­u­lar won’t af­fect you, be­cause your fa­vorite band is still putting out CDs you can buy. But now, so many songs are trapped be­hind a sub­scrip­tion ser­vice with no way to prop­erly own any of them. The in­dus­try mov­ing in a spe­cific di­rec­tion will af­fect you at some point. The movie in­dus­try is the same way, blu-rays will al­ways ex­ist”, but now so much con­tent is trapped be­hind sub­scrip­tion ser­vices.

In this case, the next step for con­sole mak­ers is ob­vi­ous. Everyone wants to be Netflix.

Everyone wants to be Netflix

Look, every­one! Netflix is rak­ing in bil­lions of dol­lars… Just by of­fer­ing a stream­ing ser­vice? People are will­ing to pay every sin­gle month for years at a time? And they can keep los­ing con­tent and peo­ple will stay sub­scribed? And they can keep rais­ing prices and peo­ple will con­tinue to sub­scribe? And every­one has to own an ac­count that can’t be shared to bor­row con­tent they can never own and is­n’t avail­able any­where else?!?!??! The line will al­ways go up!! Wow!!!! I need to be like Netflix!!!!

Look, every­one! Netflix is rak­ing in bil­lions of dol­lars… Just by of­fer­ing a stream­ing ser­vice? People are will­ing to pay every sin­gle month for years at a time? And they can keep los­ing con­tent and peo­ple will stay sub­scribed? And they can keep rais­ing prices and peo­ple will con­tinue to sub­scribe? And every­one has to own an ac­count that can’t be shared to bor­row con­tent they can never own and is­n’t avail­able any­where else?!?!??! The line will al­ways go up!! Wow!!!! I need to be like Netflix!!!!

- Every tech busi­ness ex­ec­u­tive in the last ~15 years

Okay, maybe it’s less about Netflix the com­pany and more about the gen­eral sen­ti­ment. Every in­dus­try is mov­ing to this holy grail of ex­tract­ing money from peo­ple, a ser­vice where they keep pay­ing you for the rest of their life (or un­til they get bored of your plat­form, I guess).

Xbox is crash­ing be­cause it at­tempted this, but my per­sonal the­ory is the same as the Xbox One gen­er­a­tion: they were just a lit­tle too early. Xbox Game Pass is re­port­edly do­ing well, but it’s not the sta­tus quo changer they prob­a­bly wanted it to be. PS and Xbox al­ready pro­vided yearly sub­scrip­tions to play mul­ti­player and un­lock more ad­vanced fea­tures, but damn it, that’s not enough. Because they still own their games (or had the op­tion to) and did­n’t fully de­pend on the ser­vice.

So the next log­i­cal step is pretty damn sim­ple. PlayStation and Xbox want to be Netflix. They want to make pur­chas­ing games hard or overly ex­pen­sive that the de facto way to play a game will be through a ser­vice. I’m will­ing to bet that in the next decade, Sony or Xbox will start mak­ing their games playable EXCLUSIVELY through a sub­scrip­tion, with no way to buy it. Of course, you’ll need a con­stant in­ter­net con­nec­tion too. Maybe with a scan of your face to con­firm you can never lend your ac­count to a friend. Uhh, I meant a face scan to pro­tect chil­dren from ever play­ing a 16+ game! It’s all about pro­tect­ing the chil­dren, of course.

And that af­fects you, too, smug PC users. When one com­pany gets away with it, other com­pa­nies will catch on and start fol­low­ing the leader. It’s al­ready get­ting nor­mal­ized with Game Pass on PC, but it’s just not big enough yet that they can start build­ing a walled gar­den and trap­ping peo­ple in yet. If it were pop­u­lar enough that they can get away with it, I’m will­ing to bet the next Elder Scrolls would be Game Pass ex­clu­sive.

So now what?

That’s not to say that gam­ing is doomed or what­ever. We will al­ways still have op­tions, and I doubt this sub­scrip­tion-only fu­ture is com­ing soon… But we’re get­ting there.

Even when we do reach the con­clu­sion, DRM-free stores will still ex­ist be­cause enough peo­ple care. Cool in­die de­vel­op­ers will still make awe­some games that won’t be tied down to one plat­form or ser­vice. The games in­dus­try is too var­ied and in­die-friendly that there is­n’t a huge risk of the in­dus­try be­ing to­tally mo­nop­o­lized by large com­pa­nies (looking at you, movie in­dus­try).

But if you care about these things (you clearly do since you read this far), please sup­port the cre­ators that are fight­ing against this fu­ture. Buy DRM-free stuff. Donate to an or­ga­ni­za­tion that pre­serves games & game-re­lated con­tent. Donate to em­u­la­tor de­vel­op­ers. Support your friendly neigh­bour­hood in­die devs. Make some noise on­line. We don’t want phys­i­cal me­dia, we want dig­i­tal own­er­ship rights! Don’t con­fuse the ar­gu­ment!

All of this stuff will make a dif­fer­ence, even if it does­n’t feel like it. So keep at it.

#gaming

#opinion

#tech

Scientists reverse brain aging, with a nasal spray – Texas A&M Stories

stories.tamu.edu

New ther­apy is turn­ing back the clock in ag­ing brains, heal­ing in­flam­ma­tion, restor­ing mem­ory and re­shap­ing the fu­ture of brain age-re­lated ther­a­pies

Credit: Getty Images

Picture this: your brain is a high-per­for­mance en­gine. Over decades, it does­n’t just wear down, it also starts to run hot.

Tiny fires” of in­flam­ma­tion smol­der deep within the brain’s mem­ory cen­ter, cre­at­ing a per­sis­tent brain fog that makes it harder to think, form new mem­o­ries or even adapt to new en­vi­ron­ments, all the while in­creas­ing the risk to dis­or­ders like Alzheimer’s dis­ease.

Scientists call this slow burn neuroinflammaging,” and for decades it was thought to be the in­evitable price of grow­ing older.

Until now.

A land­mark study from re­searchers at the Texas A&M University Naresh K. Vashisht College of Medicine sug­gests the in­flam­ma­tory tide re­spon­si­ble for brain ag­ing and brain fog might ac­tu­ally be re­versible. And the so­lu­tion does­n’t in­volve brain surgery, but a sim­ple nasal spray.

Led by Dr. Ashok Shetty, uni­ver­sity dis­tin­guished pro­fes­sor and as­so­ci­ate di­rec­tor of the Institute for Regenerative Medicine, along with se­nior re­search sci­en­tists Dr. Madhu Leelavathi Narayana and Dr. Maheedhar Kodali, the team de­vel­oped a nasal spray that, with just two doses, dra­mat­i­cally re­duced brain in­flam­ma­tion, re­stored the brain’s cel­lu­lar power plants and sig­nif­i­cantly im­proved mem­ory.

The most sur­pris­ing part? It all hap­pened within weeks and lasted for months.

The find­ings, pub­lished in the Journal of Extracellular Vesicles, could re­shape the fu­ture of neu­rode­gen­er­a­tive ther­a­pies and may even change how sci­en­tists think about brain ag­ing it­self.

Brain fog to brain fo­cus, the fu­ture of cog­ni­tive ther­apy

The im­pli­ca­tions of this re­search could be noth­ing short of rev­o­lu­tion­ary.

As we de­velop and scale this ther­apy, a sim­ple, two-dose nasal spray could one day re­place in­va­sive, risky pro­ce­dures or maybe even months of med­ica­tion,” Shetty said.

The so­ci­etal im­pact could be just as pro­found. In the United States alone, new de­men­tia cases are pro­jected to dou­ble over the next four decades, from about 514,000 in 2020 to about 1 mil­lion in 2060.

The trend sig­nals a press­ing need for poli­cies and in­no­v­a­tive in­ter­ven­tions that can min­i­mize both the risk and sever­ity of neu­rode­gen­er­a­tive dis­or­ders like de­men­tia,” Shetty said.

The study also hints at broad ap­plic­a­bil­ity, work­ing equally ef­fec­tively across both gen­ders — a rare out­come in bio­med­ical re­search.

It’s uni­ver­sal,” Shetty said. Treatment out­comes were con­sis­tent and sim­i­lar across both sexes.”

One day, the ap­proach could even help stroke sur­vivors re­build lost brain func­tion, or slow — even re­verse — the ef­fects of cog­ni­tive ag­ing in hu­mans.

Our ap­proach re­de­fines what it means to grow old,” Shetty said. We’re aim­ing for suc­cess­ful brain ag­ing: keep­ing peo­ple en­gaged, alert and con­nected. Not just liv­ing longer, but liv­ing smarter and health­ier,” Shetty said.

Rewiring the brain from the in­side out

At the heart of this ground­break­ing de­vel­op­ment are mil­lions of mi­cro­scopic bi­o­log­i­cal parcels known as ex­tra­cel­lu­lar vesi­cles (EVs). They act like de­liv­ery ve­hi­cles, car­ry­ing pow­er­ful ge­netic cargo called mi­croR­NAs.

MicroRNAs act like mas­ter reg­u­la­tors,” Narayana said. They help mod­u­late and reg­u­late many gene and sig­nal­ing path­ways in the brain.”

But the de­liv­ery route is just as im­por­tant as the cargo.

Packed into a nasal spray, the tiny EVs by­pass the brain’s pro­tec­tive shield and travel di­rectly into brain tis­sue, where they are ab­sorbed.

In Shetty’s lab, re­searchers de­velop an in­no­v­a­tive nasal spray tar­get­ing brain ag­ing.

Credit: Texas A&M University Division of Marketing and Communications

The mode of de­liv­ery is one of the most ex­cit­ing as­pects of our ap­proach,” Kodali said. Intranasal de­liv­ery al­lows us to reach, and treat, the brain di­rectly with­out in­va­sive pro­ce­dures.”

Once ab­sorbed into the brain’s res­i­dent im­mune cells, the mi­croR­NAs sup­press sys­tems, like NLRP3 in­flam­ma­some and the cGAS–STING sig­nal­ing path­ways, known to drive chronic in­flam­ma­tion in ag­ing brains.

At a cel­lu­lar level, the treat­ment recharged neu­ronal mi­to­chon­dria, or the power plants that live in­side the brain’s cells.

By recharg­ing these cel­lu­lar power plants, the ther­apy did­n’t just clear brain fog, it phys­i­cally im­proved the brain’s abil­ity to process and store in­for­ma­tion.

We are giv­ing neu­rons their spark back by re­duc­ing ox­ida­tive stress and re­ac­ti­vat­ing the brain’s mi­to­chon­dria,” Narayana said.

Behavioral tests con­firmed the bi­ol­ogy. Models treated with the nasal spray showed re­mark­able im­prove­ments in not only rec­og­niz­ing fa­mil­iar ob­jects but also de­tect­ing new ob­jects and changes in their en­vi­ron­ment, a sharp con­trast to the con­trol.

We are see­ing the brain’s own re­pair sys­tems switch on, heal­ing in­flam­ma­tion and restor­ing it­self,” Shetty said.

While fur­ther re­search is needed, Shetty and his team have al­ready filed a U.S. patent for the ther­apy, mark­ing a mile­stone in what could be­come a break­through for brain ag­ing treat­ments.

Behind the break­through

Breakthroughs like the one led by Shetty high­light Texas A&M as a re­search pow­er­house, where na­tional and global re­search pri­or­i­ties help shape the next gen­er­a­tion of in­no­v­a­tive so­lu­tions.

We aren’t just try­ing to un­der­stand the bi­o­log­i­cal mech­a­nisms, we are trans­lat­ing and de­vel­op­ing our find­ings into real-world ther­a­pies that could make a dif­fer­ence,” Shetty said.

With sup­port from the NIA, dis­cov­er­ies like Shetty’s high­light Texas A&M’s role as a leader in re­search, where global and na­tional pri­or­i­ties in­spire the next wave of in­no­va­tion.

Credit: Texas A&M University Naresh K. Vashisht College of Medicine

Backed by the National Institute on Aging (NIA), the Texas A&M team pooled col­lab­o­ra­tive knowl­edge, ex­per­tise and re­sources to turn a sim­ple nasal spray into a ther­apy with the po­ten­tial to re­frame how sci­en­tists think about brain ag­ing.

Our part­ner­ship with the NIA is very im­por­tant,” Shetty said. This kind of work re­quires re­sources and the right peo­ple to tackle prob­lems and de­velop so­lu­tions that could change lives.”

Ultimately, while the brain’s en­gine may sput­ter with age, sci­en­tists are now learn­ing how to reignite it, spark­ing a new era of cog­ni­tive health and show­ing that the clock on brain ag­ing might not just be paused, it can be turned back.

More in­for­ma­tion: Intranasal Human NSC‑Derived EVs Therapy Can Restrain Inflammatory Microglial Transcriptome, and NLRP3 and cGAS‑STING Signalling, in Aged Hippocampus, Journal of Extracellular Vesicles 15(2): e70232 (2026).

DOI: 10.1002/jev2.70232

Journal in­for­ma­tion: Journal of Extracellular Vesicles

Sucuri WebSite Firewall - Access Denied

www.mbl.edu

If you are the site owner (or you man­age this site), please whitelist your IP or if you think this block is an er­ror please open a sup­port ticket and make sure to in­clude the block de­tails (displayed in the box be­low), so we can as­sist you in trou­bleshoot­ing the is­sue.

Block de­tails:

Cannabis Users Face Substantially Higher Risk of Heart Attack - American College of Cardiology

www.acc.org

Contact: Nicole Napoli, nnapoli@acc.org,

WASHINGTON (Mar 18, 2025) -

Marijuana is now le­gal in many places, but is it safe? Two new stud­ies add to mount­ing ev­i­dence that peo­ple who use cannabis are more likely to suf­fer a heart at­tack than peo­ple who do not use the drug, even among younger and oth­er­wise healthy adults. The find­ings are from a ret­ro­spec­tive study of over 4.6 mil­lion peo­ple pub­lished in JACC Advances and a meta-analy­sis of 12 pre­vi­ously pub­lished stud­ies be­ing pre­sented at the American College of Cardiology’s Annual Scientific Session (ACC.25).

Marijuana use has risen in the United States, es­pe­cially in states where it is le­gal to buy, sell and use the drug recre­ation­ally. In the ret­ro­spec­tive study, re­searchers found that cannabis users younger than age 50 were over six times as likely to suf­fer a heart at­tack com­pared to non-users. The meta-analy­sis, which is the largest pooled study to date ex­am­in­ing heart at­tacks and cannabis use, showed a 50% in­creased risk among those who used the drug.

Asking about cannabis use should be part of clin­i­cians’ workup to un­der­stand pa­tients’ over­all car­dio­vas­cu­lar risk, sim­i­lar to ask­ing about smok­ing cig­a­rettes,” said Ibrahim Kamel, MD, clin­i­cal in­struc­tor at the Boston University Chobanian & Avedisian School of Medicine and in­ter­nal med­i­cine res­i­dent at St. Elizabeth Medical Center in Boston and the study’s lead au­thor. At a pol­icy level, a fair warn­ing should be made so that the peo­ple who are con­sum­ing cannabis know that there are risks.”

Kamel and his team con­ducted the ret­ro­spec­tive study us­ing data from TriNetX, a global health re­search net­work that pro­vides ac­cess to elec­tronic med­ical records. Their find­ings in­di­cate that over an av­er­age fol­low-up of over three years, cannabis users had more than a six­fold in­creased risk of heart at­tack, four­fold in­creased risk of is­chemic stroke, twofold in­creased risk of heart fail­ure and three­fold in­creased risk of car­dio­vas­cu­lar death, heart at­tack or stroke. All study par­tic­i­pants were younger than age 50 and free of sig­nif­i­cant car­dio­vas­cu­lar co­mor­bidi­ties at base­line, with blood pres­sure and low-den­sity lipopro­tein (LDL) cho­les­terol lev­els within a healthy range and no di­a­betes, to­bacco use or prior coro­nary artery dis­ease.

For the meta-analy­sis, the re­searchers pooled data from 12 pre­vi­ously pub­lished re­search stud­ies that col­lec­tively in­cluded over 75 mil­lion peo­ple. The stud­ies were rated as be­ing of mod­er­ate to good qual­ity in terms of method­ol­ogy. Of the 12 stud­ies, 10 were con­ducted in the United States, one in Canada and one in India. Some of the stud­ies did not in­clude in­for­ma­tion about par­tic­i­pants’ ages, but the av­er­age age was 41 years among those that did, sug­gest­ing that the pooled sam­ple re­flected a rel­a­tively young pop­u­la­tion.

Taken in­di­vid­u­ally, seven of the stud­ies found a sig­nif­i­cant pos­i­tive as­so­ci­a­tion be­tween cannabis use and heart at­tack in­ci­dence, while four showed no sig­nif­i­cant dif­fer­ence and one showed a slightly neg­a­tive as­so­ci­a­tion. When the re­searchers pooled the data from all stud­ies and an­a­lyzed it to­gether, they found a sig­nif­i­cant pos­i­tive as­so­ci­a­tion, with ac­tive cannabis users be­ing 1.5 times as likely to suf­fer a heart at­tack com­pared with those who aren’t cur­rent users.

Cannabis use and heart at­tack in­ci­dence was as­sessed in a sim­i­lar man­ner across the dif­fer­ent stud­ies. However, due to in­con­sis­ten­cies in the data avail­able from each study, re­searchers were un­able to ac­count for sev­eral po­ten­tial con­found­ing fac­tors in­clud­ing the du­ra­tion and amount of cannabis use or the use of to­bacco or other drugs.

We should have some cau­tion in in­ter­pret­ing the find­ings in that cannabis con­sump­tion is usu­ally as­so­ci­ated with other sub­stances such as co­caine or other il­licit drugs that are not ac­counted for,” Kamel said. Patients should be forth­com­ing with their doc­tors and re­mem­ber that we are their num­ber one ad­vo­cate and hav­ing the full story mat­ters.”

While the mech­a­nisms through which mar­i­juana or its com­po­nents may im­pact the car­dio­vas­cu­lar sys­tem are not fully un­der­stood, the re­searchers hy­poth­e­size that it can af­fect heart rhythm reg­u­la­tion, heighten oxy­gen de­mand in the heart mus­cle and con­tribute to en­dothe­lial dys­func­tion, which makes it harder for the blood ves­sels to re­lax and ex­pand, and can in­ter­rupt blood flow. One of the stud­ies in­cluded in the meta-analy­sis found that the risk of heart at­tack peaked about one hour af­ter mar­i­juana con­sump­tion.

Since both stud­ies were lim­ited by their ret­ro­spec­tive na­ture and the meta-analy­sis was lim­ited by the chal­lenges in­her­ent in pool­ing data from mul­ti­ple stud­ies, re­searchers said that ad­di­tional prospec­tive stud­ies would help to con­firm the find­ings and de­ter­mine which groups may face the high­est risk.

A pre­vi­ous study pre­sented at the American College of Cardiology’s Annual Scientific Session in 2023 found that daily mar­i­juana use was as­so­ci­ated with an in­creased risk of de­vel­op­ing coro­nary artery dis­ease.

The ret­ro­spec­tive analy­sis will si­mul­ta­ne­ously pub­lish in JACC Advances.

Kamel will pre­sent the study, Risk of Myocardial Infarction in Cannabis Users: A Systematic Review and Meta-Analysis,” on Saturday, March 29, 2025, at 2:00 p.m. CT / 19:00 UTC in South Hall.

ACC.25 will take place March 29 – 31, 2025, in Chicago, bring­ing to­gether car­di­ol­o­gists and car­dio­vas­cu­lar spe­cial­ists from around the world to share the newest dis­cov­er­ies in treat­ment and pre­ven­tion. Follow @ACCinTouch, @ACCMediaCenter and #ACC25 for the lat­est news from the meet­ing.

The American College of Cardiology (ACC) is the global leader in trans­form­ing car­dio­vas­cu­lar care and im­prov­ing heart health for all. As the pre­em­i­nent source of pro­fes­sional med­ical ed­u­ca­tion for the en­tire car­dio­vas­cu­lar care team since 1949, ACC cre­den­tials car­dio­vas­cu­lar pro­fes­sion­als in over 140 coun­tries who meet strin­gent qual­i­fi­ca­tions and leads in the for­ma­tion of health pol­icy, stan­dards and guide­lines. Through its world-renowned fam­ily of JACC Journals, NCDR reg­istries, ACC Accreditation Services, global net­work of Member Sections, CardioSmart pa­tient re­sources and more, the College is com­mit­ted to en­sur­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 ACC.org.

###

< Back to Listings

The Future of Flipper Zero Development

blog.flipper.net

We’ve seen the strong re­ac­tion from the com­mu­nity over the idea that we’ve stopped de­vel­op­ing the Flipper Zero firmware. We want to ad­dress this and let you know that we’ve heard all your feed­back and have de­cided to re­think our ap­proach to main­tain­ing the pro­ject and en­gag­ing with the com­mu­nity.

TL;DR: We’ve al­lo­cated re­sources to main­tain Flipper Zero firmware and sup­port com­mu­nity con­tri­bu­tions. From now on, com­mu­nity re­quests and con­tri­bu­tions will be re­viewed un­der new rules: vot­ing for fea­ture re­quests in GitHub Discussions, clearer pull re­quest guide­lines, and manda­tory in­te­gra­tion test­ing.

How it all started — Kickstarter 2020

When Flipper Zero launched on Kickstarter, we were over­whelmed by the com­mu­ni­ty’s sup­port. That sup­port came with a re­spon­si­bil­ity to de­liver what we had promised. At the same time, we faced a wave of skep­ti­cism. We were called scam­mers and told the pro­ject would never ship.

A year and a half later, our en­tire team worked with the fear of let­ting our back­ers down and be­com­ing an­other crowd­fund­ing pro­ject re­mem­bered for tak­ing $5 mil­lion and never de­liv­er­ing. We were hit by post-COVID com­po­nent short­ages, soar­ing sup­ply chain costs, and po­lit­i­cal tur­moil. On top of that, we were still deal­ing with thou­sands of ac­cu­sa­tions, in­sults, and threats.

We worked as hard as we could while try­ing to ig­nore the con­stant storm of crit­i­cism around us. But we have to ad­mit that it was in­cred­i­bly dif­fi­cult. Today, we can look back and say that we made the right de­ci­sions: we planned our re­sources care­fully, took risks, and worked re­ally hard.

In the end, we made it through every chal­lenge: from hard­ware and man­u­fac­tur­ing to sup­ply chains, lo­gis­tics, firmware, and soft­ware de­vel­op­ment. We feel em­pa­thy for the teams be­hind crowd­fund­ing pro­jects that tried to copy Flipper Zero, but ended up ship­ping noth­ing. We could eas­ily have been one of them, but to­day we can say with con­fi­dence:

We de­liv­ered on all Kickstarter promises — every backer re­ceived the Flipper Zero they paid for, even if it took much longer than any­one had ex­pected.

All fea­tures were im­ple­mented — every­thing we stated in our Kickstarter cam­paign works as promised. This took us years of de­vel­op­ment.

We built a plat­form and in­fra­struc­ture — we’re proud that Flipper Zero has be­come a hard­ware plat­form with soft­ware tools, APIs, and an SDK that de­vel­op­ers gen­uinely en­joy us­ing. That’s ex­actly why there are so many com­mu­nity-dri­ven pro­jects around Flipper Zero: al­ter­na­tive firmware, apps, and scripts.

Flipper Zero is avail­able world­wide (almost) — it may not be the most vis­i­ble achieve­ment, but we in­vested an enor­mous amount of ef­fort into get­ting reg­u­la­tory cer­ti­fi­ca­tions, cus­toms ap­provals, and all the pa­per­work re­quired to of­fi­cially im­port Flipper Zero into most coun­tries. That’s why there are now so many de­vices in peo­ple’s hands.

Thanks to every­one who sup­ports us

We are deeply grate­ful to every­one who has sup­ported us since the Kickstarter cam­paign and be­lieved in our team. Without your sup­port back in 2020, Flipper Zero would prob­a­bly never have hap­pened. Together with you, we built some­thing far big­ger than we ever imag­ined.

Stable firmware 1.0

It’s im­por­tant to un­der­stand that Flipper Zero has only 700 KB of flash mem­ory avail­able for firmware. And we ran into this limit very quickly, mak­ing it im­pos­si­ble to add new fea­tures. To work around it, we came up with dy­namic apps load­ing from the mi­croSD card — it al­lowed us to move de­vice func­tions (including core fea­tures) out­side the firmware into apps.

This ar­chi­tec­ture be­came the foun­da­tion of the sta­ble firmware 1.0, which was re­leased in 2024 fol­low­ing the Apps Catalog launch. We pol­ished the user in­ter­face and doc­u­men­ta­tion. We also sta­bi­lized the firmware API and SDK for app de­vel­op­ers, so they no longer had to re­build their apps every month due to some API changes.

Since the firmware no longer re­quired ma­jor changes, we de­cided to limit our work to main­tain­ing the in­fra­struc­ture and fix­ing crit­i­cal bugs, while shift­ing our fo­cus to build­ing new de­vices (after all, we’re called Flipper Devices).

By that point, an en­tire ecosys­tem of al­ter­na­tive firmware pro­jects and com­mu­ni­ties had al­ready ex­isted, with peo­ple im­ple­ment­ing every fea­ture they could think of — even the weird­est ones. We con­sider our mis­sion ac­com­plished: we built an ac­ces­si­ble de­vel­op­ment plat­form, and com­mu­ni­ties can now shape it into what­ever they want.

We did­n’t ex­pect so many peo­ple to care so deeply about the de­vel­op­ment of the of­fi­cial Flipper Zero firmware. It’s gen­uinely mov­ing that this pro­ject and every­thing we’ve built to­gether mat­ters to you. That’s why we’re ready to re­visit some of our past de­ci­sions. We de­cided to al­lo­cate re­sources to con­tinue sup­port­ing com­mu­nity con­tri­bu­tions, but with a new ap­proach.

What this means in prac­tice:

Limited team re­sources — our team is still small, and all our at­ten­tion right now is on build­ing new DEVICES. We can no longer hang out in chats, jump on calls, and talk in real time the way we used to. From the out­side, it might look like we’re ig­nor­ing the com­mu­nity, but in re­al­ity, it’s just fo­cused work.

Async com­mu­ni­ca­tion only — from now on, all com­mu­ni­ca­tion with the de­vel­op­ment team will hap­pen through re­quests in GitHub Discussions. You can vote on top­ics, and we com­mit to re­view­ing the re­quests that get the most votes. But these have to be con­crete fea­ture re­quests, for­mat­ted ac­cord­ing to the rules. Abstract ques­tions, gen­eral dis­cus­sion, and help re­quests stay on Discord, Reddit, and so­cial me­dia.

New con­tri­bu­tion rules — we’ll now eval­u­ate pull re­quests more strictly, as re­flected in our up­dated con­tri­bu­tion guide. This ap­plies es­pe­cially to AI-generated code that touches low-level li­braries that is hard to ver­ify, as well as changes that af­fect the de­vice’s UI and re­quire ed­its in the doc­u­men­ta­tion.

Integration and re­gres­sion test­ing — it’s im­por­tant that code changes don’t break ex­ist­ing fea­tures. That’s why we’re mak­ing pub­lic the in­te­gra­tion test cases that our QA team used to test the firmware. These tests will need to be run for every change to the firmware code, and we’ll bring the com­mu­nity in to help with part of the re­gres­sion test­ing.

Feature re­quests now only via GitHub Discussions

Once the to­tal num­ber of Flipper Zero users passed one mil­lion, di­rect real-time com­mu­ni­ca­tion with the com­mu­nity be­came im­pos­si­ble. We re­ceive a huge num­ber of re­quests across every com­mu­ni­ca­tion chan­nel, to the point where we even­tu­ally had to dis­able di­rect mes­sages on our so­cial me­dia ac­counts.

At the same time, in all this noise, it be­came im­pos­si­ble to sep­a­rate what ac­tu­ally mat­ters. You can’t re­ally dis­tin­guish be­tween re­quests that re­flect real com­mu­nity needs and a sin­gle per­son’s niche re­quest — every­thing just blends into the same white noise.

Vote for what re­ally mat­ters

We’re mov­ing all re­quests from the Flipper Zero com­mu­nity to GitHub Discussions. Now you can 🤚 vote for fea­ture re­quests that re­ally mat­ter, so we can see what the com­mu­nity ac­tu­ally wants and pri­or­i­tize them.

Please stay on topic

We’d re­ally ask you to keep this space for gen­uinely im­por­tant re­quests — ones that can re­al­is­ti­cally be im­ple­mented and that you’re sure aren’t just some­thing you per­son­ally want, but some­thing oth­ers ac­tu­ally need too. Otherwise, it just turns into noise, spam, and end­less back-and-forth.

For dis­cus­sions that aren’t suit­able as fea­ture re­quests, there’s Discord, Reddit, Twitter, and our other so­cial chan­nels.

Summary

We’re al­lo­cat­ing re­sources to main­tain­ing the Flipper Zero firmware. Our team will go through com­mu­nity re­quests weekly.

Communication with the de­vel­op­ment team will now hap­pen only through GitHub Discussions. We’ll work on the fea­ture re­quests with the most votes.

Accepting PRs in the Apps Catalog will work as be­fore.

AMA with Flipper team

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.