You are browsing as a guest. Sign up (or log in) to start making projects!

brian

@brian

Joined May 31st, 2026

  • 22Devlogs
  • 2Projects
  • 2Ships
  • 30Votes
somebody who's bored over the summer :]
Open comments for this post

2h 10m 30s logged

It’s been a while but I’m back!

I made huge changes to the overall layout of the library, and decided that…

  • Brush objects are the devices themselves, and will allow you to connect, disconnect, view its state, send/receive BLE commands, etc.
  • OralBClient will only act as a “discovery layer”, which lets you search for new Brush objects and keep track of your connections (like a “management” layer I guess you could call it???)

I finished building the connect/disconnect commands with an optional timeout option for connections, and I moved rssi and macAddress into getters so they’re read directly from the peripheral and update automatically. Had to switch to the @stoprocent/noble fork because the previous one caused issues with discovery in Fedora.

In OralBClient, I added a way to track the brushes and store the connected ones in a Map (so users don’t have to keep track of the Brush objects elsewhere). I also added the option to stop discovery early, and an adapter state check before it starts discovering (so it waits for the Bluetooth adapter to power on first!)

0
0
3
Ship

I made great progress on my personal website by completely transforming the page design, featuring a nicer color scheme, warmer font, improved blog post typography, and many other little changes! I also introduced a new projects page (with a preview on the homepage), and made some big organizational changes in the codebase to follow DRY.

I'm really proud of the new design, as I think it better represents me and is much more welcoming. I also learned that a couple simple color and font changes can have a HUGE impact on the design of your website and its friendliness. I learned a lot from the feedback on my previous ships and I'm excited to present this version of my site!

  • 9 devlogs
  • 15h
  • 13.22x multiplier
  • 197 Stardust
Try project → See source code →
Open comments for this post

1h 21m 49s logged

I spent a while testing out all the functionality on my website (including on mobile devices) and made a variety of minor page fixes!

I also improved the old 404 page to use my new page design.

0
0
6
Open comments for this post

35m 30s logged

I created a project card component and added a featured projects section on the home screen! I also moved all database query functions into dedicated projects.ts and blog.ts modules so they can be reused across the codebase.

0
0
3
Open comments for this post

2h 29m 24s logged

I noticed that as I’ve been adding more pages, the navbar on mobile is becoming more and more crammed, so I created a simple hamburger navigation menu for smaller screens!

Besides that, I added 5-minute caching for projects and blog posts (since database reads are a lil’ slow) using Next.js’ unstable_cache function, and cleaned up the rest of the SVGs across the codebase to their own icon file in components/icons.

Almost ready to ship :D just gonna add a “featured projects” section on the homepage!

0
0
6
Open comments for this post

3h 22m 33s logged

I finished adding a projects page and created a Payload collection so I don’t need to hard code them! I also added Payload email functionality for password resets, cleaned up the environment variable setup, and upgraded all dependencies.

Payload has lacked official support for Next.js v16 for quite some time now, but it’s finally here!!

0
0
1
Open comments for this post

1h 10m 4s logged

Made some big organizational changes! I moved all of the icons in Skills.tsx and constants.tsx (contact links, footer links, etc.) into designated tsx files for reusability.

I also DRY’d out the skills data by assigning it in constants.tsx and mapping over it! Besides that, I just made a couple bug fixes and ran prettier.

Making the projects page next!

0
0
2
Open comments for this post

1h 54m 17s logged

I ditched @tailwindcss/typography and completely transformed the styling of blog posts! Spent the past 2 hours designing custom CSS to pair with Payload’s RichText output.

Super happy with the results. Codeblocks look amazing now! Next step will be fixing the music player and printer modal to have them use our new color scheme.

0
0
2
Open comments for this post

2h 30m logged

I’ve been thinking about the website for a while, and figured there’s just so much wrong with it. The color scheme is incredibly generic and boring, and it seems more like a product landing page than a personal website.

So after a little over 2 hours of experimenting with different hues, and creating custom Tailwind classes to use across the website, I made some big changes! The website looks much more cozy now and features a nice navy blue design with a new font. I also scrapped the old grid background since it’s pretty generic. I’m incredibly happy about the new font and I think it makes the website much more inviting (I found it here)!

Next step will be fixing blog posts since they’re really messy with Tailwind Typography.

0
0
3
Ship

I made massive improvements to my website status system by building a custom web client that allows me to map statuses based on the app I'm using! I also added a printer system to my website which allows users to print out a message of their choice right on my desk.


For me, the most challenging part was definitely the web design (I suck at front-end work...), but I'm really proud of how the client ended up turning out :D

  • 11 devlogs
  • 27h
  • 18.97x multiplier
  • 517 Stardust
Try project → See source code →
Open comments for this post

4h 53m 29s logged

I added a printer section on my website and a modal to enter in the message! I also added filtering to block any inappropriate content using obscenity, rate limiting with Redis to limit each IP address to 1 successful request per 24 hours, and implemented VPN/Proxy checks with proxycheck.io.

Generally I’m strictly against VPN blocking, but unfortunately in my case I think it’s the only effective way to prevent abuse (I want to be able to sleep at night :peefest:).

Besides those changes, I also installed and ran prettier in the repo, and added basic Vercel analytics to see how many page visits I’m getting!

0
0
4
Open comments for this post

3h 19m 2s logged

Finished implementing a printer module in the client to facilitate message printing! It uses Redis to store the messages as well, and the client polls every 30 seconds to pop the values and print them out.

I also made some major Redis command optimizations by using Lua execution for the printer module and a Hash structure for the status. I was able to drastically minimize the amount of commands necessary to sync the status and fetch new printer messages, which is definitely a huge plus considering there’s a monthly command limit on the free plan.

Time to build a messages input box on the website!

0
0
1
Open comments for this post

3h 42m 16s logged

I’ve finally finished with the Settings page! I also made a few more bug fixes, removed the custom fonts (they look worse), made some security improvements for the Electron app (removed sandbox and nodeIntegration), and refactored the onboarding/settings validation and flow. Added a noice fade-in animation on the loading screen too!

I decided against a Devices page since it’s honestly unnecessary. If I really need to see the list of devices, I can just read the Redis status key.

My next idea was adding some cool label printer functionality! I have a shipping label printer and hundreds of unused sticky labels, so I thought it would be cool if I added a message box on my website that would print out these messages right on my desk!

0
0
2
Open comments for this post

42m 26s logged

I finished updating the website to properly parse the status data, and now it displays properly, yay!

The website backend fetches the status key from the Redis database, goes through each record, and sets the status of the device with the lowest priority number (a lower number means higher priority).

0
0
2
Open comments for this post

2h 10m 49s logged

I’ve finished adding the Mappings page! I can now add a new application by its name and customize the status displayed when the app window is in focus.

Next step will be implementing the new status JSON structure into the website itself… so we can actually start using it!

0
0
2
Open comments for this post

2h 6m logged

I’ve made huge changes to the overall project folder structure so the codebase stays organized!

I also added windowless functionality (to keep running in the background), open at login (incl. for Linux), and renamed some functions as well for better clarity :D

0
0
2
Open comments for this post

2h 51m 26s logged

The Status page is finally complete! I finished building the UI and added the main process logic as well to handle manual overrides, invisible mode, and serve live updates to the renderer process every 30 seconds!

I also added the get-windows library to find the currently active window and check if there’s a corresponding mapping (which I’ll be adding next in the Mappings page!).

Installed and ran eslint + prettier as well :)

0
0
4
Open comments for this post

2h 17m 16s logged

Currently working on the Status page of the UI, which will feature an overview of the live status, as well as the option to enter a manual override or appear invisible.

I’ll still need to work on the logic in the main process that checks for open applications to update my status properly.

0
0
5
Loading more…

Followers

Loading…