- ↔
- →
to read (pdf)
- I don't want your PRs anymore
- JitterDropper | OALABS Research
- DomainTools Investigations | DPRK Malware Modularity: Diversity and Functional Specialization
- EXHIB: A Benchmark for Realistic and Diverse Evaluation of Function Similarity in the Wild
- Neobrutalism components - Start making neobrutalism layouts today
- June 16, 2026
-
🔗 Confessions of a Code Addict Page Tables from First Principles rss
This is the fourth video in our virtual memory series based on the article/ebook I wrote. In the last few videos, we covered what virtual memory is, its size, and the address space layout of a process. In this video, we learn how the kernel stores virtual-to-physical address mappings in the form of a page table, what that looks like, and how the hardware performs an address translation by walking the page table.
But instead of jumping directly to page tables, we derive the design from first principles like real system designers. We start from the problem statement of efficiently storing virtual address mappings and performing lookups efficiently, and from there, we iteratively arrive at the final solution that looks like modern-day page tables. I believe that this way, not only you would understand page tables better, but also develop the design chops needed to build solutions in other domains.
In the next video, we will talk about protection bits in virtual pages. Till then, if you haven't read the original article/book, I recommend checking that out. You can also get it in the form of a beautiful PDF for offline reading using the link below.
-
🔗 r/reverseengineering VAXD - lightweight PE EXE/DLL disassembler and patch-assistance tool for Windows rss
submitted by /u/Bicurico
[link] [comments] -
🔗 HexRaysSA/plugin-repository commits sync repo: +1 plugin, +3 releases, ~1 changed rss
sync repo: +1 plugin, +3 releases, ~1 changed ## New plugins - [ida-nativeaot](https://github.com/dump-guy/ida-nativeaot) (1.0.2, 1.0.1, 1.0.0) ## Changes - [diaphora](https://github.com/joxeankoret/diaphora): - 3.4: archive contents changed, download URL changed
-
- June 15, 2026
-
🔗 IDA Plugin Updates IDA Plugin Updates on 2026-06-15 rss
IDA Plugin Updates on 2026-06-15
New Releases:
- diaphora Diaphora 3.4.1
- ida-nativeaot ida-nativeaot v1.0.2 - Screenshots & docs
- ida-nativeaot ida-nativeaot v1.0.1 - Name sync, full demangled type names, search & overview fixes
Activity:
- augur
- 7a3ce1ce: refactor: use AsRef bounds for all pub fn
- diaphora
- ffxiv_bossmod
- haruspex
- e4104920: refactor: use AsRef bounds for all pub fn
- ida-fusion-mcp
- ida-ios-helper
- ee8218ee: Merge pull request #18 from doronz88/feature/swift
- 482c9aa4: swift_types: Gate IDA-9.4 native ABI behind version check (compat 9.0…
- 1e6e3028: swift_dump_import: Synthesize class structs + slot-resolve named meth…
- fd91fa8d: swift_dump_import: Auto-name + type Swift class methods via ipsw swif…
- 4d55eb0e: swift_types: Per-callsite ClosureCtx typing for Dispatch sync closures
- 4696de9e: swift_types: Expand FUNCTIONS_SIGNATURES with stdlib + Foundation + b…
- 7e1dd83a: swift_types: Mark Swift
throwsfunctions with __spoils + renam… - 915f2c6e: swift_types: Erase __chkstk_darwin calls from the prolog
- 35bb94b3: swift_oslog: Collapse Swift
_os_log_impl(…)build-up into a one-liner - cb511173: swift_types: Rename Swift opaque-storage buffer lvars to _buf
- 171f200c: swift_types: Rename Swift opaque-storage prolog lvars and type the VW…
- 31de1467: swift_types: Type each Swift mangled name in __swift5_typeref as a C …
- 4e1d62e9: swift_types: __swiftClassCall (x20 self) typing + post-print cfunc in…
- 6e809337: scripts: Add headless probe_func + idat IPC server for plugin iteration
- ida-nativeaot
- ida_rpc
- rhabdomancer
- 69528487: refactor: use
AsRef<Path>bounds for all pub fn
- 69528487: refactor: use
-
🔗 roboflow/supervision supervision-0.29.0 release
🚀 Added
-
Added
sv.VertexEllipseAreaAnnotator,sv.VertexEllipseOutlineAnnotator, andsv.VertexEllipseHaloAnnotatorfor visualizing keypoint uncertainty as covariance ellipses. (#2277, #2286)import cv2import supervision as sv from rfdetr import RFDETRKeypointPreview
image = cv2.imread("
") model = RFDETRKeypointPreview() key_points = model.predict(image)
annotator = sv.VertexEllipseAreaAnnotator( sigma=[1.0, 2.0, 3.0], color=[sv.Color.GREEN, sv.Color.YELLOW, sv.Color.RED], opacity=0.4, ) annotated = annotator.annotate(image.copy(), key_points)
rf-detr-ellipse-promo-2.mp4
import cv2 import supervision as sv from rfdetr import RFDETRKeypointPreview image = cv2.imread("<SOURCE_IMAGE_PATH>") model = RFDETRKeypointPreview() key_points = model.predict(image) annotator = sv.VertexEllipseOutlineAnnotator( sigma=[1.0, 2.0, 3.0], color=[sv.Color.GREEN, sv.Color.YELLOW, sv.Color.RED], thickness=2, ) annotated = annotator.annotate(image.copy(), key_points)rf-detr-ellipse-promo-3.mp4
import cv2 import supervision as sv from rfdetr import RFDETRKeypointPreview image = cv2.imread("<SOURCE_IMAGE_PATH>") model = RFDETRKeypointPreview() key_points = model.predict(image) annotator = sv.VertexEllipseHaloAnnotator( sigma=[1.0, 2.0, 3.0], color=[sv.Color.GREEN, sv.Color.YELLOW, sv.Color.RED], opacity=0.6, ) annotated = annotator.annotate(image.copy(), key_points)rf-detr-ellipse-promo-1.mp4
-
Added
sv.oriented_box_non_max_suppressionandsv.oriented_box_non_max_mergefor performing NMS and NMM directly on oriented bounding boxes. (#2303) -
Added OBB (Oriented Bounding Box) support to
sv.ConfusionMatrixviaMetricTarget.ORIENTED_BOUNDING_BOXES. (#2247) -
Added
preserve_audioparameter tosv.process_video. When enabled, the audio stream from the source video is muxed into the output using ffmpeg. (#2252) -
Added
is_obbparameter tosv.DetectionDataset.as_yolofor exporting oriented bounding box annotations in the YOLO OBB format (9-token lines with 4 corner coordinates). (#2302, #2289)
🌱 Changed
-
sv.EdgeAnnotatorandsv.VertexAnnotatornow respect thevisiblemask. Invisible keypoints and their edges are skipped during rendering. (#2286) -
sv.EdgeAnnotatorandsv.VertexLabelAnnotatornow support per-class skeleton definitions, enabling correct rendering when multiple skeleton topologies (e.g. person + animal) coexist in one frame. (#2286) -
sv.Detections.with_nmsandsv.Detections.with_nmmare now OBB-aware. Whendata[ORIENTED_BOX_COORDINATES]is present, oriented-box IoU is used automatically instead of axis-aligned box IoU. (#2303)
-
sv.Detections.areais now OBB-aware. When oriented box coordinates are present, the property returns the polygon area of the rotated bounding box (via the shoelace formula) instead of the axis-aligned box area. (#2306) -
sv.InferenceSlicernow detects OBB outputs from callbacks and automatically falls back to sequential processing to avoid thread-safety issues whenthread_workers > 1. (#2256) -
Fixed
sv.oriented_box_iou_batchto correctly handle non-square canvases. Previously, rasterization assumed square dimensions, leading to incorrect IoU values for tall or wide images. (#2282)
🔧 Fixed
-
Fixed
sv.process_videoaudio stream handling. The audio muxing path now correctly creates temp files on the same filesystem, decodes ffmpeg errors, and avoids muxing incomplete output. (#2252) -
Fixed
sv.Detections.from_vlmreturningNoneforclass_idon empty VLM parses. Now returns an empty int ndarray. (#2239) -
Fixed
sv.Detections.from_inferenceto preserveclass_nameas a string-dtype array when predictions are empty. Previously it returned an untyped empty array. (#2270) -
Fixed
sv.HeatMapAnnotatordivide-by-zero crash when called with empty detections. (#2269) -
Fixed COCO export emitting 0-indexed
category_idvalues. Now correctly emits 1-indexed IDs as per the COCO specification. (#2276) -
Fixed COCO annotation and image IDs not being chainable across dataset splits. IDs are now sequential across train/val/test. (#2267)
-
Fixed
sv.DetectionDataset.as_yololosing OBB rotation when exporting oriented bounding boxes. (#2289) -
Fixed YOLO dataset loading to sort class names by numeric keys when the
data.yamluses integer class IDs. (#2296) -
Fixed letterbox utility to support grayscale images. (#2297)
-
Fixed file extension filters to normalize casing (e.g.
.JPGnow matches.jpg). (#2298)
⚠️ Deprecated
Deprecated | Removal | Replacement
---|---|---
KeyPoints.confidence|0.32.0|KeyPoints.keypoint_confidence
merge_inner_detection_object_pair|0.32.0| None (internal use only)
merge_inner_detections_objects|0.32.0| None (internal use only)
merge_inner_detections_objects_without_iou|0.32.0| None (internal use only)
validate_detections_fields|0.32.0| None (internal use only)
validate_vlm_parameters|0.32.0| None (internal use only)
validate_fields_both_defined_or_none|0.32.0| None (internal use only)
validate_xyxy|0.32.0| None (internal use only)
validate_mask|0.32.0| None (internal use only)
validate_class_id|0.32.0| None (internal use only)
validate_confidence|0.32.0| None (internal use only)
validate_tracker_id|0.32.0| None (internal use only)
validate_data|0.32.0| None (internal use only)
validate_xy|0.32.0| None (internal use only)
validate_key_point_confidence|0.32.0| None (internal use only)
validate_key_points_fields|0.32.0| None (internal use only)
validate_resolution|0.32.0| None (internal use only)
validate_custom_values|0.32.0| None (internal use only)
validate_input_tensors|0.32.0| None (internal use only)
validate_labels|0.32.0| None (internal use only)🏆 Contributors
@SkalskiP (Piotr Skalski), @Borda (Jirka Borovec), @kounelisagis (Agis Kounelis), @RitwijParmar (Ritwij Aryan Parmar), @Khanz9664 (Shahid Ul Islam), @satishkc7 (SATISH K C), @Ace3Z (Mahbod Tajdini), @madhav-c, @RubenHaisma (Ruben Haisma), @adhavan18 (Tamil Adhavan), @Bortlesboat (Andrew Barnes), @Lourdhu02, @tarunbommawar27, @YousefZahran1 (Youssef Ibrahim), @JFrench- Enterprise, @Patel- Prem (Premkumar Patel)
-
-
🔗 roboflow/supervision supervision-0.28.0 release
🔦 Spotlight
Memory-efficient masks with
sv.CompactMaskSegmentation models produce one full-resolution bitmap per instance. On a 1920×1080 image with 28 detections that is ~55 MB of mask data. Most pixels are background.
sv.CompactMaskstores only the tight bounding-box crop, RLE-encoded — the same 28 masks drop to ~237 KB of crops, a 240× reduction before RLE kicks in.It's a drop-in replacement: annotators, filters, and
areaall work unchanged.import supervision as sv # any segmentation model — RF-DETR Seg, YOLO-Seg, SAM3 detections = model.predict(image) # sv.Detections with dense masks dense_mb = detections.mask.nbytes / 1024 / 1024 compact = sv.CompactMask.from_dense( masks=detections.mask, xyxy=detections.xyxy, image_shape=image.shape[:2], ) detections.mask = compact # swap in — API unchanged # filter by pixel area without materialising dense masks large = detections[compact.area > 1000] # annotators call .to_dense() internally annotated = sv.MaskAnnotator().annotate(image.copy(), detections)
SAM3 text-prompted segmentation
SAM3 segments objects by free-text prompt — no class list, no bounding boxes.
sv.Detections.from_sam3()parses both PCS (multi-prompt) and PVS (video) response formats into a standardsv.Detections, withclass_idset to the prompt index.import requests, base64 import supervision as sv PROMPTS = ["person", "bag"] with open("image.jpg", "rb") as f: img_b64 = base64.b64encode(f.read()).decode() response = requests.post( f"https://api.roboflow.com/inferenceproxy/seg-preview?api_key={API_KEY}", json={ "image": {"type": "base64", "value": img_b64}, "prompts": [{"type": "text", "text": p} for p in PROMPTS], }, headers={"Content-Type": "application/json"}, ) sam3_result = response.json() h, w = cv2.imread("image.jpg").shape[:2] detections = sv.Detections.from_sam3(sam3_result=sam3_result, resolution_wh=(w, h)) # class_id == 0 → "person", class_id == 1 → "bag"
🔄 Migration
VideoInfo.fpsis nowfloatNTSC frame rates (23.976, 29.97, 59.94) were silently truncated.
fpsis now the true float — cast at call sites that need an integer.Before
info = sv.VideoInfo.from_video_path("clip.mp4") buf = collections.deque(maxlen=info.fps) trace = sv.TraceAnnotator(trace_length=info.fps)After
info = sv.VideoInfo.from_video_path("clip.mp4") buf = collections.deque(maxlen=int(info.fps)) trace = sv.TraceAnnotator(trace_length=int(info.fps))sv.ByteTrackdeprecated — useByteTrackTrackerTracker implementations now live in the dedicated
trackerspackage.sv.ByteTrackremains available in 0.28–0.29 withDeprecationWarning; removal in 0.30.0.Before
tracker = sv.ByteTrack() detections = tracker.update_with_detections(detections)After
# pip install trackers from trackers import ByteTrackTracker tracker = ByteTrackTracker() detections = tracker.update(detections)
🚀 Added
-
Memory-efficient masks with
sv.CompactMask. Sparse segmentation masks are now stored as a crop region plus RLE-encoded data instead of full-resolution bitmaps, cutting memory use by 10–100× for typical instance-segmentation outputs. It's a drop-in change —sv.Detections.mask, filtering, merging, andareaall keep working without materialising the full array. (#2159) -
SAM3 detection and PVS support in
from_inference.sv.Detections.from_inferencenow parses SAM3 detection and point-video-segmentation outputs, both from the localinferencepackage and from Roboflow-hosted server responses. (#2103, #2152) -
Compressed COCO RLE masks in
from_inference. Inference responses withrleorrle_maskfields containing a compressed counts string (as produced bypycocotools) are decoded directly into binary masks, skipping the lossy polygon round-trip. (#2178) -
Standard
loggingmodule instead ofprint. Diagnostic output is now emitted under thesupervisionlogger, so applications can capture, filter, or silence it through standardloggingconfiguration. (#2154) -
RGBA hex codes in
sv.Color.sv.Color.from_hexaccepts 8-digit hex (#ff00ff80), andColor.as_hex()round-trips alpha when not fully opaque. New top-level helpers:sv.hex_to_rgba,sv.rgba_to_hex, andsv.is_valid_hex. (#2004) -
Dynamic kernel sizing in blur and pixelate annotators.
BlurAnnotator(kernel_size=None)andPixelateAnnotator(pixel_size=None)(the new default) compute the kernel per detection as a fraction of the shorter bounding-box side, giving visually consistent results across object scales. (#709) -
sv.ImageAssetsfor sample images. A counterpart to the existing video assets — downloads sample images for examples and tutorials. (#932) -
Boundary warnings in
InferenceSlicer. Emits a warning when callback detections fall outside tile boundaries, helping you spot coordinate-system bugs in custom callbacks early. (#2186)
⚠️ Breaking Changes
-
sv.VideoInfo.fpsis nowfloat, notint. Frame rates like 23.976, 29.97, and 59.94 are no longer truncated. If you passfpsto APIs that require an integer (deque(maxlen=...),TraceAnnotator(trace_length=...)), wrap withint(...). (#2210) -
sv.rle_to_maskreturnsbool, notuint8. This matches the long-declared signature. Code that doesmask * 255still works via NumPy broadcasting, but explicit casts likemask.view(np.uint8)will break. Add.astype(np.uint8)if you relied on the undocumented integer output. (#2178)
See the migration guide below for before/after snippets.
🌱 Changed
-
Metric arrays use
float32instead offloat64.sv.MeanAveragePrecisionResultand related arrays (mAP_scores,ap_per_class,iou_thresholds, precision/recall) drop tofloat32, reducing memory and speeding up computation. Numerical results may differ in the last few digits. (#2169) -
rle_to_maskandmask_to_rlemoved. New canonical path:supervision.detection.utils.converters. The oldsupervision.dataset.utilsimport still works but is deprecated. (#2178)
🗑️ Deprecated
-
normalized_xyxyargument renamed toxyxyindenormalize_boxes.sv.denormalize_boxes(normalized_xyxy=...)still works but emits aFutureWarning; switch toxyxy=. Scheduled for removal in 0.30.0. -
sv.ByteTrack→ByteTrackTracker(externaltrackerspackage). Install withpip install trackers; the method renames fromupdate_with_detections()toupdate(). Scheduled for removal in 0.30.0. (#2215) -
supervision.keypoint→supervision.key_points. Also deprecated: theLMMenum (useVLM),from_lmm(usefrom_vlm),create_tilesinsupervision.utils.image,ensure_cv2_image_for_processinginsupervision.utils.conversion, and the keypoint validators insupervision.validators. (#2214)
🔧 Fixed
-
PolygonZoneno longer double-counts overlapping zones. When two polygons contain the same anchor, each zone now reflects its own containment instead of every zone claiming the detection. (#1991) -
LineZonerespects class identity across reused tracker IDs. Trackers that recycletracker_idacross classes no longer leak crossing state from one object to another. (#1868) -
process_videoraises immediately on callback errors. Previously the exception was swallowed and the process hung until the writer was flushed. (#2022) -
DetectionDatasetpopulatesclass_name. Loaded annotations now carrydata["class_name"], matching what model connectors produce. (#2156) -
ByteTrackpreserves externally assignedtracker_id. No longer overwrites caller-assigned IDs on the first update. (#1364) -
Confusion matrix double-counting fixed.
evaluate_detection_batchnow correctly matches multiple predictions to the same target, so FP/FN counts match expectations. (#1853) -
MeanAverageRecallmAR@K is now COCO-compliant. Computed using top-K detections per image; previous values were inflated relative topycocotools. (#2136) -
Detections.is_empty()handles emptytracker_id. ReturnsTruefor zero-row detections regardless of whethertracker_idisNoneor an empty array. (#2209) -
CSVSinkandJSONSinkslicecustom_dataper row. NumPy arrays, lists, and tuples whose length matches the detection count are now indexed per row, instead of being written whole for every detection. (#2199, #2216) -
TraceAnnotatorsmooth mode handles stationary tracks. Deduplicates anchor points and falls back to a raw polyline whensplprepcannot fit fewer than 4 unique points. (#2217) -
load_coco_annotationsrejects path-traversal annotations. Refusesfile_nameentries that escape the images directory via../or absolute paths. (#2218) -
OBB datasets no longer blow up memory. Loading oriented-bounding-box datasets stopped allocating full-image masks per box. (#2187)
-
KeyPointsboolean mask indexing fixed. Uniform-count selection now works correctly when all instances share the same keypoint count. (#2188) -
DetectionDataset.as_coco()preservesareaandiscrowd. No longer dropped silently in the round-trip. (#2185) -
force_mask=Trueprecision and COCO empty-polygon export. Annotation conversion no longer loses precision, and COCO export tolerates empty polygons across formats. (#1746, #1086, #265)
🏆 Contributors
A huge thank you to everyone who shipped this release:
- @Erol444 — SAM3 detection and PVS parsing
- @leeclemnet (LinkedIn) — compressed COCO RLE masks and
rle_to_maskcorrectness - @abritton2002 —
VideoInfo.fpsas float andDetections.is_empty()fix - @shaun0927 (LinkedIn) — sink slicing, trace annotator, COCO path-traversal hardening
- @happyhj (LinkedIn) —
class_nameinDetectionDataset - @farukalamai (LinkedIn) —
CSVSinkNumPy slicing - @stop1one (LinkedIn) — COCO-compliant
MeanAverageRecall - @Adithi-Sreenath (LinkedIn) —
PolygonZoneoverlap fix - @JESUSROYETH —
LineZoneclass-aware tracker IDs - @realh4m —
process_videoerror propagation - @rolson24 (LinkedIn) —
ByteTrackpreserves external tracker IDs - @panagiotamoraiti (LinkedIn) — confusion matrix correctness
- @Youho99, @kirilllzaitsev — COCO empty polygons and
force_masksconsistency - @aza-ali — RGBA hex support in
sv.Color - @Clemens-E — dynamic kernel sizing for blur and pixelate annotators
- @NickHerrig (LinkedIn) —
sv.ImageAssets - @0xD4rky —
force_mask=Trueprecision fix - @Borda (LinkedIn) —
CompactMask, metrics float32, deprecations
Full changelog :
0.27.0...0.28.0 -
-
🔗 @HexRaysSA@infosec.exchange You know the drill: Stop by our sponsor table at mastodon
You know the drill: Stop by our sponsor table at @recon to get a sneak peek at IDA 9.4, learn about our new malware extensions, share your feedback for some primo swag, or just say hi.
We're also partnering with BlackHoodie again this year, and our own Arnau Gàmez i Montolio will be closing out Sunday with the final session.
-
🔗 roboflow/supervision 0.29.0rc1 release
releasing
0.29.0rc1 -
🔗 r/reverseengineering Factoring "short-sleeve" RSA keys with polynomials rss
submitted by /u/tnavda
[link] [comments] -
🔗 @binaryninja@infosec.exchange Join us live on June 24th at 1pm ET as Zenyard launches with Binary Ninja! mastodon
Join us live on June 24th at 1pm ET as Zenyard launches with Binary Ninja! Zenyard’s AI reverse engineering assistant helps to analyze binaries faster and with greater accuracy. We'll be taking a deep dive into what makes Zenyard's integration stand out, have it rebuild Swift code for us, and have it reason about code-flows among multiple binaries. https://youtube.com/live/JG15oxrWgp0
-
🔗 r/reverseengineering GitHub - Zypherion-Technologies/HallWatch: Usermode detector that catches indirect syscalls. rss
submitted by /u/AhmedMinegames
[link] [comments] -
🔗 sacha chua :: living an awesome life 2026-06-15 Emacs news rss
Lots of discussion around Karthik's latest blog post Even More Batteries Included with Emacs (Reddit, HN, lobste.rs). Check it out!
- Emacs updates:
- Upcoming events (iCal file, Org):
- M-x Research: TBA https://m-x-research.github.io/ Wed Jun 17 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/GMT - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore
- OrgDevMeetup https://bbb.emacsverse.org/rooms/orgdevmeetup Sat Jun 20 0900 America/Vancouver - 1100 America/Chicago - 1200 America/Toronto - 1600 Etc/GMT - 1800 Europe/Berlin - 2130 Asia/Kolkata – Sun Jun 21 0000 Asia/Singapore
- EmacsSF (in person): coffee.el in SF https://www.meetup.com/emacs-sf/events/315192115/ Sat Jun 20 1100 America/Los_Angeles
- Emacs Berlin: Emacs-Berlin Hybrid Meetup https://emacs-berlin.org/ Wed Jun 24 1000 America/Vancouver - 1200 America/Chicago - 1300 America/Toronto - 1700 Etc/GMT - 1900 Europe/Berlin - 2230 Asia/Kolkata – Thu Jun 25 0100 Asia/Singapore
- Emacs APAC: Emacs APAC meetup (virtual) https://emacs-apac.gitlab.io/announcements/ Sat Jun 27 0130 America/Vancouver - 0330 America/Chicago - 0430 America/Toronto - 0830 Etc/GMT - 1030 Europe/Berlin - 1400 Asia/Kolkata - 1630 Asia/Singapore
- Beginner:
- Emacs configuration:
- Emacs Lisp:
- Appearance:
- halo.el: an experimental minor mode for keeping point centered and dimming distant lines (Reddit)
- dimmer.el – after a hiatus, new development underway (Reddit) - dims inactive buffers; updates: reset when theme changes, handle child frames
- Dave Pearson: Simplifying my mode line
- Dave Pearson: It got darker - switched to a dark-mode
- Inspired by nano-emacs: vertico-buffer-frame with nano-vertico (Reddit)
- Navigation:
- modernizing bookmark+ (Reddit)- trying to get in touch with Drew Adams
- outline-indent, a modern Indentation-based Text Folding Mode for Emacs (Release 1.2.0) (Reddit)
- Dired:
- Writing:
- Bozhidar Batsov: Emacs loves AsciiDoc (Irreal)
- Dave Pearson: blogmore.el v5.3.0 - adds blogmore-link-series
- New, Fast, BibTex Formatter (Reddit) - Uses rust
- Denote:
- Org Mode:
- Sacha Chua: From DC Toedt: Copy Org Mode as Markdown
- Raymond Zeitler: Creating a Reference to a Webpage in Org
- A Day with Org-SuperTag — One Person's Complete Workflow
- Org export dispatcher to Eisvogel LaTeX template
- YAOB – Yet Another Org Blog · (interzone) (@cryptk)
- Emacs Org-Roam: Gestione della Conoscenza a Grafi e Metodo Zettelkasten (06:39)
- Org development:
- Completion:
- Coding:
- James Dyer: The Hidden Git Stash Keys in Emacs VC Directory Mode
- Configuring Emacs for Swift Development | Swift.org (@kickingvegas@sfba.social)
- Common Lisp tree-sitter grammar with a major-mode and Sly powered semantic highlighting (Reddit)
- Corrigindo divergências entre arquivos de configuração do emacs (01:37:06)
- Mail, news, and chat:
- Doom Emacs:
- Fun:
- AI:
- Community:
- Emacs Carnival: Underappreciated Built-ins:
- Other:
- tanrax/emacs-gpu: GNU Emacs with a GPU-accelerated display backend · GitHub (@andros@activity.andros.dev)
- Xah Talk Show Ep793. emacs, install Xah Fly Keys in WSL linux emacs (02:18:11)
- Xah Talk Show Ep792. install emacs on wsl Windows Subsystem for Linux (01:47:31)
- Sacha Chua: Yay Emacs 33: Sacha and Prot Talk Emacs: Built-ins (Prot)
- Chris Maiorana: When tmux is your window manager (Irreal)
- Emacs development:
- emacs-devel:
- Re: master 1d91d9b717d: project-vc-dir: Use truenames - Dmitry Gutov - discussion of when to use symlinks and when to use truenames
- Re: SDL terminal type - Lina - anyone interested in trying to port Emacs UI to SDL rendering?
- Optional display of overlay-arrow in margin (bug#81109)
- Revert "project-vc-dir: Use truenames"
- Convert outline-search-function to defcustom
- Add outline-search-from-regexp generic helper
- 'work-buffer–release' kill locals silently and reset the buffer (bug#81111)
- Set user options in file/directory locals like 'setopt-local' (bug#81120)
- Add outline-show-entry-and-parents to reveal entry hierarchy
- Mark vc-dir-show-outgoing-count obsolete
- project-vc-dir: Use truenames
- emacs-devel:
- New packages:
- pure-light-theme: A light colored theme for e-ink color monitors (MELPA)
- shexc-ts-mode: Tree-sitter major mode for ShExC (MELPA)
Links from reddit.com/r/emacs, r/orgmode, r/spacemacs, Mastodon #emacs, Bluesky #emacs, Hacker News, lobste.rs, programming.dev, lemmy.world, lemmy.ml, planet.emacslife.com, YouTube, the Emacs NEWS file, Emacs Calendar, and emacs-devel. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at sacha@sachachua.com. Thank you!
You can comment on Mastodon or e-mail me at sacha@sachachua.com.
-
🔗 r/reverseengineering Need DRM Bypass on course website to download video , DM (paid) , rss
submitted by /u/Lord-AMaN
[link] [comments] -
🔗 earendil-works/pi v0.79.4 release
New Features
- Automatic first-run theme selection - pi detects the terminal background on first run and defaults to the
darkorlighttheme. See Selecting a Theme. - Standalone binary integrity checksums - GitHub release assets now include
SHA256SUMSfiles for verifying standalone binary downloads. See Quickstart Install.
Added
- Added
SHA256SUMSintegrity files to standalone binary GitHub release assets (#5739). - Added first-run interactive theme detection from the terminal background (#5385 by @vegarsti).
Fixed
- Fixed bash tool output collection to keep draining stdout/stderr after the child exits while descendants still write, avoiding truncated late output (#5753 by @Mearman).
- Fixed
/treehelp rendering to show compact wrapped controls instead of truncating them on narrow terminals (#5055). - Fixed SIGTERM/SIGHUP interactive shutdown to keep signal handlers installed until terminal cleanup completes, preventing
signal-exitfrom re-sending the signal and leaving the terminal in raw/Kitty keyboard mode (#5724). - Fixed extensions documentation to clarify that
pi.getActiveTools()returns active tool names whilepi.getAllTools()returns tool metadata (#5729). - Fixed question and questionnaire extension examples to wrap long prompt, option, and help text instead of truncating it (#5708 by @xl0).
- Fixed package commands such as
pi list,pi install, andpi updateto terminate after completing even if an extension leaves background handles open (#5687). - Fixed
pi updatefor pnpm global installs whose configuredglobal-bin-dirno longer matches the active pnpm home (#5689). - Fixed npm package specs that use ranges or tags (for example
@^1.2.7) so installed package resources still load instead of being treated as mismatched exact pins (#5695). - Fixed inherited Anthropic 1-hour prompt-cache write cost accounting to price 1-hour cache writes at 2x input instead of the 5-minute cache-write rate (#5738 by @theBucky).
- Fixed inherited GitHub Copilot Claude adaptive-thinking effort metadata to match manually checked Copilot model capabilities (#4637).
- Fixed inherited OpenCode/OpenCode Go completion model metadata to omit long-retention cache fields for routes that reject
prompt_cache_retention(#5702). - Fixed inherited overlay compositing over CJK wide characters so borders stay aligned when an overlay starts inside a full-width cell (#5297).
- Fixed inherited WezTerm inline Kitty image rendering during full redraw fallbacks so image padding rows are reserved before the placement is drawn without regressing tall-image placement (#5618, #4415).
- Fixed custom provider config so plain uppercase API key and header values remain literals instead of being treated as legacy environment references; use explicit
$ENV_VARsyntax for environment variables (#5661).
- Automatic first-run theme selection - pi detects the terminal background on first run and defaults to the
-
🔗 r/reverseengineering /r/ReverseEngineering's Weekly Questions Thread rss
To reduce the amount of noise from questions, we have disabled self-posts in favor of a unified questions thread every week. Feel free to ask any question about reverse engineering here. If your question is about how to use a specific tool, or is specific to some particular target, you will have better luck on the Reverse Engineering StackExchange. See also /r/AskReverseEngineering.
submitted by /u/AutoModerator
[link] [comments] -
🔗 exe.dev Announcing the exe.dev iOS app rss
We're delighted to announce that exe.dev has an iOS app now in the App Store. There's a lot to write about how we built it, but today let's talk about the why. After all, the
exe.devdashboard and Shelley already work on mobile browsers.They say the best camera is the one you have with you. The best terminal is the one you have with you too. We couldn't build the following features without building an app, so an app it is:
Notifications. Agentic conversations are high-latency, and it's useful to be notified when it's your turn. Nothing on iOS comes close to the native notifications experience. Of course, we built this with an exe integration: other software you build on your VM can use the same
notify.int.exe.xyzintegration to ping your phone.Share sheet. Many prompts begin with a screenshot. Take one, click share, and click on exe.dev to start an agentic conversation. Whether it's a UI element that's out of alignment or a Slack message you received, the share sheet speeds up "time to agent is working on it."

Voice. We built a voice mode that can harness the power of having real computing resources available to you.
SSH. There are several excellent SSH clients already available for SSH, but the process of creating a key and registering it with exe.dev is cumbersome. We do not yet support mosh (it's on the roadmap!) which makes roaming prone to dropping connections. Having a terminal client in our app side-steps that. We have happy users that have persistent Claude Code sessions in their terminals. Paste works, by the way.
Multiplexing Shelley. One of our taglines is "a VM for every idea." Instead of walking through each VM in turn to find unfinished business, the iOS app provides a centralized place.
I want to thank our TestFlight users for providing valuable feedback while suffering through many a crash!
The app is in the App Store. Give it a whirl. Send us feedback via Discord or support@exe.dev.
Your browser does not support the video tag.
-
- June 14, 2026
-
🔗 IDA Plugin Updates IDA Plugin Updates on 2026-06-14 rss
IDA Plugin Updates on 2026-06-14
New Releases:
Activity:
- augur
- 71bde005: chore: update dependencies
- ffxiv_bossmod
- haruspex
- d7da56e9: chore: update dependencies
- rhabdomancer
- 8f512ef2: chore: update dependencies
- Rikugan
- augur
-
🔗 HexRaysSA/plugin-repository commits sync repo: +1 release, ~2 changed rss
sync repo: +1 release, ~2 changed ## New releases - [IDAGuides](https://github.com/libtero/idaguides): 1.1.0 ## Changes - [IDASQL](https://github.com/allthingsida/idasql): - 0.0.10: archive contents changed - [xray](https://github.com/hexrays-plugin-contributions/xray): - 2025.9.24: archive contents changed
-
- June 13, 2026
-
🔗 IDA Plugin Updates IDA Plugin Updates on 2026-06-13 rss
IDA Plugin Updates on 2026-06-13
Activity:
- ida_scripts
- Rikugan
- rikugan
- 6632f82b: test(agent): port bulk_renamer, subagent_manager, pseudo_tool_schemas…
- 4b2baca3: test(a2a): add HTTP and loop integration tests
- 844ac60b: feat(agent): add /a2a slash command for explicit user delegation
- bb8ddc10: feat(ui): add A2ABridgeWidget with 4-tab tools panel integration
- a531509e: feat(agent): add delegate_external_task pseudo-tool for LLM-initiated…
- 2bace4e1: fix(a2a): use background thread for responsive cancel in SubprocessBr…
- bfaceb78: feat(a2a): add A2ADispatcher as single entry point for tool/widget/slash
- 9eb6486b: feat(ui): backport IDAThemeWatcher from fork for live theme reload
- afa5f58e: feat(core): add optional dependency detection helpers
- ee842aba: chore: add .scratch/ to .gitignore
- d81cb91f: fix(orchestra): subagent event poll loop runs once, loses events
- a8e80600: test(isolation): add PySide6 dev dep + mark 5 pre-existing Qt test po…
- 57caf5e8: fix(security): block argv injection in a2a SubprocessBridge
- ed2f5175: docs: update PROJECT_MODIFICATION_PLAN with session progress and next…
- 3b9b1d65: refactor(providers): tighten registry.py docstrings and method organi…
- 51c19c7e: feat(providers,agent): port auth_compat and pseudo_tool_schemas from …
- 9cd3985d: feat(providers): port codex_provider from upstream fork
- b57c9739: fix(security): block path traversal in research_mode note writing
- a5a2ceb8: docs: list 12 built-in skills in README, add evaluation workflow + mo…
- 14c77c43: chore: remove binary archives and debug file from repo, sync .gitignore
- ToCode
-
🔗 Simon Willison Publishing WASM wheels to PyPI for use with Pyodide rss
The Pyodide 314.0 release announcement (via Hacker News) includes news I've been looking forward to for a long time:
You can now publish Python packages built for Pyodide (or any Python runtime compatible with the PyEmscripten platform defined in PEP 783) directly to PyPI and install them at runtime.
Previously, the Pyodide maintainers had to maintain, build, and host over 300 packages ourselves. This created a significant burden on our maintainers and became a major bottleneck for the community, as every new package required manual review.
Moving forward, package maintainers can simply build and publish Pyodide wheels to PyPI, just as they do for native wheels on Linux, macOS, or Windows.
Here's the PR to PyPI itself supporting this, which landed on April 21st.
I adore Pyodide, and have been frustrated in the past by this limitation. It's possible to compile C or Rust extensions to WASM in a wheel file, but before now there was no easy way to distribute them.
Thanks to the efforts of a whole lot of people, that's now been fixed!
Trying it out with luau-wasm
I decided to celebrate by finding something I could package. I have quite a few experimental Pyodide projects lying around, but the best fit for this looked to be my Luau WebAssembly research spike from 9th March.
Luau is a "small, fast, and embeddable programming language based on Lua with a gradual type system", developed by Roblox and released under an MIT license.
It's written in C++. I already knew it was possible to compile it to WebAssembly and get it running inside of Pyodide, so I set Codex + GPT-5.5 xhigh the task of packaging my experiment up and publishing it to PyPI using GitHub Actions.
It took some iteration, but here's the result: luau-wasm is a brand new PyPI package which publishes a 276KB
luau_wasm-0.1a0-cp314-cp314-pyemscripten_2026_0_wasm32.whlfile which can be used in Pyodide like this:import micropip await micropip.install("luau-wasm") import luau_wasm print(luau_wasm.execute(r''' local animals = {"fox", "owl", "frog", "rabbit"} table.sort(animals, function(a, b) return #a < #b end) for i, name in animals do print(i .. ". " .. name .. " (" .. #name .. ")") end '''))
You can run that code in the Pyodide REPL demo to see it in action.
The GitHub repo for luau-wasm includes all of the build and deploy scripts (using the latest cibuildwheel) and also deploys an HTML demo page which loads Pyodide, installs
luau-wasmand provides an interface for trying it out: https://simonw.github.io/luau-wasm/
How many packages are using this so far?
I was curious to see how many packages are currently publishing wheels for this platform.
After some tinkering with ChatGPT I got to this BigQuery SQL which I ran against PyPI's public dataset on BigQuery. Here's the raw JSON of query results and here's a SQLite SQL query in Datasette Lite which dedupes packages by most recent upload date.
If the query is right, there are currently 28 PyPI packages publishing with the new
pyemscripten_202*_wasm32tags:luau-wasm, uuid7-rs, cmm-16bit, pyOpenTTDAdmin, imgui-bundle, numbertoolkit, bashkit, geoarrow-rust-core, arro3-io, arro3-core, arro3-compute, onnx, powerfit-em, tcod, chonkie-core, tokie, robotraconteur, pydantic_core, yaml-rs, cadquery-ocp-novtk-OCP.wasm, uuid_utils, base64_utils, pycdfpp, lib3mf-OCP.wasm, typst, toml-rs, onnx-weekly, dummy-pyodide-ext-test
Here's hoping we see a whole lot more of those showing up over the coming months and years.
You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.
-
🔗 modem-dev/hunk v0.15.3 release
What's Changed
- Fixed Windows launches from Cygwin, Git Bash, and WSL-style VCS paths by @edemaine in #416
- Reduced large-review scroll and hunk-navigation latency by ~100–1000× by @elucid in #427
- Hardened Homebrew tap release updates by @benvinegar in #428
- Added release benchmark snapshots and a release benchmark gate by @benvinegar in #429
- Capped diff geometry caches per file to avoid retained-memory growth by @benvinegar in #430
- Backfilled release benchmark baselines for recent releases by @benvinegar in #431
- Prepared the 0.15.3 release and committed its benchmark snapshot by @benvinegar in #432
- Fixed release staging so benchmark comparison artifacts are not mistaken for platform binary artifacts by @benvinegar in #433
Full Changelog :
v0.15.2...v0.15.3 -
🔗 modem-dev/hunk v0.15.2 release
What's Changed
- docs: explain how to get Hunk skill by @zzl0 in #414
- feat(ui): honor transparent background in static pager output by @franky47 in #418
- chore(deps): bump taiki-e/install-action from 2.77.2 to 2.79.2 in the github-actions group by @dependabot[bot] in #390
- fix(session): resolve --repo selector to repo root by @franky47 in #424
- perf(ui): yield scroll updates and highlight work to input timers by @fink-andreas in #422
- fix(ui): keep popups opaque in transparent mode by @reobin in #411
- chore(release): prepare 0.15.2 by @benvinegar in #425
Full Changelog :
v0.15.1...v0.15.2 -
🔗 r/reverseengineering Reverse-engineered the WHOOP 4.0's Bluetooth protocol and open-sourced it. rss
submitted by /u/Abdul_Saheel
[link] [comments] -
🔗 earendil-works/pi v0.79.3 release
Fixed
- Fixed inherited OpenAI GPT-5.4/GPT-5.5 and OpenAI Codex GPT-5.4/GPT-5.4 mini/GPT-5.5 context window metadata to use the observed 272k-token Codex backend limit, avoiding a billing hazard from prompts above Codex's accepted limit (reported by @trethore).
-
🔗 r/reverseengineering "Instead of touching grass for 6 months I built an AI that names 150,000 sub_ functions overnight. I have no regrets [SpectrIDA]" SELF PROMO (i love the tool tho) rss
submitted by /u/Awkward_Fox518
[link] [comments] -
🔗 r/reverseengineering Hunting the 30-Year-Old World of Xeen MT-32 Crash rss
submitted by /u/finalpatch
[link] [comments] -
🔗 tonsky.me Every Frame Perfect rss
A while ago I was reading about Wayland and this quote stuck with me:
A stated goal of Wayland is “every frame is perfect”.
And I think this is a goal we should all aspire to. Wayland is talking about the technical side of things (modern GPU stacks are very complex and Wayland is trying to take control back) but it could be applied to UI too.
The rule of thumb is:
If I take a screenshot of your app at any moment, you should be able to explain what I see
EDIT: This used to say “..., it must make sense” but that doesn’t account for advanced animation techniques such as smear frames etc.
Why care about every frame? It builds trust. Users can’t see the code, so UI is the only way for them to judge the quality of the app. If UI looks good, that means developers had time to polish it, which means that they probably spent a comparable amount of time to iron out the code. It’s a heuristic, but a reasonable one.
Now, what does it mean in practice? I can think of a few things:
- No white flashes between screens.
- No partially loaded content.
- No relayout while content loads.
- Internally consistent. If one part of the UI says “1 update available”, another part should not say “Checking for updates...”
- Precise animations.
Animations often end up being forgotten. A UI might look great in both start and end states but very janky in between. Like this:
If you feel like there are weird things going on there, there are! Look at slowed down version:
Now let’s apply our rule and take screenshots in the middle of the animation. This doesn’t look right:

Neither does this:

Both of these frames are not perfect.
Let’s look at another example. Safari:
Placeholder text here moves from the center but cursor animates from the left position:
Not the end of the world by any means, but it does create a feeling that these two components are not in sync with each other. Next thought: maybe they weren’t designed together? If so, then they might not work well together. That’s how trust is lost.
This desynchronization can lead to a lot of confusion. For example, in Photos, when switching between Crop and Adjust mode, picture snaps into place immediately but the crop border is animated:
This creates a false feeling that something subtly changes when you switch between modes. And you know what? I don’t want my UI to give me false feelings. I want it to be a precise instrument, not an animated toy.
Sometimes animations are supposed to help you understand a transition, so it’s doubly sad when they make it harder. Follow the magnifying glass:
Same with Youtube. They had the simplest task in the world: move a rectangle from one position to another! Yet they decided to do something very strange:
Can you explain this? Does it make sense?

Probably a technical limitation of the DOM architecture they decided earlier on. I call these situations “The technology has outsmarted the programmer”. But no matter the reason, the result is an imperfect frame.
Sometimes animations are left out as an afterthought. Whatever happens, happens. Then we get this:
The details are fascinating to watch:
So yeah. Please pay attention not only to the start and end states, but also to everything in between. Every frame matters.
I’ll leave you with this unprovoked zoom animation from Preview app. Take care!
-
🔗 Armin Ronacher Dangerous Technology For Americans Only rss
There is a bit of schadenfreude on Twitter right now about Anthropic being hit by the US government's export control directive to suspend access to Fable and Mythos. Anthropic and their leadership have spent a lot of time and effort describing its own technology as dangerous and in need of strict controls and regulation. Now that the US government appears to have taken that framing seriously and told them to turn it off for foreign nationals I can see why people are making fun of that situation.
I understand the reaction, but I urge you to not entertain it for too long because it is a giant distraction. The important part is not that Anthropic's safety language came back to bite them but the line the US government is drawing: this technology is apparently so powerful that only Americans should have it.
We are on a clear path towards a world of division. One should think that if a model is too dangerous for everyone, then it is too dangerous for Americans too. Instead the US is treating these models like weapons that need to be controlled. It is not just about capabilities, it is about racism and nationalism. If you have the wrong passport, you are not to be trusted. This is a very different thing from safety, and Europeans should pay close attention to it.
Safety and National Control
The directive, as Anthropic describes it, applies to foreign nationals whether they are inside or outside the United States, including foreign national Anthropic employees. That is an astonishing boundary if you think about it. We moved from "do not sell this model to hostile governments" to nationality itself being the defining boundary. This should be a wake-up call to Europeans in and outside the US, and quite frankly, any non US citizen.
A lot of AI safety discourse presents itself as universal: humanity, catastrophic risk, safeguards, responsible deployment. Even Anthropic's own writings start out that way, but yet every time regulation is discussed there is an overtone of national security and that it cannot get into the wrong hands. It's not just Anthropic, it's the entire US based discourse on AI. The foundation is that the US has moral superiority and others are not to be trusted. That there are other countries are authoritarian, that they lack freedoms.
That should make us uncomfortable, not just Europeans, but particularly us. It is also a situation you cannot regulate yourself out of. European technology policy is entirely unprepared for this, because this is not a question of regulation but a question of might and power, something that Europe lacks.
Europe has spent years trying to regulate large American technology companies, sometimes for good reasons. I am not reflexively against that. The DMA matters because access matters. Users should have agency over their devices, their data, and the software they run. But regulation is a useless substitute for capability and we are lacking that. Regulation might try to force open doors but if those doors only come from American or Chinese companies, then that accomplishes very little.
Also let's not be naive in that this is a negotiation of money and force. The US is in that position because the US has a mighty military. The US can bomb nations anywhere in the world, force international trade routes closed and get away with it. That's true leverage.
Oh Europe
Europe is dependent on the United States in ways that are becoming increasingly impossible to ignore. We depend on American cloud providers, operating systems, developer platforms and now AI models and internet from satellites. We also depend on global semiconductor supply chains we do not control. If access to frontier AI becomes a matter of American national security policy, Europe is not a peer in that conversation and might not even be a market.
That is a humiliating position, but one that happened entirely intentionally.
European citizens and politicians still have not managed to move beyond blaming the EU for its failures. We built and maintained fragmented markets and then pretended we had a single one. We let company formation, hiring, equity compensation, tax, notaries, KYC, banking, and cross-border services remain much harder than they need to be and we are playing these rules against each other. Not just on the European level, but within every single member state. We protect the trusts and established enterprises, who are risk averse and entrenched, instead of trusting the next generation to build great companies. We created a culture where process becomes an excuse for low agency. We made it hard to build new and large companies and then act surprised when our most ambitious founders move somewhere else or just decided to incorporate their companies in the US.
Increasingly, Europeans who want to build very large technology companies move to the United States. They do it because the capital markets are better, the startup infrastructure is better, employee equity is better understood. I cannot blame anyone doing it, and I'm guilty of this myself as we have incorporated our holding in Delaware. If you are trying to raise serious money, hire aggressively, and move quickly, the US often looks like the only game in town. Because quite frankly: it is.
But this is why we are on a dangerous death spiral already. Talent leaves because the ecosystem is weak and the ecosystem stays weak because talent leaves. Infrastructure makes the world: build excellent swimming pools and you will grow a generation of great swimmers.
The temporary task is straightforward but uncomfortable: Europeans need to believe in themselves enough not to surrender to American gravity. Moving to the US as a founder or tech employee is rational and individually it is often the right decision. But if every ambitious person treats Europe as a lost cause, then Europe becomes one. If everyone with agency leaves, the only people left to shape the system are the people most comfortable with the system as it is. Then we really should not be surprised when nothing changes.
Europe needs more ambition, more ownership, more urgency, and more willingness to build. It needs less resignation. It needs to stop confusing regulation with strategy and dependency with virtue. We need to deregulate where rules serve mostly as protectionism. We need capital markets that can fund companies at the scale modern technology requires. We need employee ownership to become normal rather than exotic. We need a real single market for services, not just speeches about one. We need countries to stop fighting each other while claiming to act in the European interest.
Most importantly: we need to stop blaming the politicians. Too many European companies are adding to that bureaucracy entirely out of their own choice. They drown you in paperwork. At one point I had to sign a four page contract for a 120 Euro lamp at an Austrian retailer, just to pick up from their store 15 minutes later. Sometimes I cannot get a speaking engagement at a European event without someone sending me complex rights waivers over. It's all just paperwork protection against potential downsides.
When we do not have the power to influence, we should at least understand why and where things are failing. Too many entrepreneurs are blaming EU regulation for failures that are originating within the member states. EU regulation is the result of a democratic process between countries that are lobbying in favor of their local industries against others in the same economic bloc. No amount of abolishment of the EU is going to fix this harsh reality. Nothing more demonstrates this as the inability for cross-border M&A in the European Union. It's not the EU that blocks it, it's the country that loses out.
Strengthening Europe is necessary because weakness makes us pawns. A Europe that cannot build, cannot finance, cannot coordinate and cannot defend its own interests will not be treated as an equal. It will be regulated around, export-controlled around, consulted after the fact or not consulted at all.
The American Trap
I do not want the lesson to be that Europe simply needs to turn itself into a copy of the United States. The US has solved some things that Europe has not. It has deep capital markets, a much stronger culture of ownership, a greater tolerance for risk, and institutions that often try to make progress possible rather than explain why it cannot happen. It also has achieved an internal level of integration that is unparalleled in Europe. Tremendous advantages!
But the American path is not obviously a healthy one in all aspects. It tends to take paths with a lot of conflict and wars, a lot of internal societal division and deep inequalities. It centralizes powers away from citizens in the presidency and people with money. You are still trading one set of failures for another. You are at the whim of the US government and its strict rules and regulations. The US barely manages to uphold the rights for its own citizens today.
We should be honest about both sides. You do not win by pretending that Europe is fine. You also do not win by pretending that America has figured everything out.
We must not be blind to all the signs of how international cooperation is falling apart around us. The US no longer talks to European governments before implementing orders that directly affect Europeans. It is threatening to take Greenland, the territory of Denmark, one of its oldest allies. Treaties, alliances and institutions have lost all their worth.
All that matters even if our own lives are focused on building companies, creating wealth, hiring people and making things. Our individual path to success is one thing, but it depends on a world where contracts work, visas work and don't change on a moment's notice, trade routes stay open, payment systems function, and families are not torn apart by border regimes or wars. If the world descends into chaos, our basic needs cannot be considered met just because we have a great salaries or equity or investors that trust us.
This is why strengthening Europe cannot be the final goal. A stronger EU is, at best, a temporary defense against a darker world and not an excuse to replace American nationalism with European nationalism. The long-term answer cannot be bigger and bigger blocs fighting over who may use which model, which chip, which cloud or which trade route.
The Way Out Is Cooperation
I'm not asking here for Europeans to get their shit together just to compete with the US or China. Maybe I hope that this is a thing that develops, but the goal absolutely cannot be that we accept the deterioration of international relationships long term.
I truly believe that Open Source matters and international cooperation matters. It is not a magical answer to every problem, but it is one of the few paths we have that does not naturally lead to total concentration of power.
If frontier AI becomes something only large corporations and governments can control, then everyone else becomes dependent on their judgment. That is a bad place to be. Corporations will optimize for their incentives, as well structured as they might be, and governments will optimize for more and more power. Right now we're on a path in which access to general-purpose capability is mediated by a small number of actors with tremendous powers.
I'm not naive in pretending AI cannot carry inherent risks. Open systems are messy, they can be misused and they create uncomfortable questions about dual- use capabilities. I do not want to wave that away but closed systems do not make those questions disappear either. Moving the power to decide into fewer hands is not a solution I believe in. And I would have the same opinion if I was a US citizen living in the US.
Any path that puts large blocs in a constant fight against each other has despicable downstream effects that result in the removal of individual rights. It's entirely pointless for the US to talk about freedoms that do not extend to non-US citizens and the same is true for Europe or any other country. We might accept these restrictions temporarily, but we absolutely cannot accept them long term for the inhumane effects that they can cause.
If we believe this technology can be used for good, then broad access matters and our goal should be to restore the international rule of law, and not to further weaken it. If we find ourselves in a war against our friends from other countries, cold or hot, we have failed as society.
The world we should be working back toward is one of international cooperation, globalization in the best sense of the word, and human dignity. The internet has made our lives irreversibly international: every day people fall in love across borders, marry across languages, move across continents, and work with friends they may never meet in countries they may never visit. Identifying too strongly with any one country in that world is a fool's errand.
Over the last decade too many of the people I got to know through Open Source were directly dragged into a war. I want to believe there is a way for us to break this cycle. We should be repairing failed states, rebuilding trust between people, and finding ways to cooperate again instead of letting the richest countries arm themselves and fight over who gets to control the future and narrative. Of course I want Europe to become stronger so it can stop being a pawn, but if we mistake that temporary need for the destination, I will be deeply disappointed.
The way out is not American supremacy, Chinese supremacy or European supremacy. The way out is to climb back toward cooperation before the alternative becomes war.
Artificial Intelligence is quickly becoming another instrument of militarization and national rivalry, when it could be one of the most powerful tools for cooperation we have. We should be using it to help people across societies and languages understand one another, not fighting over who gets to control it.
-




