Latest

6/recent/ticker-posts

Header Ads Widget

Linux input architecture 💻, migrating from GitHub 💨, shrinking static libs 🤏 

Input handling on Linux can be divided into two parts, separated by a common layer. Kernel-level handling deals with what happens in the kernel ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌  ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ 

TLDR

 TLDR Dev 2025-11-28

🧑‍💻

Articles & Tutorials

The Input Stack on Linux (6 hour read)

Input handling on Linux can be divided into two parts, separated by a common layer. Kernel-level handling deals with what happens in the kernel and how events are exposed to user-space. User-space handling includes the user-space device manager and hardware database for device management and setup, the libinput library for general input and other libraries such as XKB for keyboards, and Widgets, X Server, X11 window managers, and Wayland compositors. The middle exposed layer includes the event abstraction subsystem, devtmpfs for device nodes, sysfs for kernel objects and device attributes, and procfs for an introspection interface of the input core.
How Java Virtual Threads Simplify Reactor APIs (11 minute read)

Virtual threads simplify concurrency by reducing the cost of waiting threads. They allow developers to use blocking functions without needing to refactor existing code or rely heavily on reactive libraries like Reactor. By using virtual threads, developers can combine modern reactive workflows with traditional Java code, improving code maintainability and understanding.
🧠

Opinions & Advice

Shrinking while linking (12 minute read)

This post discusses two ways to significantly reduce the size of a static library. One uses classic tools like ld and objcopy, while the other uses LLVM-specific tools. They both produce similar-sized outputs, but there are some trade-offs. The 'classic' bintools approach works with both GNU bintools and LLVM bintools, and it's significantly faster than the LLVM tools, which need to recompile everything from the intermediate representation to machine code. However, the LLVM approach works on macOS, Linux, Windows, and probably others, making it more versatile.
Why Strong Consistency? (8 minute read)

Eventual consistency causes pain for both customers and application builders as it leads to complex workarounds and potential bugs. Strong consistency, like that implemented in Aurora DSQL, avoids these issues by ensuring reads reflect the latest data. Aurora DSQL achieves strong consistency by ensuring storage replicas only return data for a specific timestamp once they've seen all updates up to that time, simplifying application development.
🚀

Launches & Tools

SyncKit (GitHub Repo)

SyncKit is a sync engine that makes it trivial to build local-first applications. It can create production-ready sync in 3 lines of code. SyncKit can sync tasks across tabs instantly, even when offline. It uses true offline-first architecture to ensure apps work anywhere, even with a bad internet connection.
LowType (GitHub Repo)

LowType adds type expressions to method arguments in Ruby. It treats arguments with default values that resolve to a type instead of a value as type expressions. LowType enables types in Ruby with the simplest syntax possible.
🎁

Miscellaneous

Linus Torvalds vs. Ambiguous Abstractions (7 minute read)

Linus Torvalds has criticized the helper function, `make_u32_from_two_u16()`, arguing that the issue wasn't abstraction itself but the function's ambiguity. Torvalds found the helper unclear because it didn't explicitly state the word order, increasing cognitive load for the user. This post proposes a clearer alternative, `make_u32_from_msw_lsw()`, that encodes the word order in the name.
Migrating from GitHub to Codeberg (4 minute read)

The Zig programming language project is migrating its main repository from GitHub to Codeberg due to concerns about GitHub's engineering decline, buggy infrastructure, and push for AI features that violate Zig's policies. The move aims to escape vendor lock-in and support a non-profit platform in response to the increasing concentration of wealth in tech.

Quick Links

Managing Side Effects: A JavaScript Effect System in 30 Lines or Less (10 minute read)

This article introduces a JavaScript Effect System for managing side effects by describing them as data instead of executing them directly, improving testability, and allowing for centralized logging and profiling.
A Programmer-Friendly I/O Abstraction Over io_uring and kqueue (11 minute read)

TigerBeetle implemented a programmer-friendly I/O abstraction layer on top of io_uring and kqueue, enabling efficient and centralized I/O dispatch with callbacks and context management.
Better Auth 1.4 (10 minute read)

Better Auth 1.4 features stateless auth, SCIM provisioning, custom OAuth state, database join improvements, secondary storage for API keys, SSO domain verification, JWT key rotation, improved generic OAuth plugin, bundle size optimizations, and UUID support.
How WebSockets Work (9 minute read)

WebSockets provide persistent, full-duplex communication channels over a single TCP connection, enabling real-time data exchange between a client and server beyond the traditional request-response model of HTTP.
Feedback doesn't scale (8 minute read)

Feedback becomes overwhelming and loses its actionable signal as the leader's direct relationships diminish, and the volume of opinions increases.

Love TLDR? Tell your friends and get rewards!

Share your referral link below with friends to get free TLDR swag!
Track your referrals here.

Want to advertise in TLDR? 📰

If your company is interested in reaching an audience of web developers and engineering decision makers, you may want to advertise with us.

Want to work at TLDR? 💼

Apply here or send a friend's resume to jobs@tldr.tech and get $1k if we hire them!

If you have any comments or feedback, just respond to this email!

Thanks for reading,
Priyam Mohanty, Jenny Xu & Ceora Ford


Manage your subscriptions to our other newsletters on tech, startups, and programming. Or if TLDR Dev isn't for you, please unsubscribe.

Post a Comment

0 Comments