Stats

5
Projects
36
Devlogs
48
Votes
2
Ships

Coding Time

All Time: 106h 27m
Today: 1h 4m

Member Since

June 16, 2025

Badges

1
🚢
Maiden Voyage
you shipped your first project! the journey begins...

Projects

5
🚀
9 devlogs • about 1 month ago
Mini Libraries: Book sharing platform
1 devlog • about 2 months ago
🚀
2 devlogs • 2 months ago
MiniChat: Simple web chat in Rust
19 devlogs • 3 months ago
Pass-the-project: Slack-based community game
5 devlogs • 3 months ago

Activity

Added a main menu

Update attachment
Earned sticker

Added support for playing MIDI files. I still need to add support for tempo changes in the song, but this will do for now.

Update attachment

I added audio!! I figured out how to use Raylib's audio callbacks in C# to get low-latency audio, because without it there's a very noticeable delay between hitting a key and hearing the sound.

Improved the scoring algorithm somewhat. At this point it only considers when the start of the note is hit, not how long the note is held.

Update attachment

Added a basic accuracy/timing system

Update attachment

Added a metronome and the visuals for the falling notes. Nothing happens when you actually press the keys yet, but that will be the next thing to happen.
I found Hafiz Azman's article 'How To Make a Rhythm Game' super valuable when I was deciding how to implement time management.

Update attachment

Fixed some small issues with the autolinking implementation

Update attachment

Added device selection and the ability to select your instruments range, as well as refactored the code a bunch.

Update attachment

Added an actual piano! This took a while to implement, but I figured it out in the end!
Next up is device selection and calibration so I can stop relying on hardcoded values, then I'll add audio so that my friend will stop bugging me, then get to work on the gameplay :D

Update attachment

I got input working! This took longer than I thought it would because of some issues with managed-midi, the library I'm using (if you hold down a note while loading the program the whole thing breaks). In this example, it's taking input from a MIDI keyboard, but you can also do it from a virtual piano keyboard. I'll also add computer keyboard support at some point for people who just want to try it out.

logabe
logabe created a project
32d ago

PianoFlow: Piano practice and Rhythm game

Gamify your piano practice by turning it into a rhythm game (i'm not using this as an excuse i sweaarrr)

9 devlogs 0 followers

I replaced the markdown support with a simpler autolinking implementation that's lighter, doesn't have the same vulns, is easier to use, and just generally works better.

Update attachment

I added Markdown support! I used the comrak parser because it had most of the features I wanted. It took a couple of attempts to get the rendering working in a way that wouldn't look super ugly. The solution I have rn is a bit jank, but it works.
(i just realised that due to the way I've been coding it, not having the markdown feature enabled actually opens up a big attack vector. I should probably fix that...)

Update attachment

I added an manager panel that will allow admins to manage their libraries. At the moment, you can invite and remove members to a library.
This was the biggest thing that was missing in allowing Mini Libraries to scale; I had to be involved involved in managing each library. This was fine for testing, but I want other people to be able to create and manage their own libraries without me being involved.

Update attachment
logabe
logabe created a project
48d ago

Mini Libraries: Book sharing platform

Mini Libraries is an online book sharing platform where you can share your copies of books with other people in the same 'libraries' (groups) as you. I started development around year ago but has been left in an unfinished state for the last 6 months. I want to put in some work now and give it the extra spit and polish needed to get it out of perpetual beta.

Mini Libraries: Book sharing platform
1 devlog 0 followers

A few small changes! Added some stuff to communicate to the user when the client is disconnected. Also reverted some stuff with the layout that was causing a bug.

Update attachment

I added support for push notifications, as well as made some changes to make it work a little better on mobile (there's still some jank though). I feel comfortable shipping the program as most of the core features are here. Go check out the demo!

Update attachment

I added a Dockerfile and deployed it to Nest! I'll add notifications next :D

Update attachment

I added a settings menu! I was also going to add notifications but it turns out you need to be in a secure context (meaning HTTPS) so I'll wait until I have a public instance I can test with before I work on that.

Update attachment

Spent several hours trying to deploy the project. I have yet to see success, but I also added a link to the Atom feed.

Update attachment

I added chat history! MiniChat now saves the last n (by default 100) chat messages and system events in a VecDeque that gets sent to the client when they first join. This could also be useful to implement behaviours for if the client's connection gets dropped.

Update attachment

I made this website by half-following the Rails Guide and then extended it to add Atom support!

Update attachment
logabe
logabe created a project
66d ago

WIP Social Media

I don't have a name for this yet, but it's based off a project I made for Railway

2 devlogs 0 followers

Added a bunch of small features! A lobby that's always available, chat scrolling, a new home page, and remembering the last username you used.

Update attachment

I made the chat page look a lot nicer based on the Figma designs and some client feedback. It should be usable on mobile as well!

Update attachment

Used Figma to make some layout designs! I can only upload one, but there's another potential layout

Update attachment

Okay, it's been a while, but I'm feeling like I might as well ship now. I'll probably also need to figure out a way to host the bot, but that can wait a bit...

Update attachment

I ended up going with the second option - using one WS endpoint with the query params. I think this was probably the most elegant design overall.
I've now added a room list that shows all the current rooms. The room names automatically encode special characters, so you can use non-latin characters. It's kinda ugly but that will be the next thing I work on.

Update attachment

Was busy for a week, but I'm back! Implemented the room system as a JSON message that gets sent to the server internally. I'm not sure which of these systems I prefer most... I'll probably mull it over for a little bit.

Update attachment

Changed the system from the last devlog to use one WS endpoint, and get the room code from query parameters. I think I prefer having just one endpoint...
(ignore my bad code)

Update attachment

Added the basics of a multi-room system where each room has it's own WS endpoint /room/roomname/ws. I'm not sure if I want to go with this or using some parameters, either in the http query params or sent other as JSON when you first connect (that's how I'm currently sending username info)

Update attachment

Various small changes. Added some comments to the code and changed some layout stuff.

Update attachment

Added timers to remove a user's editing permissions after seven days and send a warning at six. Also various misc changes

Update attachment

Added a list that keeps track of the people in a room. To do this in a memory-safe way, I used a Mutex, which only allows one thread/task to access memory at a time, and prevents poisoning. The way Rust does this took me a bit to get used to; the Mutex drops access to the data at the end of the current block, so I found I had to { enclose some of my code in it's own block } to get things to work right. I might be doing something wrong here, though.

Update attachment

Switched to using JSON for structured data :)
The Event enum implements Into so it's even more ergonomic than using Strings!

Update attachment

I've got a basic example working! I'm using Axum as a web framework and have pilfered most of the code from the 'chat' example. I understand how most of it works, but I think I should leave some notes for myself.

Update attachment
logabe
logabe created a project
90d ago

MiniChat: Simple web chat in Rust

MiniChat is a chat server that is both lightweight to host and easy to use. There are no accounts, so it can be spun up as an easy way to chat with friends whom you might not be able to message otherwise. Perfect for messaging your friends during class! (use wisely) Features: - Chat history and persistance: The last 100 messages are saved in memory - Autolinking: Links and Images are automatically converted to their HTML representation The chat uses WebSockets for transport and has a Rust backend.

MiniChat: Simple web chat in Rust
19 devlogs 0 followers Shipped

Moved more stuff over to SQLite to make sure everything persists. The last thing I need to do is use display names instead of raw ids, and then test it and ship!

Update attachment

Moved some data storage for the account linking process over to SQLite to prevent data being lost in case of a crash or outage.

Update attachment

Finished the integration with GitHub! You can now tag in another person, which removes your edit access on the project repository and sends an invitation to that person.

Update attachment
logabe
logabe created a project
100d ago

Pass-the-project: Slack-based community game

Pass-the-project is a collaborative coding project taking place in the Hack Club slack. I'm working on a bot that will help facilitate the game. The rules are as follows: 1. People vote on a project and tools 2. The project is hosted on a private GitHub repository 3. One person has up to a week to work on the project 4. Once the person pushes to the repo, they lose edit access but can still view, create issues, etc 5. That person then passes the project onto another person who will be added to the repo Repeat until the project is shipped! The bot has 2 commands: /pass which passes the project onto another person /project which gives info about the current project

Pass-the-project: Slack-based community game
5 devlogs 0 followers Shipped
logabe
logabe joined Summer of Making
103d ago

This was widely regarded as a great move by everyone.