I was off for a while, was I doing something?
Spoiler alert: I was. I spent this summer in India, but I also worked on two cool projects called AtomChatDB and Pindle
8/15/2025
It's been a while since my last post, but give me some credit, AP season's a nightmare, and then in the relaxation after that you kinda forget. I've also been staying in India this summer, and kinda just remembered this exists (oops!).
I have been working on some apps though, just based on some previous ideas I have. It was really a pain to get one of them working, but I also really like them both. I'm also starting on a new project that I think will be really cool.
The first month: AtomChatDB
During my first month in India, I spent most of my time working on this chatting application. Obviously, we have enough chat apps already, but this time, I wanted to create something similar to Usenet, a peculiar service I never had the privilege of using (being born in 2009 I only know the modern world of apps, including Skype, if you can even call that modern).For that reason, I really wanted to try to make a forum app similar to that. And also include live chatting features. And profile pictures. I really wanted to take advantage of a lot of SvelteKit's features, including hooking user requests and transferring them elsewhere. For instance, if a user doesn't have a profile picture in my database, the server redirect to another service that generates a profile picture based on seed and send that instead.
The background animation (which I spent way more time working on than I'd like to admit) also looks really cool. It's 7 different wave svgs from haikei.app that I split and made move at different speeds. It was really annoying to get right because of how the SVGs had to have two copies rendered so it wouldn't abruptly cut off. In fact, I had to manually edit the SVGs so that their beginnings and ends would be more tapered, rather than cutting off abruptly. It was probably the smallest part of the app, but at least I can re-use that code elsewhere.
The forum functionality's kinda cool. There's no polling, so you have to reload every time to get new messages. If someone deletes their post and the post has no replies, the post is hidden, but if there are replies, the post is simply locked and not hidden. You can include text with photos and pictures.
The biggest nightmare in this app was definitely the real-time chat section. Where to even begin! SvelteKit doesn't have support for websockets, so I had to use this weird pull-request version of SvKit with the feature kinda added in? The maintainers weren't very clear if they even wanted to plan Websockets because they had a discussion at the summit, so this app's foundation is already rocky.
On top of that, the chat wouldn't load if I deployed the app to HackClub's nest servers. I still don't know why, I assume it's something to do with Caddy not supporting WebSockets over HTTPS, and because my domain is .dev and HTTPS-only, wouldn't allow websockets over my domain. I ended up temporarily just creating a new domain under the hack club one, and right now, AtomChatDB doesn't work if you want to use the chat feature.
This project was a pretty fun one, and I had some ideas on what to do for it in the future, but because of all the problems listed above, I just don't really like this project all that much. It's cool but it was a nightmare, and I think there are other projects I can really push further and get working.
Also Pindle
I've been pretty interested in HTML5-based games that only use direct APIs from the web browser. Pindle is basically that. It's like Wordle, but you guess a PIN instead of a word. I ended up spending more time making it look like an android phone, to the point where I'd say if you put it in a movie, you might be able to fool the viewers into thinking it's an actual phone.The game has a couple different modes, where you can choose between 4, 6, 8, or variable amount of digits, and you can also play on a leaderboard (which DOES work). It also uses Local Storage to store your current best tries, so there's some memory concept.
I spent so much time just working on making it really look like android as well. Everything, from the clock on the lock screen, to the double tap notifications, to the side-swipe to open, to the swipe to unlock, to the pin pad animating from bottom to top, everything was custom designed to look perfect on both desktop and mobile, even tiny iPhone SE screens. Why is this useful? No idea, but it was cool.
NestHelper??? Coming soon
After working on these two, I wanted to get out of website hell. And I also wanted to work on something that would be useful for me, personally at the very least. But a little backstory.When I was trying to set up AtomChatDB on HackClub's nest servers, I ran into a lot of issues. You already know this. But the worst issue was that everytime I wanted to make a small change, I had to deal with the lag of pulling on the server, then building, and then making sure that the systemctl process restarts. And just typing in the terminal had a 200ms delay because of the server's load. It was awful.
My idea was that I could make it so I write these commands in advance, run them all at once, so I don't have to wait for one command to finish before I can type the next one. While I'm at it, it would also be easier manage files on the server through a GUI rather than SSHing in and using vim.
So NestHelper is supposed to be a desktop app that connects via SSH for you and allows you to abstract yourself from the tty. This was originally going to be a command line utility, to keep the app close to SSH, but it's probably more of a pain to do that and I also wanted an opportunity to work with Tauri and Rust.
So that's my update, I'll see you later!
