RSSAmplifier

Blog

- Blog

claytonwramsey.comRSS feed ↗16 posts

Latest posts

We're not done with point clouds

If you wait long enough to solve a problem, someone else might just solve it for you. At least that’s what I tell myself about the dishes in my sink. While in Vienna for a conference, I found another set of researchers who did just that for me: they took some work I had published two years ago and ran with it, and they beat me on just about every benchmark. I’m writing up this article to draw some…

Soft lock picking in real life

Last weekend, I played a fun little indie game called Real Life Soft Lock Picking . To play, just lose your phone, wallet, and keys all at the same time. You will then be soft locked : despite every system in the world working as intended, you’ll be locked out of your home, unable to make any progress or even feed yourself. The only way out is by soft lock picking , where you have to escape from a…

Garbage collection in Rust got a little better

Every language attempts to expand until it can be Java. Those languages which cannot so expand are replaced by ones which can. some smart programmer, probably A long time ago, I wrote a garbage collector , called dumpster , in Rust. If I may say so myself, it was a delightful garbage collector. However, I think it was imperfect, so I’m writing up this blog post to write about new improvements…

My second year of grad school: reflections

Two years of Ph.D. study have made me twice as smart as before! Well, not really. But I’ve still grown a lot, and I’ve added up a lot of achievements. Admittedly, there hasn’t been much outward change, since I’ve no more publications than last year, but I think I’m in a far better shape than the last time I wrote a reflection. I’ve pushed my prior work in front of loads of eyeballs, especially…

I'd rather read the prompt

When I grade students’ assignments, I sometimes see answers like this: Utilizing Euler angles for rotation representation could have the following possible downsides: Gimbal lock : In certain positions, orientations can reach a singularity, which prevents them from continuously rotating without a sudden change in the coordinate values. Numeric instability : Using Euler angles could cause numeric…

How I make figures

As a grad student, I have to give a lot of presentations, and all those presentations have to look good. Inevitably this means that I have to make a lot of pictures. This is a short little post about how I make “explanatory” figures: diagrams and models and such. I prefer to make my own figures, since I’m always disappointed to see AI-generated stock photos. To be honest, I’d rather they just tell…

No longer writing my own damn HTML

I’ve (mostly) given up on hand-writing HTML for my personal blog. Previously, I wrote all the HTML for this site by hand Over the past few days, I recently ported my whole blog from HTML to Zola . I’m writing this post partly to explain why and how I did it, and in part as a response to other posts about writing a blog using spartan tooling. Papercuts So, why change over? In short, I just got sick…

Solving 20 billion Wordle problems per second

Wordle is a mostly-solved problem, but we can mostly-solve it faster. Every so often, I get caught with the puzzle automation mind virus, and feel a burning need to write an engine for solving a pointless little game or puzzle. This time, I got caught by Wordle. To my knowledge, I’ve implemented the fastest implementation of a word grader out there. Of course, I’m nearly three years late to the…

Effect polymorphism fixes dependency inversion

TL;DR: Local programmer is inconvenienced by error-handling boilerplate, writes uninformed article about experimental programming language features. More at 11. I’ve encountered lots of pain points when dependency-inverting things, especially when working with combinators. Most recently, I’ve been thinking about how I might expose Python bindings for a half-baked motion planning library I’m…

Reflections on a year of grad school

I’m no wiser than last year, but at least I know a few more things. August 15 marks one year of Ph.D. research, so I’m writing up my experience with grad school for the sake of prospective grad students and also as a time capsule for myself. Overall, my experience so far was a huge success! I’ve had a lot of fun, made new friends, and produced surprisingly good work, and I’m excited for the…

Making robots plan faster with SIMD and Rust

Systems programming and data structures meet to make instant collision-checking. I’m now wrapping up the first “real” research project of my Ph.D., which is both exciting and very stressful at the same time. I got to experiment with a lot of really cool things, but most of them didn’t actually work. I’m writing this blog post as a chance to explain all the things I tried that didn’t work out, as…

Things I learned from teaching

This spring, I taught an undergraduate class on chess engines. I probably learned more than any of my students. As a senior in college, I was the instructor, lecturer, grader, master of ceremonies, and grand poobah of COLL 110: Artificial Intelligence for Chess, 6-7 P.M. every Tuesday for the whole semester. In theory, I had a faculty advisor, but he was busy most of the time, so at the end of the…

Writing my own damn HTML

The future of the web doesn’t have to be webapp frameworks and cookie prompts. This week, I rewrote my website from scratch. Earlier, I had used Jekyll to generate my website, but I had gotten sick of it. In particular, I didn’t like having to add hack upon hack to get things to render the way I wanted to, I didn’t like the hacky build system, and I didn’t like having to debug the mishmash of…

One line of code cost me 9.2% of my matches

I can either write a hundred lines of code for one or two Elo or find one or two wrong lines of code for a hundred Elo. Such is life. My long-running slow-burn side project is Fiddler, a chess engine . The last time I wrote about it, I wrote about 300 lines of code to get a 6 Elo improvement, equivalent to a 1% improvement to its match performance. This time, I’m writing about a more recent…

I built a garbage collector for a language that doesn't need one

If carcinization happens when languages evolve to be more like Rust, then what do you call it when Rust evolves to be more like Java? Caffeination? Over this summer, I’ve had a decent amount of time to kill. What better way to spend a beautiful hot summer than sitting inside, staring at core dumps in a supposedly memory-safe language? I built a garbage collector - in short, a piece of software…

Blowing up my compile times for dubious benefits

The tree of useless optimization yields questionable fruit. For the last two years, I’ve been building a chess engine called Fiddler . It’s not very good by chess engine standards, but that’s not the point - I mostly work on it for funsies. Right now, I’m reworking my move generator to more heavily use static, precomputed data rather than runtime generation. Most recently, I’m moving from…