Including a fun use of the Rust fst crate
I’d been playing too much of the Scrabble app and decided to build my own personal version to play with friends.
I believe that reasoning about a program, and knowing where to insert “probes”, is a key part of development that can make the difference between “stuck all afternoon” and finishing a task on time.
This is why I love the idea of BPF: you can instrument any part of your computer. Any function in your program, any syscall, the filesystem, virtual memory, network, you name it. It should really level up my debugging, and is why I’m reading BPF Performance Tools.
So I’ve had this idea for a while now that I want to try out. I want to re-create a conference, or a meetup over video-conferencing, but the problem is that these events aren’t * just * webinars:
1. There's usually time at the beginning or end where you get to meet the other people interested in the topic. 2. The format can vary. It can be one person talking, a panel.
When I got to the Recurse Center I wanted to write a lot of Rust, and get back into frontend development. I found a good balance between the two by writing an SPA with a background Web Worker in Rust.
I had the idea of making an automatic Paint-By-Number app, where you upload a picture and the app would turn it into one of these:
I didn’t know if this app existed before starting, so I googled around, and found ~2.
Cargo is a fantastic tool. It’s number 1 or 2 on my list whenever someone asks me to describe the benefits of Rust.
This post is about little crates that you can install to extend cargo’s day-to-day functionality. They add things that may be a little opinionated, making the core developers leave them out of the main tool and instead available as community maintained addons.
First I’ll mention 3 great tips for cargo itself:
Earlier this week I was writing some code that used a statically linked C library, and I was trying to use a default the library documentation used in its examples, DEFAULT_CAMERA_CONFIGURATION.
I was able to use everything else in the library itself just fine, but when I’d try to use this constant, my program wouldn’t compile and give a linker error instead SYMBOL_NOT_FOUND.
When you compile code into a library or an executable, the names (variables, functions, constants) are called symbols.
RC Day 3 Not that much to talk about today.
In the morning, I had a minor epiphany about wasm importing this morning after some sleep. rust-wasm-template makes an npm package, and create-wasm-app can import it directly as JS, whereas rust-wepback-template makes a wasm bundle that your js has to import like wasm. *I think*, and I’m not sure yet, that’s why I’m trying both.
I created an event tomorrow afternoon to meet Rust interested people.
RC Day 2 Note: This post isn’t going to be as informative, more stream of thought/work-like.
I wasn’t as productive today. I didn’t sleep well last night, and pretty much didn’t move on my Rust/Wasm project. I also tired myself out talking&pairing a lot (but I want to get practice!)
There are chatbots that match you for pair programming and for coffee chats, and I signed up for both of them.
The morning and RC itself The first half of the day was overwhelming because there were a lot of people to meet and talk to. But RC is really nice! Lots of nice people, and nice in a way I hadn’t experienced before.
First, there were a few intro speeches. I really liked the Social Rules sketches because it’s one thing to hear “no well actuallies”, it’s another to watch an example play out.