I've been plugging away on MadHatter (https://madhatter.app), a web tool for knitting/crochet projects. It works best on desktop!
Why? Many yarncrafters painstakingly build spreadsheets, or try to bend existing general purpose pixel editors to their will. It's time consuming & frustrating.
Along the way, I've solved a bunch of problems:
- Automatic decreases (shapes the hat) / overstitching markers (shows when multiple colors are used in the same row)
- Parameterized designs, like waves, trees, geometric shapes. No more manually moving an object by a couple of pixels, it's a simple click & drag.
- Color palette merging (can't delete a color if you already use it in a pattern!)
- Export to PDF (so you can print it or stick it on a tablet)
- Repeat previews (visualize the pattern as it repeats horizontally)
The core feature that makes this more useful than most general purpose editors is that the canvas is continuous.
If you drag a shape near the right edge of the canvas, you'll see it "wrapping around" onto the right edge.
I took a look at it because you do PDF generation (I am doing front-end PDF generation in my project as well so I wanted to compare), not because I know anything about knitting or crocheting. I made a design, drew on the grid a bit, but was unable to export. I am not sure if I was missing something but it would be helpful to the user if there was a message in the export area about why they cannot export yet.
No worries. I enjoy debugging UIs and giving a few pointers. PDF generation works now. The "Enter Zen Mode (upgrade plan)" button is unreadable (white text on grey background) and if I click the button it says "Your form submission has been received.".
If you're somewhat terrified of Lyme's disease, as I am, one thing you can do to protect yourself and relatives is wear Permethrin treated clothing, especially pants and socks[0].
After hiking, take a very close look at all of your body parts and remove any ticks. You can bag them and send them off to a lab for testing as well.
I've known multiple Lyme's sufferers. You do not want this.
It's more and more probable that an infected tick passes on sufficient amounts of the bacteria that causes Lyme disease into blood as time passes.
It's almost certain to have crossed that threshold after 24 hours.
It's unlikely and uncommon to have happened in five minutes or an hour.
It's possible to occur almost immediately .. but that would likely only happen to someone with a weak immune system that's easily overwhelmed by a relatively small amount of bacteria.
I love observing the moon, whether that's taking a picture with a telephoto or peeping through telescope.
There's something special about seeing the craters with your own eyes and then sharing that with friends. The framing & cropping, zoom, color of the sky are all unique to that experience.
Plus the moon is always looking slightly different each time, with different areas shadowed; fuzzy details one day are sharp the next.
And it's a skill like any other, which feels great to improve day after day.
I feed the `git diff` of the branch (excluding large files like package-lock) and a list of the E2E files. Claude reads and compares the E2E tests against the modified content.
The good thing about Claude Code is that it uses tool calls to explore the files to check which E2E tests can validate the changes.
I got the sense the author wrote the post in collaboration with LLMs as a way of processing the experience:
> I was alone. Nobody understood the weight of losing a decade of work. But I had ChatGPT, Claude, and Grok to talk to
> To everyone who worked on these AIs, who contributed to their training data—thank you. Without you, this post might have been a very different kind of message.
It sounded like perhaps this post would have conveyed a message the author didn't think constructive if they wrote it entirely themselves
I tried and failed to write a knitting interpreter that could take a written pattern and generate a visual representation. You could have variables that expand into larger expressions, and some kind of "syntax highlighting" or verification step to make sure things are consistent.
Interested to know if you've ever tried something like that? I also get that knitting is a hobby many people do to escape computers for a minute.
Anyways, that got me into approaching the problem from a different angle (https://madhatter.app). A visual editor for hat patterns with layering, repeats, shapes, overstitching markers.
Some stuff is broken right now and it doesn't look great on mobile, but I'm building it in real time whenever my partner expresses frustration in some aspect of existing paid software ;-)
There is also https://stitch-maps.com/ which semi-pictorially shows the effect of a knitting pattern on the shape of the resulting fabric.
I haven't tried writing a knitting interpreter, even though that it extremely within the Venn diagram intersection of my interests. I have spent some time thinking about trying to formalizing knitting pattern notation. Right now, it's, like mostly there, but every pattern tweaks things in ways that are often arbitrary and confusing.
Knitting patterns are an interesting programming language. Ignoring the resulting fabric for a moment, one way to think of them is that they are an encoding of a linear series of steps the knitter is supposed to perform.
As any programmer knows, there are a whole bunch of possible programs that produce the same output:
print(1)
print(2)
print(3)
print(4)
print(5)
Versus:
for (i from 1 to 5):
print(i)
One of the challenges of designing a knitting pattern is coming up with a good encoding for the series of stitches to be created. You might think that the shortest encoding is best, but what you're really trying to optimize for is how easy is it mentally keep track of where you are.
A knitting pattern that, say, has deeply nested loops, can require the knitter to hold multiple indexes in their head (or using external counters) and increases the odds of making a mistake. Unrolled some of those loops manually might be more verbose but less error prone. Or not! Maybe the extra verbosity of the long list of stitches makes it easier to lose your place.
Even things like choosing where to place stitch markers can have an effect on how user-friendly the pattern is.
It's an interesting design problem. You're trying to design a set of instructions to produce a good object, but you're also trying to design a set of instructions that yield a good experience producing that object.
I've also been thinking about what constitutes a "good" encoding, and it definitely comes down to individual preferences, even preferences in a given moment. Today you're reading off a sticky-note and want to optimize for size, tomorrow you're laying out 3 notebooks for a huge project and want clarity.
I like the idea of a creator making the base pattern, and then sharing a link that lets the user customize the output encoding.
That customization could be visual (I want a different random seed that is used to parameterize different aspects of this pattern, so it's totally unique to me) or in the notation.
I think it'd be awesome to have a recursive notation editor. So you'd click on a variable and it expands to the verbose representation, which might include other nested variables that you can further expand (or not).
(side note, I hope you don't mind: Game Programming Patterns made a huge difference for me early in my career, thank you for bringing that into the world.)
The best knitting patterns I've seen do both. If you look at the classic Elizabeth Zimmerman Baby Surprise Jacket* it has the pattern both in the "keep doing this, increasing each row until you've got 25 [27, 29]" stitches form, and also each row individually laid out. I found that very helpful for both allowing me to carry on without reading the pattern every 2 seconds, but also having something to check on if I wasn't 100% clear.
* Which has really cool construction, and I thoroughly recommend
You're generally not wearing just a drysuit if the water is cold. Under the outer shell, you often wear multiple undergarments to keep warm. Think a base layer, underwear, socks, 1-piece.
I once did a cold water dive in a drysuit without fleece undergarments.
We were loading our gear onto a charter boat for a week's dive trip and the boat captain dropped his keys through the dock and into the water. I volunteered as tribute, threw my drysuit over my t-shirt and jeans and went down in search of the keys.
I quickly found the keys which was a blessing because it was the coldest I have ever been; I would never do a drysuit dive without the layers again.
Why? Many yarncrafters painstakingly build spreadsheets, or try to bend existing general purpose pixel editors to their will. It's time consuming & frustrating.
Along the way, I've solved a bunch of problems:
The core feature that makes this more useful than most general purpose editors is that the canvas is continuous.If you drag a shape near the right edge of the canvas, you'll see it "wrapping around" onto the right edge.
This reflects the 3D reality of a hat!
reply