snake_case
snake_case on Hacker News
It’s great to see more tools taking advantage of the markdown syntax.
I’m the creator of Mask[0], a very similar tool built with Rust. I was originally inspired by Maid[1], which is an older take on this idea built with Node and no longer maintained I believe.
I see this is based on Node as well, and I appreciate that it currently has zero dependencies. Nice work!
[0]: https://github.com/jacobdeichert/mask
[1]: https://github.com/egoist/maid
Mask can't directly solve this problem by itself, it just runs whatever script you give it. If you can write a python/js/bash/etc script to achieve what you want, you can stick it inside a maskfile with the rest of your commands.
Regarding docker, I haven't tried it on M1 yet. However, I've been using Ubuntu multipass [1] for over a year now and I'm very happy with it. It makes it easy to set up and manage VMs for different projects, and it seems to run very efficiently on macOS in my experience. When a project needs a docker container like postgres, I just run docker compose inside the VM rather than running it directly in macOS. You can also limit the amount of CPU/RAM the VM uses to keep things under control.
[1]: https://github.com/canonical/multipass
Before mask, I used a custom bash command runner which relied on a directory structure to implement the command and subcommand tree. This was pretty simple and nice to use. So if it’s working for you, there’s no reason to look for alternatives.
Mask takes advantage of the markdown structure in a few ways. Headings define top-level commands and subheadings represent nested subcommands, which makes it extremely easy to structure a command tree. Also, mask checks the code block lang code (ruby, python, js, fish, etc…) and executes the script using that runtime as long as you have it installed. There’s other features, but those two are great examples why markdown works well as a command definition format.
Nice to see other markdown-based task runners!
I'm the creator of mask which is another alternative, written in Rust. Our approaches slightly differ. It looks like xc parses the README.md file for commands while mask looks for a maskfile.md by default, though you can provide a --maskfile arg to specify any markdown file that follows the expected format.
https://github.com/jacobdeichert/mask
Great feedback, others have mentioned this as well! I’ll try to add this as an option soon.
Good question and sorry for the confusion! I originally launched with an optional paid tier which I have since removed. Currently there is no business model. I happily run this at a loss as my costs are very low.
Nice collection, thanks for putting this together!
I was thinking of submitting my jigsaw site Puzzle Panda [1] if it fits the requirements. Registration is not necessary and there’s no ads.
[1]: https://puzzlepanda.com
All great points, thanks for the feedback! :)
The smudge tool radius idea was especially interesting and something I’ll need to think about further. Very curious how it would affect the UX for beginners vs power users. Could be a great improvement for touchscreen devices as well.
Ha, yikes! I’ll have to try reproducing that, since that sounds like a bug that could happen even under normal circumstances.
Thank you! I’m aiming to provide a more polished and user-friendly experience than the alternatives out there, and I have many plans to differentiate ever further. Glad you had a good time playing.
Thanks, glad you enjoyed it! As another reply mentioned, single click/tap on a piece auto rotates it to the correct orientation.
Many have pointed out the auto rotation is either too easy or annoying, so I am considering alternatives. I originally started with single click to rotate 90deg but was told by early users it was too hard. Reconsidering ways to introduce this that is friendly to all users.
I’ve heard someone do exactly that before too! Always fun finding ways to break the rules :)
Others in here are suggesting snap on drop instead of auto snapping, which I’m strongly considering now.
Yeah, good point regarding snapping on drop which would allow making the drop zone a little larger.
Drag selecting multiple pieces is interesting. If I add that, I think I would need a modifier key like shift or cmd/ctrl to differentiate between this and a background drag.
Thanks for the feedback! Looking forward to adding leaderboards.. still brainstorming the best way to introduce them.
Thanks for the report! Firefox was the browser I used during development and also needed the most work regarding performance. The image quality is heavily tied to rendering performance, so I’ll need to consider ways to improve this further.
Good suggestions! I’m not sure why I hadn’t thought of that, but snapping on drop does sound like a better experience.
There shouldn’t be any missing pieces and the puzzle engine has been tested thoroughly, so this is surprising to hear. Unfortunately I can’t investigate since demo puzzles are not persisted. Sorry about this! My theory is that it got lost far off screen and I need to prevent that from happening.
Glad you enjoyed it. Orienting the pieces up front does annoy others as well, so I'm considering options to make this a bit more friendly.
Good point regarding the picture being obscured at the end. I think this especially affects mobile.
Interesting, that's very odd. My ad blocker also blocks sentry, yet I can still drag pieces fine.
I'll need to test Brave to see if I can reproduce. Thanks for the details.
Sorry to hear that! I have an up-to-date iPad Air 2 and I've tested playing in Safari quite a bit. The touch accuracy is a little annoying and dragging the background unintentionally occasionally happens. I think I can improve this by increasing the touch area around pieces to be a bit more forgiving. Thank you for reporting.
Great point! This has been something I've been meaning to do and forgot about. Thanks for the reminder.
Thanks! Yeah, it's been hard to decide what to do about mobile. The experience is not great with the high piece counts. I might consider offering puzzles with smaller piece counts if they are started on a mobile device, vs desktop. But this may affect my plans for adding (optional) leaderboards and making things a little more competitive.
Good points! With my websocket test I'm currently experimenting with syncing micro actions rather than syncing the full puzzle state every time a user makes a move. For lag compensation I'm likely just going to lerp the mouse/piece position movements to make them appear smooth, but I'll see how well that works out.
Yeah, I think I need to tweak the snap distance a bit further. Sometimes pieces snap together unintentionally while dragging across the canvas, which surprises users.
Would you be able to clarify the second point? You can drag groups of pieces to connect to other groups. But I have a feeling you're talking about something slightly different.
Thanks! Glad to hear it worked well. I really need to add pinch to zoom to improve the experience on all touchscreen devices.
Thanks for the report, that is very odd. It sounds like the mouse position might be offset. I haven't ran into this yet when testing Chrome on Windows 10, but I'll take another look. Sorry about that!
You would be surprised then :)
Looking forward to adding multiplayer soon! I actually added websocket support last week and I'm currently running a test in the background to see how many I can handle concurrently.
Other than that, I have many ideas to make the paid plan more valuable too!
Yeah, this is something I'm considering still. I've heard from a few users that they don't like the pieces being rotated at all, and some would rather have click-to-rotate to make it more difficult.
I might have to make this an option, but waiting to hear from more users on this before deciding.
Hi HN!
I built this website last year for family members who enjoy playing jigsaw puzzles on their computers. I decided to build it because I frequently heard complaints about how slow some of the more popular jigsaw apps are and how they are filled with annoying advertisements.
The site is completely free to use. No advertisements and no selling of user data. However, I do offer a paid tier for users that want more jigsaw puzzles and difficulty options.
On the technical side, I'm using Svelte on the frontend with a tiny bit of wasm, and Rust for a few backend APIs. I hope the site feels snappy, it's one of the main reasons why I decided to build it.
There's a demo puzzle linked on the home page for anyone who doesn't want to sign up! I'd recommend trying it on a computer or tablet as mobile is still a little rough around the edges.
Happy to answer any questions about it!