It turns out that there is a way for a web page to access USB devices without requiring WebUSB and its associated political disagreements! Not only that, a device can intentionally design itself to bypass all of the user consent requirements. Load u2f-hax.uf2 onto a Raspberry Pi Pico (RP2040 version), and then load index.html from either localhost or another secure context. The "On!" and "Off!" buttons will toggle the LED, and the state of pin GP22 will be regularly updated...
about 2 hours ago
Formal verification tool for Rust: check 100% of execution cases of your programs 🦀 to make applications with no bugs! ✈️ 🚀 ⚕️ 🏦 Even if Rust's type system prevents many mistakes, including memory errors, the code is still not immune to vulnerabilities, such as unexpected panics or wrongly implemented business rules. The way to go further is to mathematically prove that it is bug-free: this is named "formal verification" and what coq-of-rust proposes! This is the only way to...
about 2 hours ago
For readers new to Expat: libexpat is a fast streaming XML parser. Alongside libxml2, Expat is one of the most widely used software libre XML parsers written in C, specifically C99. It is cross-platform and licensed under the MIT license. Expat 2.7.0 has been released earlier today. I will make this a more detailed post than usual because in many ways there is more to tell about this release than the average libexpat release: there is a story this time....
about 3 hours ago
Our team at Include Security is often asked to examine applications coded in languages that are usually considered “unsafe”, such as C and C++, due to their lack of memory safety functionality. Critical aspects of reviewing such code include identifying where bounds-checking, input validation, and pointer handling/dereferencing are happening and verifying they’re not exploitable. These types of vulnerabilities are often disregarded by developers using memory safe languages. In 2023 the NSA published a paper on Software Memory Safety that included...
about 5 hours ago
The open, global internet is a remarkable resource that connects us all and empowers individuals to share ideas, collaborate, and innovate. It embodies our collective hopes for a better future, fostering learning, understanding, and solutions to the challenges we face together. As passionate supporters of Mozilla and its mission, we want to express our thoughts on the current landscape, especially in light of the ongoing U.S. v. Google LLC case and its implications for Mozilla’s search partnerships. While Mozilla has...
about 8 hours ago
By Evan Miller June 15, 2010 One of the most essential practices for maintaining the long-term quality of computer code is to write automated tests that ensure the program continues to act as expected, even when other people (including your future self) muck with it. Test code is often longer than the code that is being tested. A former colleague estimates that the right ratio is around 3 lines of functional test code for every line of “real” code. Writing...
about 11 hours ago
The concept of typestates describes the encoding of information about the current state of an object into the type of that object. Although this can sound a little arcane, if you have used the Builder Pattern in Rust, you have already started using Typestate Programming! pub mod foo_module { #[derive(Debug)] pub struct Foo { inner: u32, } pub struct FooBuilder { a: u32, b: u32, } impl FooBuilder { pub fn new(starter: u32) -> Self { Self { a: starter,...
about 11 hours ago
I will start with the disclaimer that I really like git. I use it on nearly all of my programming projects, have read the entirety of Pro Git, and every lab or company I have worked at has held its codebase on GitHub, with the exception of the National Ignition Facility. For some reason, they use Accurev, or at least they did when I worked there in 2019, which was much worse. I understand that git is an evolving open-source...
about 11 hours ago
For me, type magic whether Haskelly or Idrisy dependent types evades me. A lot of modern comp sci concentrates on types, which I find a slog to get through, in spite of some helps. I’ve worked through a few books on the topic and admire how Rust renders some errors unnecessary or how types handle some types of control flow, but in practice I only use them to optimize performance in Lisps and give compiler warnings and don’t see the...
about 12 hours ago
Many companies invest heavily in hiring talent to create the high-performance library code that underpins modern artificial intelligence systems. NVIDIA, for instance, developed some of the most advanced high-performance computing (HPC) libraries, creating a competitive moat that has proven difficult for others to breach.But what if a couple of students, within a few months, could compete with state-of-the-art HPC libraries with a few hundred lines of code, instead of tens or hundreds of thousands?That’s what researchers at MIT’s Computer Science...
about 13 hours ago
13 March, 2025 Rob Norris I have spent the last couple of years of my life trying to make sense of fsync() and bringing OpenZFS up to code. I’ve read a lot of horror stories about this apparently-simple syscall in that time, usually written by people who tried very hard to get it right but ended up losing data in different ways. I hesitate to say I enjoy reading these things, because they usually start with some catastrophic data loss...
about 13 hours ago
By Benjamin Dicken | March 13, 2025Non-volatile storage is a cornerstone of modern computer systems. Every modern photo, email, bank balance, medical record, and other critical pieces of data are kept on digital storage devices, often replicated many times over for added durability.Non-volatile storage, or colloquially just "disk", can store binary data even when the computer it is attached to is powered off. Computers have other forms of volatile storage such as CPU registers, CPU cache, and random-access memory, all...
about 14 hours ago
Xata Agent is an open source agent that monitors your database, finds root causes of issues, and suggests fixes and improvements. It's like having a new SRE hire in your team, one with extensive experience in Postgres. Letting the agent introduce itself: Hire me as your AI PostgreSQL expert. I can: watch logs & metrics for potential issues. proactively suggest configuration tuning for your database instance. troubleshoot performance issues and make indexing suggestions. troubleshoot common issues like...
about 16 hours ago
I tried to write this post yesterday, but I didn’t like my approach there. Last night, I had a conversation with one of my best friends about it, and he encouraged me to write this, but in a different way. I think this way is better, so thanks, dude. The other day, Microsoft announced that they are re-writing the TypeScript compiler in Go. A lot of people had a lot of feelings about this. I did too, but in a...
about 17 hours ago
Curry is a declarative multi-paradigm programming language which combines in a seamless way features from functional programming (nested expressions, higher-order functions, strong typing, lazy evaluation) and logic programming (non-determinism, built-in search, free variables, partial data structures). Compared to the single programming paradigms, Curry provides additional features, like optimal evaluation for logic-oriented computations and flexible, non-deterministic pattern matching with user-defined functions.
about 18 hours ago
My wife and two little boys sometimes go on trips to see friends or family for whom my presence isn’t strictly required. While my wife books the flights I make a show of weighing up my options and asking if it’s really OK if I don’t come. Eventually I’m persuaded that it truly would be the best thing for all of us for me to have five to seven days to myself with no nappies and all Nintendo. My wife...
about 19 hours ago
The Royal Game of Ur, a 4500-year-old mystery, is now solved.Our new AI has not only defeated the world's best - it has surpassed the skill of every player to ever live. We know it has, because we solved the game.Let me tell you the story of how our group of passionate, but mostly clueless, players went from struggling to get our bots to run without crashing, to unearthing the secrets of the Royal Game of Ur. Oh, and we...
about 19 hours ago
main This is a text about how to write a quine (https://en.wikipedia.org/wiki/Quine_%28computing%29), which is a program that prints its own source code without using introspection. I assume the reader has encountered quines before, maybe even tried to write one, and understands why they are difficult and interesting. The text consists of two parts: in the first, I explain through an allegory how it works, and in the second, I describe in detail how to write a quine. How a Quine...
about 20 hours ago
Hi! We (pdubroy & marianoguerra) just launched an online book called WebAssembly from the Ground Up. It’s an online book to learn Wasm by building a simple compiler in JavaScript. This is the book we wish we’d had 3 years ago. Unlike many WebAssembly resources that focus on use cases and tooling, we wanted a deep dive into how Wasm actually works. We focus on the core of WebAssembly: the module format and the instruction set. We think the low-level...
about 21 hours ago
Here is a confession: I am a very strong proponent of a robust test suite being perhaps the single most important asset of a codebase, but when it comes to auxiliary services like admin sites or CLIs when it comes to testing I tend to ask for forgiveness more than I ask for permission. Django's admin site is no different: and, because Django's admin DSL is very magic-string-y, there's a lot of stuff that never gets caught by CI or...
about 21 hours ago
Bourne | Ash | #! | find | ARG_MAX | Shells | whatshell | portability | permissions | UUOC | ancient | - | ../Various | HOME "$@" | echo/printf | set -e | test | tty defs | tty chars | $() vs ) | IFS | using siginfo | nanosleep | line charset | locale 2006-02-14 .. 2021-02-13 (see recent changes) After I had repeatedly wondered how all those "ash" variants might be related, and had found hardly...
about 23 hours ago
← HOME - a blog about xit RSS ██╗ ██╗██╗████████╗██╗ ██████╗ ██████╗ ╚██╗██╔╝██║╚══██╔══╝██║ ██╔═══██╗██╔════╝ ╚███╔╝ ██║ ██║ ██║ ██║ ██║██║ ███╗ ██╔██╗ ██║ ██║ ██║ ██║ ██║██║ ██║ ██╔╝ ██╗██║ ██║ ███████╗╚██████╔╝╚██████╔╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ DEVLOG - OPTIONAL PATCHES, FORCE PUSH, SYMLINKS AND MORE - March 13, 2025 I got my first couple bug reports...mama, we made it! In #2 I forgot that in xitdb, data made in a transaction is temporarily mutable (an important perf optimization)....
about 23 hours ago
This isn't your modern C compiler booting on a recent processor. Instead, you'll read about how I bootstrapped a tiny C compiler on a 1987 transputer processor, while providing it with a basic operating system, a text editor, and an assembler! This happened in 1995, when I was age 16. This article is possible because I was so proud of my achievement that I saved most of the original files and source code in a single floppy disk. In fact,...
about 24 hours ago
Hi all, Yesterday I installed Cursor and currently on Pro Trial. After coding a bit I found out that it can’t go through 750-800 lines of code and when asked why is that I get this message: Not sure if LLMs know what they are for (lol), but doesn’t matter as a much as a fact that I can’t go through 800 locs. Anyone had similar issue? It’s really limiting at this point and I got here after just 1h...
1 day ago
12 March, 2025 Rob Norris OpenZFS has some extremely nice tools and you can do a lot with them, but they start to struggle once you need to do more complicated things with your storage, or scale your OpenZFS installation out to tens or hundreds of pools, or use it as a component of a larger product. That’s usually when people turn up looking for better ways to “program” OpenZFS, and it’s usually not long before they’re disappointed, horrified or...
1 day ago
Prolog is the only good programming language. I should know, my website is written in Prolog. Unfortunately, C is the only useful programming language. Scientists have been trying to find an answer to this problem for nearly 50 years. Some make their C more like Prolog. Others make their Prolog more like C. I offer a new solution: simply add Prolog and C together. I call it, “C Plus Prolog”, or “C+P” for short. :- include(stdio). int func main {...
1 day ago
In the two decades I’ve been in this racket, I’ve never been angrier at myself for missing a story than I am about Apple’s announcement on Friday that the “more personalized Siri” features of Apple Intelligence, scheduled to appear between now and WWDC, would be delayed until “the coming year”. I should have my head examined. This announcement dropped as a surprise, and certainly took me by surprise to some extent, but it was all there from the start. I...
1 day ago
March 12, 2025 In the previous post, I characterized Ron Jeffries' meandering approach to software design as "a shrug in the face of entropy." Some readers seem to have taken this as a strange, flowery metaphor. It wasn't. In this newsletter, our analytic framework is borrowed from information theory: simplicity is a fitness between content and expectation. When we say software is complex, we mean it's difficult to explain; we need to bridge the distance between our audience's expectations and...
1 day ago
OCaml 5 introduced numerous changes. Perhaps the largest and most-anticipated was the introduction of multicore support, which allows for shared-memory parallelism, something that was previously unavailable in OCaml. This required a significant overhaul of the garbage collector and memory allocator, the details of which were explained in the excellent Retrofitting parallelism onto OCaml (Sivaramakrishnan et al.).The OCaml maintainers focused on achieving performance backwards compatibility for single-threaded programs while also ensuring good performance for multi-threaded programs. In support of this goal,...
1 day ago
Damien Neil 12 March 2025 A path traversal vulnerability arises when an attacker can trick a program into opening a file other than the one it intended. This post explains this class of vulnerability, some existing defenses against it, and describes how the new os.Root API added in Go 1.24 provides a simple and robust defense against unintentional path traversal. Path traversal attacks “Path traversal” covers a number of related attacks following a common pattern: A program attempts to open...
1 day ago
Anthony Max Posted on Mar 12 Hello everyone! Today, before our eyes, a truly significant event for web development in general is taking place. Just a couple of days ago, a project from Microsoft for the TypeScript language was put into the public space. And this is really important! 👀 What's new? First of all, the original TypeScript compiler under the hood is moving in the new version 7 from JavaScript to Go. That is, there will be conditionally...
1 day ago
[Simon Tatham, 2025-03-12] Introduction In March 2025 I received an email asking about PuTTY’s “logo” – the icon used by the Windows executable. The sender wanted to know where it had come from, and how it had evolved over time. Sometimes I receive an email asking a question, and by the time I’ve finished answering it, I realise it’s worth turning into a blog post. This time I knew it was going to be one of those before I even...
1 day ago
Until recently the Scheme programming language in general, and Guile in particular, had no facilities for coding front-end web applications. Guile Hoot (with Fibers) addresses this gap.Guile Hoot is an implementation of Guile running on the browser via WebAssembly compilation; Fibers is a library that provides concurrency for Guile Scheme in the tradition of Concurrent ML. Luckily for us, Guile Hoot comes with Fibers out of the box, so coding clean, event-driven browser applications using Guile is now possible.David Thompson...
1 day ago
Inline evaluation has been around for a long time, but not every programmer has had the chance to use it. If you haven’t, this is an opportunity to try it. To this end I’ve coded up a simple editor with some code examples. The following examples are all editable and executable, however no run button exists to execute them. You’ll use Control-r to RUN/EVALUATE pieces of code that you select from inside the editor panes below. To see it in...
1 day ago
12.03.2025 The next set of images will drop RISC-V support. The builder is currently still going but within the next few days it will stop, and the repositories will stay in place but frozen. Nothing will change in packaging (the build profile will remain, template support where present will remain, cross-toolchains will remain) but there will be no more updates to the repo for the foreseeable future. The situation The initial plumbing for RISC-V was added in the distro in...
1 day ago
Last month I published Engineering Ubuntu For The Next 20 Years, which outlines four key themes for how I intend to evolve Ubuntu in the coming years. In this post, I’ll focus on “Modernisation”. There are many areas we could look to modernise in Ubuntu: we could focus on the graphical shell experience, the virtualisation stack, core system utilities, default shell utilities, etc. Over the years, projects like GNU Coreutils have been instrumental in shaping the Unix-like experience that Ubuntu...
1 day ago
In this report, we introduce Gemini Embedding, a state-of-the-art embedding model leveraging the power of Gemini, Google's most capable large language model. Capitalizing on Gemini's inherent multilingual and code understanding capabilities, Gemini Embedding produces highly generalizable embeddings for text spanning numerous languages and textual modalities. The representations generated by Gemini Embedding can be precomputed and applied to a variety of downstream tasks including classification, similarity, clustering, ranking, and retrieval. Evaluated on the Massive Multilingual Text Embedding Benchmark (MMTEB), which includes...
1 day ago
2025-03-11 18:34:41 Displayed 21469 times I've been a good student for 5 years at a French computer school. I've been a good freelance developer for 20 years. I've used Ruby on Rails exclusively however never writing my own code always for clients. One day I learned Common Lisp. It was supposed to be a short mission I thought I could learn Common Lisp in ten days and hack a quick server management protocol. I ended up writing throw-away Common Lisp...
1 day ago
During my freshman year, I lived in a magical world. In this magical freshman world, students sometimes turned in sloppy code, but professionals always took the time to write nice, maintainable codebases. Everybody, as far as I could tell, followed best practices. Everybody used Git and GitHub, and proper branching protocols were always followed. This dream was shattered the summer after my freshman year when I went to work for a national laboratory. I will not be mentioning this lab...
1 day ago
This article was originally posted on the Ubuntu Discourse, and is reposted here. I welcome comments and further discussion in that thread.Last month I published Engineering Ubuntu For The Next 20 Years, which outlines four key themes for how I intend to evolve Ubuntu in the coming years. In this post, I’ll focus on “Modernisation”. There are many areas we could look to modernise in Ubuntu: we could focus on the graphical shell experience, the virtualisation stack, core system utilities,...
1 day ago
This note discusses the problem of writing cryptographic implementations in software, free of timing-based side-channels, and many ways in which that endeavour can fail in practice. It is a pessimist view: it highlights why such failures are expected to become more common, and how constant-time coding is, or will soon become, infeasible in all generality. BibTeX Copy to clipboard @misc{cryptoeprint:2025/435, author = {Thomas Pornin}, title = {Constant-Time Code: The Pessimist Case}, howpublished = {Cryptology {ePrint} Archive, Paper 2025/435}, year =...
1 day ago
EDIT: 2025-03-09 removed auto loading of large gists. Anthropic released Claude Code, their competitor to Anysphere’s Cursor and Codium’s Windsurf. Claude Code is a tool that uses LLM as an agent to take user commands to complete software engineering tasks. In this blog post, we will try to decompose and better understand how Claude Code works under the hood. Getting the Source Code We can download its npm package as a tarball and unzip it to get the source code....
2 days ago
What does this print? Think it through, then try it in a browser console! Answer and explanation in the dropdown. Show answer It prints 1. wait wtf At the beginning of a line (and only at the beginning of a line), --> starts a comment. The JavaScript is parsed as The browser then displays the value of the last expression, which of course is 1. but why It’s a legacy hack. Netscape Navigator 2 introduced both JavaScript and the <script>...
2 days ago
There’s this Polish Aero2 mobile network provider that offers a free, unmetered 512 kbps data plan, which is perfect for use as a backup link for your home router/server. And while my rather obscure, $10 Huawei USB LTE modem works out-of-the-box with Linux and NetworkManager, I struggled for quite a while to get it running under the FreeBSD-based OPNsense firewall. Turns out the modem’s peculiarities required a deep dive into tracing USB communication and its protocols to eventually get it...
2 days ago
Rotary dial telephones are a fantastic way to start learning about electronics. They’re built to be disassembled and serviced (because they were originally rented!). There are online communities of engineers and enthusiasts who are happy to to share what they know. Most of all, they’re beautiful objects that inspire curiosity and nostalgia. Here’s what I’ll be making: It’s a GPO (General Post Office) 746 rotary dial telephone that plays a random song each time you pick up the handset. Overview...
2 days ago
The DuckDB project was built to make it simple to leverage modern database technology. DuckDB can be used from many popular languages and runs on a wide variety of platforms. The included Command Line Interface (CLI) provides a convenient way to interactively run SQL queries from a terminal window, and several third-party tools offer more sophisticated UIs. The DuckDB CLI provides advanced features like interactive multi-line editing, auto-complete, and progress indicators. However, it can be cumbersome for working with lengthy...
2 days ago
This report covers hrev58584 through hrev58696. Applications jscipione fixed opening folders by double-clicking the “Location” column in query results in Tracker. He also fixed hard-coded values for certain menu item metrics, bringing them in line with standard menu metrics, cleaned up some parts of drag & drop support, refactored some of the drawing logic, made some fixes to add-on loading, and more. nephele removed Gopher from the declared list of supported protocols in WebPositive. (It was supported when we used...
2 days ago
👉 Join our Discord server if you have anything to discuss! 中文 Support a wide range of microcontrollers: Powered by embassy, RMK supports a wide range of microcontrollers, such as stm32/nRF/rp2040/esp32 Real-time keymap editing: RMK has built-in Vial support, the keymap can be changed on-the-fly. You can even use Vial to edit keymap over BLE directly Advanced keyboard features: Many advanced keyboard features are available by default in RMK, such as layer switch, media control, system control, mouse control, etc...
2 days ago
Towards the end of last year, we learned that a group (allegedly affiliated with the Chinese government, referred to as “Salt Typhoon”) breached T-Mobile and other telecommunications companies and caused all sorts of havoc. This isn’t really a blog post about that incident, but it was the catalyst that inspired a bit of curiosity within me. I can’t (legally) access most mobile phone companies’ networks to see what vulnerabilities I can find, but there are plenty of open source software...
2 days ago
Every modern programming language needs a formatter to make your code look pretty and consistent. Formatters are source-transformation tools that parse source code and re-print the resulting AST in some canonical form that normalizes whitespace and optional syntactic constructs. They remove the tedium of matching indentation and brace placement to match a style guide. Go is particularly well-known for providing a formatter as part of its toolchain from day one. It is not a good formatter, though, because it cannot...
2 days ago
The worst "street-cred" I have is that I've been using tiling window managers for thirty-five percent of my life: five years with Sway and two with i3. As the realization of those numbers (and my age) dawns upon me, an irresistible urge wells up in my chest, threatening to overwhelm me. I try to tamp it down, but the urge is too strong—I must Give My Opinion.This may be worse than finding grey hairs.I switched to Wayland before it was...
2 days ago
I learned a lot while running the UC Davis HyperLoop team, and most of it is not particularly interesting to anybody other than myself. However I did learn one thing that I think may be worth sharing. The HyperLoop competition was an annual competition run by SpaceX, where universities competed to see who could make the fastest pod. The race was held in a vacuum tube. Before I became president (I was a controls programmer), I attended the very last...
2 days ago
Do you know there is a dedicated partition in the eMMC called RPMB that makes it possible to store data with integrity and authenticity support? RPMB was introduced in eMMC version 4.4, and since a lot of embedded Linux designs use eMMC nowadays, it’s probably available and ready for you to make use of it! In this article, we will learn what the RPMB partition is and how it works, its main use cases, and how to access it on...
2 days ago
The work on the project is kindly funded by NLnet Foundation.This article was originally posted on the Trifecta Tech Foundation blog, the non-profit backed by Tweede golf and the long-term home for open infrastructure projects.Using c2rustc2rust is an incredibly useful tool developed by Immunant and Galois. It takes a C code base, and turns it into Rust code. You can try it online at c2rust.com.However, while the output compiles and runs, the code that it generates is full of unsafe...
2 days ago
The bring-up of UNIX 2.11BSD on the w11 system required a lot of very detailed studies of the source code. That called quickly for a hyper-linked and cross-referenced rendition of the sources, much like doxygen or lxr does it. The desired features were: cover boot, kernel, networking, library, and userland code cover C, assembler, and other relevant languages with syntax highlighting provide 'what is used where' information, over the whole system provide hyperlinks for a fast code path analysis, especially...
2 days ago
“Touch icons” are the favicons of mobile devices and tablets. Adding them to your web page is easy, and I’m sure you already know how this works using HTML: <!-- In its simplest form: --><link rel="apple-touch-icon" href="apple-touch-icon.png"> It’s a shame Apple didn’t just implement the standard <link rel=icon> and chose to come up with a more verbose proprietary link relation instead. Chrome v31+ for Android does support this syntax, though! Use it as follows: <link rel="icon" sizes="196x196" href="apple-touch-icon.png"> If no...
2 days ago
"I built my first chat system in 1999 on the IRC protocol, cofounded a startup for companies to self-host chat rooms, and have built real time multiplayer games. I am intimately familiar with the challenges inherent in running real time messaging, presence, and pub-sub software. At AfterHour we knew that chat was going to be core to our product and, as a general engineering philosophy, do not outsource core functionality to vendors and no open source chat servers are able...
3 days ago
Large Language Models (LLMs) are rapidly saturating existing benchmarks, necessitating new open-ended evaluations. We introduce the Factorio Learning Environment (FLE), based on the game of Factorio, that tests agents in long-term planning, program synthesis, and resource optimization. FLE provides open-ended and exponentially scaling challenges - from basic automation to complex factories processing millions of resource units per second. We provide two settings: Lab-play consisting of 24 structured tasks with fixed resources. Open-play with the unbounded task of building the largest...
3 days ago
Owi is a toolchain to work with WebAssembly. It is written in OCaml. It provides a binary with many subcommands: owi c: a bug finding tool for C code that performs symbolic execution by compiling to Wasm and using our symbolic Wasm interpreter; owi c++: a bug finding tool for C++ code that performs symbolic execution by compiling to Wasm and using our symbolic Wasm interpreter; owi conc: a concolic Wasm interpreter; owi fmt: a formatter for Wasm; owi opt:...
3 days ago
Caution: JavaScript execution is disabled in your browser or for this website. You may not be able to answer all questions in this survey. Please, verify your browser parameters.
3 days ago
Tutorial • Documentation • FAQ • Benchmarks • Reddit • Discord GoatDB is a real-time, version-controlled database for Deno, React, and low-friction deployments. It’s ideal for prototyping, self-hosting, single-tenant apps, as well as ultra light multi-tenant setups without heavy backends or complex DBs. No Dedicated Infra: Run the entire DB client-side, with incremental queries that remove the need for server-side indexing. Resilience & Offline-First: If the server goes down, clients keep working and can restore server state on reboot. Edge-Native:...
3 days ago
Rust makes a distinction between values and references that you generally learn to work with while using the language. This week I learned an interesting new corner around how that distinction applies to trait objects, despite using the language for quite a long time. Maybe it will surprise you too! Background: dynamically sized types When you have some x: usize you can say x is the usize itself, while some y: &usize = &x is a reference to that value....
3 days ago
This is a demo program to show how to use the gokrazy/rsync module over a gRPC transport. The rsyncovergrpc.proto file shows the required structure to embed the rsync protocol: you need an initial request which sends the command-line arguments from client to server (= configures the transfer), then a bi-directional pipe between client and server to speak the rsync protocol over. % go install github.com/stapelberg/rsync-over-grpc/cmd/...@latest Then, open two terminal windows. In the first one, run: % grpc-rsync-server 2025/03/11 20:21:08 server.go:65:...
3 days ago
Every line of code comes with a hidden piece of documentation. Whoever wrote line 4 of the following code snippet decided to access the clientLeft property of a DOM node for some reason, but do nothing with the result. It’s pretty mysterious. Can you tell why they did it, or is it safe to change or remove that call in the future? 1 2 3 4 5 6 // ... if (duration > 0) this.bind(endEvent, wrappedCallback) this.get(0).clientLeft this.css(cssValues) If someone...
3 days ago
So far as I’ve bothered to think, there are two modes of naming things. The first option, and the most often employed in software engineering, is to use a name as a description. Another route is to simply make a name up. Both mathods have their own characteristics, and it is important to understand them, lest you perpetually feel that you have misnamed a thing. II. Names As Descriptions⌗ Using a description as a name is probably the most common...
3 days ago
This note is part of a series. Start from the beginning here.The game will have two types of scenes - when the player is piloting their ship, traveling to different locations and another when at a location. This requires two different UIs (user interfaces):requirements▪ A canvas-based UI for piloting the ship. Rendered 3D planets, space stations, other ships etc...▪ A DOM-based UI for each location rendering images and text.State machines will manage both. To prototype the player's transition between piloting...
3 days ago
With co-author Brett Simmers! The Cinder JIT compiler does some cool stuff with how they represent types so I’m going to share it with you here. The core of it is thinking about types as sets (lattices, even), and picking a compact representation. Compilers will create and manipulate types with abandon, so all operations have to be fast. We’ll start from first principles, assuming we’re analyzing a language like Python, and build our way up to roughly what Cinder has...
3 days ago
Some would say that the perfect blog article takes the reader on a journey on in which the development process looks like this: Starting from the position of a problem statement, the reader is taken on an exposition of the solution, through to joyful crescendo of benefits and a climactic finale of world peace a solid explanation of why the tool or product is the right tool for the reader to use. Meanwhile, back in the real world, we all...
3 days ago
The new frameworks will continue until morale improves. In recent months, I’ve returned to writing code daily. It’s been a lot of fun. While I enjoy Swift, Python, and Ruby, we’ve been building in TypeScript lately since it’s a good fit for our latest project. After about a decade away from regularly writing JavaScript, it’s been fun to catch up on ten years of progress all at once. For example: React has evolved from a little experiment thought to boost...
3 days ago
Long story short, yes, it’s possible to use the Ed25519 and X25519 algorithms through the Web Cryptography API exposed by the major browser engines: Blink (Chrome, Edge, Brave, …), WebKit (Safari) and Gecko (Firefox). However, despite the hard work during the last year we haven’t been able to ship Ed25519 in Chrome. It’s still available behind the Experimental Web Platform Features runtime flag. In this post, I will explain the current blockers and plans for the future regarding this feature. Although disappointed...
3 days ago
Today I’m excited to announce the next steps we’re taking to radically improve TypeScript performance. The core value proposition of TypeScript is an excellent developer experience. As your codebase grows, so does the value of TypeScript itself, but in many cases TypeScript has not been able to scale up to the very largest codebases. Developers working in large projects can experience long load and check times, and have to choose between reasonable editor startup time or getting a complete view...
3 days ago
11th March 2025 Online discussions about using Large Language Models to help write code inevitably produce comments from developers who’s experiences have been disappointing. They often ask what they’re doing wrong—how come some people are reporting such great results when their own experiments have proved lacking? Using LLMs to write code is difficult and unintuitive. It takes significant effort to figure out the sharp and soft edges of using them in this way, and there’s precious little guidance to help...
3 days ago
You can’t perform that action at this time.
3 days ago
“But AI will get better at writing stories, won’t it?” This response to my rant about AI-generated content misses the point entirely. Even if AI writing improved dramatically tomorrow, fundamental problems would remain that no algorithm refinement can fix.The environmental cost alone should give us pause. Training even a small LLM produces carbon emissions equivalent to the output of several cars, over their entire lifetimes, and each query consumes significant energy. Game development already has a substantial carbon footprint—why increase...
3 days ago
Let’s say, just for a moment, that you’re mad enough to write a web application in C.(I’m probably beyond salvation at this point, but I like C, it’s my favourite programming language, and I like to hack on fun things in my limited spare time.)At some point you have to output the HTML somehow, and I guess the code will look likeprintf("<!doctype>\n"); printf("<html>\n"); printf("..."); which is not great but tolerable. There’s a catch though, you have to do some sort...
3 days ago
Note: Development is currently performed in the facil.io C STL repo. facil.io is a C micro-framework for web applications. facil.io includes: A fast HTTP/1.1 and Websocket static file + application server. Support for custom network protocols for both server and client connections. Dynamic types designed with web applications in mind (Strings, Hashes, Arrays etc'). Performant JSON parsing and formatting for easy network communication. A pub/sub process cluster engine for local and Websocket pub/sub. Optional connectivity with Redis. facil.io provides high...
3 days ago
I normally like to write about concepts from first principes and wait for much of the dust to have settled on the implementation details. Let me take you on a small tour of an upcoming feature. However one of the talks I attended at PlanetNix2025 was from the the legend John Ericson (@ericson2314) who is a core contributor NixOS/nix about dynamic derivations RFC#92. The talk was a demo on sandstone, which is an example of the benefits of dynamic-derivations for...
3 days ago
When I was interning at Carnegie Mellon Vision Science Labs the summer after my junior year, I was having difficulty running the code in a way that did not cause my small computer to crash. So, Professor Sankaranarayanan told me to ask one of his graduate students for ways to make more efficient pipelines. I told her I was working with hyperspectral images. She paused for a second and asked, "Are those cubes?" I responded that they were. We eventually...
3 days ago
I plan for this to be the first post of a series detailing various aspects of camlcade’s design. No further posts have been written yet, but I will update this post if anything changes. I’m currently developing a game engine in OCaml called camlcade. Before I dive into how I designed camlcade’s Entity-Component-System (ECS), here are a couple of short video demos showing what the engine can currently do: The engine is still very much in progress, and I plan...
3 days ago
As of the time of writing this, the Raspberry Pi 5 has recently been released. Some people are buying it excitedly, while others think that its value over previous models doesn't warrant the price increase. In any event, many people will be implementing various projects on their new (or old) Pis. As most Pi-havers know, one of the many cool things you can do on a Raspberry Pi is run a webserver. There are tutorials here and here and probably...
3 days ago
Go to: [ bottom of page ] [ top of archives ] [ this month ] From: Colin Percival <cperciva_at_FreeBSD.org> Date: Tue, 11 Mar 2025 00:06:06 UTC -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 FreeBSD 13.5-RELEASE Announcement Date: March 11, 2025 The FreeBSD Release Engineering Team is pleased to announce the availability of FreeBSD 13.5-RELEASE. This is the sixth and final release of the stable/13 branch. Since this release is occurring late in a legacy stable branch, there are few new...
3 days ago
Common Lisp has mechanisms for error and condition handling as found in other languages, and can do more. What is a condition ? Just like in languages that support exception handling (Java, C++, Python, etc.), a condition represents, for the most part, an “exceptional” situation. However, even more so than those languages, a condition in Common Lisp can represent a general situation where some branching in program logic needs to take place, not necessarily due to some error condition. Due...
3 days ago
Monday, March 10, 2025 Code ownership is a popular concept, but it emphasizes the wrong thing. It can bring out the worst in a person or a team: defensiveness, control-seeking, power struggles. Instead, we should be focusing on stewardship. How code ownership manifests Code ownership as a concept means that a particular person or team "owns" a section of the codebase. This gives them certain rights and responsibilities: They control what goes into the code, and can approve or deny...
4 days ago
Will the future of software development run on vibes? I got a few quotes in this piece by Benj Edwards about vibe coding, the term Andrej Karpathy coined for when you prompt an LLM to write code, accept all changes and keep feeding it prompts and error messages and see what you can get it to build. Here's what I originally sent to Benj: I really enjoy vibe coding - it's a fun way to play with the limits of...
4 days ago
Andy Walker / Android AuthorityTL;DR The Android Linux Terminal app is now widely available for Pixel users running the March 2025 update. The Debian-based environment allows users to carry a fully fledged Linux instance with them, although it still lacks several creature comforts. Late last year, we reported that Google is preparing a native Linux terminal application that would allow smartphone users to carry a portable version of a desktop distro with them. Since then, we’ve seen that very app...
4 days ago
2025-03-10 After six months of hard work, I’m thrilled to announce the general availability of Sidekiq 8.0! 🥳🎉 Status Sidekiq is used by thousands of Ruby applications around the world to scale job processing up to billions of jobs/day. Current Sidekiq Enterprise customers are reporting a grand total of 1,806,671,058,604 jobs processed, almost two trillion, with my largest customer executing up to 250,000 jobs/sec. Got a Ruby/Rails app and want to try out Sidekiq? See Test Drive to get started...
4 days ago
Mathematical Markup Language (MathML) is an XML-based language for describing mathematical notation. MathML was originally designed as a general-purpose specification for browsers, office suites, computer algebra systems, EPUB readers, LaTeX-based generators. However, this approach was not very adapted to the Web: the subset focusing on semantics has never been implemented in browsers while the subset focusing on math layout led to incomplete and inconsistent browser implementations. MathML Core is a subset with increased implementation details based on rules from LaTeX...
4 days ago
I recently revisited my old operating systems coursework and realized how much of it felt too abstract: I'd learned about processes, scheduling, and memory management, but mostly in a theoretical sense. That's when I decided to pick up Robert Love's Linux Kernel Development book. Despite being written for the (now quite old) 2.6 kernel series, its pages still offer good insights into the fundamental ideas behind Linux internals. Reading it reminded me that while specific APIs and data structures evolve...
4 days ago
Over the years, we have been used to using CSS pre-processors like Sass for a use case like applying opacity to a pre-defined color. Today, we have a new way to do that and more with CSS relative colors. In this article, I aim to shed the light on that and introduce how it works along with many practical examples. Let’s dive in. The problem: Take 1 If I give you a hex color in CSS, how can you modify...
4 days ago
Instead of a boring scroll bar, thought it would be fun to have an animated stick figure that walks down the page when you scroll. Get a scroll buddy for your website Coming soon: v2 with new actions and better animation. User submitted ideas - row boat - skiier - squirrel - change direction on scroll up / down - click scroll buddy to give him a little whack, or grab to scroll. - purple gorilla climbing up and down...
4 days ago
March 8, 2025 • 10 minutes to read “You can build it cheap, fast, and good - pick two” is how the saying goes, referring to the inherent trade-offs in software development priorities. It makes intuitive sense but utterly fails in real-world applications. Two simple reasons why this correlation does not hold: Price is its own independent quality determined entirely by the buyer’s and seller’s perception of value. As the Dan Luu article I linked to mentions - it’s fairly...
4 days ago
Go's infamous error handling has caught quite the attention from outsiders to the programming language, often touted as one of the language's most questionable design decisions. If you look into any project on Github written in Go, it's almost a guarantee you'll see the lines more frequently than anything else in the codebase: if err != nil { return err } Although it may seem redundant and unnecessary for those new to the language, the reason errors in Go are...
4 days ago
Rust turns 10 this year. It’s a good time to take a look at where we are and where I think we need to be going. This post is the first in a series I’m calling “Rust in 2025”. This first post describes my general vision for how Rust fits into the computing landscape. The remaining posts will outline major focus areas that I think are needed to make this vision come to pass. Oh, and fair warning, I’m expecting...
4 days ago
posted on Dec 28, 2024 Formal verification can be used to analyze complex systems to ensure their correctness. Formal verification is the process of checking that a system satisfies specific properties (which are specified by the user) across all possible states. There are 2 main types of properties: "safety properties" and "liveness properties". For the formal definition, please refer here. If a property is not satisfied in any state but has the potential to be satisfied in a future state,...
4 days ago
We’re thrilled to share some big news with you! We're preparing to roll out MLS (Messaging Layer Security), a game-changing update to enhance your Wire experience with stronger security and enhanced support for larger groups. Here’s everything you need to know about our MLS rollout, its benefits, and how this rollout will affect you. Why Are We Rolling Out MLS? We know how vital secure and reliable communication is, especially for large teams and organizations. That's why MLS is here!...
4 days ago
March 10, 2025 — 17 min readThis post describes our journey building portable, cross-language SDKs for Flipt, and the unexpected technical challenges that forced us to rethink our approach a few times along the way. What started as a somewhat straightforward FFI implementation evolved into a complex exploration of C standard libraries, static linking, and eventually led us to WebAssembly. Along the way, we discovered that even in 2025, the dream of truly portable libraries remains surprisingly elusive - but...
4 days ago