Ruby's Timeout is dangerous and Thread.raise is terrifying (2015)
Why Ruby’s Timeout is dangerous (and Thread.raise is terrifying)
Why Ruby’s Timeout is dangerous (and Thread.raise is terrifying)
A deep dive into how I use types to the fullest
TL;DR: You can use Pydantic’s support for tagged unions to approximate sum types in Python; go right to Sum types in Python (and onwards) to see how it’s done.
I like Go. I think it is a reasonable good language , and has some good qualities that makes up for its flaws. However, this doesn't mean I think the language couldn't be better, far from it.
Zngur (/zængɑr/) is a C++/Rust interop tool. It tries to expose arbitrary Rust types, methods, and functions while preserving their semantics and ergonomics as much as possible. Using Zngur, you can use arbitrary Rust crates in your C++ code as easily as using them in normal Rust code, and you can write idiomatic…
Even relatively new C programmers have no trouble reading simple C declarations such as
Every now and then, I stumble onto some algorithm or idea that’s so clever and such a perfect solution to a problem that I feel like I got smarter or gained a new superpower just by learning it. Heaps were one, just about the only thing I got out of my truncated CS education. I recently stumbled onto another: Pratt or…
I meant to write about this when I started my blog in 2009. Eventually Lush kind of faded out of my consciousness, as it was a lot easier to get work doing stuff in R or Matlab or whatever. The guy…
This is the transcript of my RustConf 2023 talk: "Extending Rust's Effect System", presented on September 13th 2023 in Albuquerque, New Mexico and streamed online.
A look at a Mojo benchmark for bioinformatics, and Mojo in general.
Swift for C++ Practitioners, Part 1: Intro & Value Types
I am a big fan of C, but some part of me always yearn to have just enough higher level constructs.
I have written about my on-going rewrite-it-to-Rust effort at work: 1 , 2 , 3 . And now it's finished, meaning it's 100% Rust and 0% C++ - the public C API has not changed, just the implementation, one function at time until the end. Let's have a look back at what worked, what didn't, and what can be done about it.
The Rust language has incrementally grown a set of patterns to support control-flow effects including error handling, iteration, and asynchronous I/O. In The registers of Rust , boats lays out four aspects of this pattern shared by Rust’s three effects. Today these effects are typically used in isolation, or at most…
Scope. To talk about C++’s current safety problems and solutions well, I need to include the context of the broad landscape of security and safety threats facing all software. I chair the ISO C++ s…
I am currently working on a Rust to .NET compiler, rustc_codegen_clr . To get it to work, I need to implement many Rust features using .NET APIs. One of such features is panicking and unwinding.
Whether you have to do with data in the form of CSV, JSON or a full-blooded programming language like C, JavaScript, Scala, or maybe a query language like SQL, you always transform some sequence of characters (or binary values) into a structured representation. Whatever you’ll do with that representation depends on…
continuing with the DNA theme… In Catalyst, a WebAssembly implementation of the OpenSmalltalk virtual machine, there are three linguistic levels in play: Smalltalk, JavaScript (JS), and WebAs…
wingolog: article: conservative gc can be faster than precise gc
How I build a website for choosing movies
Some time later, I came across Iavor�s "jokes" page, including a funny bit called � The Evolution of a Programmer � in which the traditional imperative "Hello, world" program is developed through several variations, from simple beginnings to a ridiculously complex extreme. A moment�s thought turned up the factorial…
For a real-life implementation, see how Racket's math/number-theory does it here .
OOP is certainly not my favorite paradigm, but I think mainstream statically-typed OOP does a few things right that are very important for programming with many people, over long periods of time.
The other day I posted something silly, and learned some interesting things about raw pointers in Rust.
How bounded higher-kinded polymorphism arises in practice, and how to express it in OCaml, in several different ways. Some ways are rather concise -- but less widely known.
An esoteric, graphical functional language
Joseph Gentle wrote a post on how he wants Rust to change. I am already working on that.
Using Elixir instead of Python or Ruby for shell scripting.