Forking Chrome to render in a terminal
We linked to Fathy a few months back when he forked Chrome to turn HTML into SVG, but this time he’s really outdone himself by making it render to the terminal. What resulted is the Carbonyl web browser.
We linked to Fathy a few months back when he forked Chrome to turn HTML into SVG, but this time he’s really outdone himself by making it render to the terminal. What resulted is the Carbonyl web browser.
I have (re)written my password generator in Rust with support for many different patterns. From completely random ASCII, to memorable diceware-like passphrases, and anything in between, plus extras such as private IP addresses or MACs.
I’ve also classified these patterns for easy accessing, and based on the pattern entropy I provide guesstimates about the effort for a brute force attack.
This thing scans all 65k ports in 3 seconds, is scriptable with Python, Lua & Shell, “learns” based on your usage, and automatically pipes ports into Nmap.
sqlite-loadable-rs is a new framework for writing fast, performant, and mostly-safe SQLite extensions in Rust. These extensions are nearly as fast those written in C, with the added benefit of Rust’s memory safety features, easy access to thousands of 3rd party crates and packages on crates.io, all while maintaining a splendid developer experience.
Nick Cameron works on Rust at Microsoft. He shared these desires for Rust in 2023.
The core team used to call for blog posts to help plan the next year. The core team has pretty much disappeared and certainly hasn’t called for blog posts, but I’m going to write one anyway because I have opinions and I want you to hear them. Sorry. I think you should write such a post too!
Simon Willison is using this year’s Advent of Code as an opportunity to learn Rust.
He’s using Copilot to help him with syntax/snippets via comment-driven prompting. He’s using ChatGPT as a study partner by asking it questions about how to do things in Rust. Is it working?
So far I think this is working really well.
I feel like I’m beginning to get a good mental model of how Rust works, and a lot of the basic syntax is beginning to embed itself into my muscle memory.
The real test is going to be if I can first make it to day 25 (with no prior Advent of Code experience I don’t know how much the increasing difficulty level will interfere with my learning) and then if I can actually write a useful Rust program after that without any assistance from these AI models.
And honestly, the other big benefit here is that this is simply a lot of fun. I’m finding interacting with AIs in this way—as an actual exercise, not just to try them out—is deeply satisfying and intellectually stimulating.
This might be an early glimpse into the future of AI-assisted learning…
Multithreaded, cross-platform, reliable & written in Rust.
Matt Welsh:
I hesitated writing this post, because I don’t want to start, or get into, a holy war over programming languages. (Just to get the flame bait out of the way, Visual Basic is the best language ever!) But I’ve had a number of people ask me about my experience with Rust and whether they should pick up Rust for their projects. So, I’d like to share some of the pros and cons that I see of using Rust in a startup setting, where moving fast and scaling teams is really important.
The learning curve and hiring difficulties seem to be the major culprits, in Matt’s experience.
Compared to other programming languages such as Python and Go, Rust’s standard library is very small, including only core data structures in the standard library with all other functionality farmed out to 3rd party ecosystem crates, and a common complaint from new Rust developers is that they don’t know where to start: which crates they ought to use and which crates they ought to trust. This list attempts to answer those questions.
I, for one, welcome our new Rust overlords.
Webpack creator Tobias Koppers announcing its (Vercel-funded) successor:
Turbopack is built on a new incremental architecture for the fastest possible development experience. On large applications, it shows updates 10x faster than Vite and 700x faster than Webpack. On even larger applications, the difference is greater—often 20x faster than Vite.
Turbopack is open source and still in alpha. Here’s what the future may hold:
To start, Turbopack will be used for the Next.js 13 development server. It will power lightning-fast HMR, and it will support React Server Components natively, as well as TypeScript, JSX, CSS, and more.
Turbopack will eventually also power Next.js production builds, both locally and in the cloud. We’ll be able to share Turbo’s cache across your entire team, using Vercel Remote Caching.
Webpack users can also expect an incremental migration path into the Rust-based future with Turbopack.
Rust is quite popular, but why? Emil Ernerfeldt, CTO of rerun.io, shares his thoughts in the subject.
I believe Rust is the most important development in system programming languages since C. What is novel is not any individual feature (“Rust is not a particularly original language”), but the fact that so many amazing features have come together in one mainstream language.
Rust is not a perfect language (scroll down for my complaints!), but it’s so much nicer than anything else I’ve used.
I’m not alone in loving Rust - Rust has been the most loved language in the Stack Overflow Developer Survey for seven years straight. So what are the features that make me love Rust so much?
Here’s the motivation behind this Rust-based TUI:
I do most of my git work in a terminal but I frequently found myself using git GUIs for some use-cases like: index, commit, diff, stash, blame and log.
Unfortunately popular git GUIs all fail on giant repositories or become unresponsive and unusable.
GitUI provides you with the user experience and comfort of a git GUI but right in your terminal while being portable, fast, free and open source.
Lőrik Levente shared a real world comparrison between Tauri and Electron using a real application he’s building called Authme. The comparrison focused on all the major things you’d care about — Bundle size, startup time, performance, app backend, rendering your app, security, auto update, and developer experience.
Also, see this tweet from swyx.
Tauri vs Electron results are consistently mindblowing
App: 97% smaller
Startup: 50% faster
RAM: 33% less
Security: priceless
So, is Electron is being replaced? Lőrik says yes, but…
When Rich Harris was last on JS Party, he wondered aloud:
“Should I learn Rust? Should we rewrite the Svelte compiler in Rust?” Maybe it’s a terrible idea, I don’t know, but I think it’s at least worth investigating.
Well, the effort we’re linking to here isn’t by Rich, but another member of the Svelte community. Their reasoning:
My main reason for doing this, is to compile Svelte without Node.js and possibly use Deno instead.
And the state of the project:
This is still a big work in progress. I’m mainly working on this for fun and learning. I came up with the name rustle by combining rust and svelte (ruslte => rustle). The project is open to naming suggestions!
Ralf Jung has been thinking about semantics of Rust… a lot:
The purpose of MiniRust is to describe the semantics of an interesting fragment of Rust in a way that is both precise and understandable to as many people as possible… Specifically, MiniRust is specified by a reference interpreter that describes the step-by-step process of executing a MiniRust program, including checking at each step whether the program has Undefined Behavior.
Do you ever send the output of a process to /dev/null
and regret it, but can’t afford to stop and restart the process? catp
is here for you!
We’ve linked this up before, but I’m re-upping it because Tauri co-creator Daniel Thompson raved yesterday during our (shipping soon) conversation for The Changelog. He thinks it’s the best way to learn Rust.
The P
in PRQL (pronounced “Prequel”) stands for Pipelined, which I’m convinced is a great way of writing and reasoning about queries:
A PRQL query is a linear pipeline of transformations
Each line of the query is a transformation of the previous line’s result. This makes it easy to read, and simple to write.
It compiles to SQL, which means it’s compatible with most databases already and there are currently bindings for Python, JS & Rust, which is the compiler itself.
Try it out in their web-based playground. (Thanks, Wasm!)
Speaking this morning at The Linux Foundation’s Open-Source Summit, Linus Torvalds talked up the possibilities of Rust within the Linux kernel and that it could be landing quite soon – possibly even for the next kernel cycle…
The Linux 5.20 merge window will open following the release of Linux 5.19 stable around the end of July, so at that point we’ll see if the Rust PR is submitted and lands for this next kernel version. It wouldn’t be too surprising with how things have been pacing and already having the blessing of Linus.
Lots of positivity about this in the attached comment thread.
Tauri is an app framework built with Rust. You build UIs for it using virtually any frontend JavaScript framework. It has three major tenets: security, privacy, and environment. Speaking to the latter:
The apps you make are lean and performant, which reduces electricity, storage space, and general natural resource consumption. Every byte saved is a leaf on a tree that gets to grow.
This project has gotten a lot of early interest because, well, people have been waiting for an Electron alternative to emerge. Now that Tauri is 1.0 I’m guessing adoption will really start to take off.
Even more good news: we have an episode on Tauri in the hopper for ya 💪
mirrord works by letting you select a pod to mirror traffic from. It launches a privileged pod on the same node which enters the namespace of the selected pod and captures traffic from it.
I was more excited before I realized this is a K8s thing, but still cool. Both a VS Code extension and a CLI.
I entered Rust four years ago. To this moment, I co-authored teloxide and dptree, wrote several publications and translated a number of language release announcements. I also managed to write some production code in Rust, and had a chance to speak at one online meetup dedicated to Rust. Still, from time to time I find myself disputing with Rust’s borrow checker and type system for no practical reason. Yes, I am no longer stupefied by such errors as cannot return reference to temporary value – over time, I developed multiple heuristic strategies to cope with lifetimes…
But one recent situation has made me to fail ignominiously.
Duplicates taking up tons of space on your home NAS? fclones
quickly identifies duplicates, even when there’s 10s of thousands that you’re scanning over the network:
fclones treats your data seriously. You can inspect and modify the list of duplicate files before removing them. There is also a –dry-run option that can tell you exactly what changes on the file system would be made.
Also check out the algorithm used to detect duplicates.
Spacedrive helps you organize your files across many devices in one place. Here’s the motivation:
Many of us have multiple cloud accounts, drives that aren’t backed up and data at risk of loss. We depend on cloud services like Google Photos and iCloud, but are locked in with limited capacity and almost zero interoperability between services and operating systems. Photo albums shouldn’t be stuck in a device ecosystem, or harvested for advertising data. They should be OS agnostic, permanent and personally owned. Data we create is our legacy, that will long outlive us—open source technology is the only way to ensure we retain absolute control over the data that defines our lives, at unlimited scale.