When it comes to hobby projects, I’m trying to reduce the number of things I build for work. But I’ve decided to revisit one that I’ve abandoned, given the frequent need for this. The issue is simple: I have a JSON data structure that is quoted within a string, and I want to “unquote” it and filter the JSON so that I can read it.

So I thought I’d spend today restarting the Dequoter project. The best way to describe it is a Boop clone. I like Boop, I use Boop. And I know Boop is extendable, so I could implement any processor I need using JavaScript. But I’m not a huge fan of JavaScript, and Go has the function I need right there in the standard library. And with most things I encounter, I want to build my own. I know I shouldn’t, and I’ve been better at resisting. But I’d figured this could be a nice little distraction. And I thought I could get much of what I need done in a morning.

So I started a new Wales project and after about 3 hours, I had a scratchpad with an invokable command palette that I can use to dequote a string and format a JSON object:

Granted, it’s not much for 3 hours. While I did use Claude Code a little, much of this was hand rolled. And I spent a lot of time learning the ins and outs of Code Mirror. This is why I wanted to use Wales this time around. The previous run at this used Fyne, which was really nice to use, but the available widgets were quite limited. The nice thing about Wales is that I can build the UI in HTML and it uses the built-in HTML renderer from the OS: no need to bundle Chrome. The frontend is mainly vanilla HTML and JavaScript, although I am using Stimulus to help with some of the controls. The backend is, of course, Go.

Auto-generated description: Window displaying file information for an application named dequoter, including details like size, location, and version.
Final build size is 8.4 MB.

By the end of this morning’s session, what I had was not pretty, but it’s functional and it already does what I need it to do. I do have some plans for integrating this with UCL, and using that to define processors. That should hopefully leave all the heavy core stuff to be built near the beginning, and that could sit pretty while the extensions are added in a nicer language. Anyway, more on this if this goes anywhere.