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

Brandt

@Brandt

Joined July 4th, 2026

  • 12Devlogs
  • 5Projects
  • 3Ships
  • 19Votes
Open comments for this post

3h 52m 5s logged

I made a couple improvements to the current system that caches site categorisation locally. Previously, it would simply keep categorisation valid for 30 minutes, then invalidate it and require another request to the server. Now, it instead runs on a loop that, every 10 minutes, sends all its cached site IDs (which is just an internal incremental ID for each hostname listing) to the server and gets back a list of versions, which it then checks against its own versions and updates only the ones it needs. Currently rewriters are not implemented, but they will be bundled in this system.

I wrote a simple test in Ruby to test this functionality and modified the extension code to act differently when in dev mode vs a production build, which helped a lot in verifying that it was working correctly and finding bugs. It was pretty annoying to make (I probably should’ve just used Python or JS, not sure why I didn’t) and is pretty buggy itself (it doesn’t properly stop the backend).

I also did a whole lot of planning. I made a flowchart attempting to detail how the whole system will work and wrote a MD file to plan out how the actual database will be stored. One thing I still need to decide is whether to use MariaDB or PostgreSQL.

0
0
10
Open comments for this post

1h 42m 56s logged

I connected the extension to the dummy backend, so it now blocks sites according to the database. It also saves a small local cache (resets on restarts) so it isn’t constantly pinging the DB for sites it’s already accessed. There was a pretty confusing hiccup where just typing something in the URL bar would close the tab before you loaded anything, but I eventually realised it was actually the search completion API (since I had blocked Google for testing, it was auto-blocking it).

I also made a simple blockpage so it doesn’t just close the page with no explanation.

AI disclosure: AI was used to help me 1. realize I needed to put the blockpage files as an entrypoint and not in the public/ folder and 2. to fix issues with CSS because it’s an absolute nightmare

0
0
3
Ship Changes requested

I made a short game, partially inspired by Cobb Can Move, where as you progress the platform gets smaller and more modifiers are added! I speedran making this and was barely able to submit it to GMTK.

  • 4 devlogs
  • 3h
Try project → See source code →
Open comments for this post

40m 40s logged

I finished making the game only a few minutes before the GMTK deadline. It’s kinda buggy but I think that’s reasonable considering this was made in 3 hours. I’ve implemented every modifier (lasers were extremely stressful because they were the most complicated and I did them last, I copied a lot of code from the falling squares) and added a win screen.

1
0
8
Open comments for this post

27m 44s logged

Implemented the raining squares modifier! Was though because some flaw in my maths was literally trying to spawn 20000000 squares every frame and it took me like 15 mins to figure out how to fix it

0
0
13
Open comments for this post

35m 58s logged

A bunch of changes, the game now actually feels kinda fun even though it isn’t done!

First of all, I gave some visual life to the game - the platform is a bright white and I made it slightly transparent so you can always see the ball, and the ball is a nice blue textured with noise.

You can now actually die, the timer was changed to 15s since 10s felt too short, and a bunch of modifiers were added (but not yet implemented).

0
0
4
Open comments for this post

1h 9m 56s logged

The basic system of my game is done. It’s not really playable or fun at all tbh, but it mostly works. I made a global script that holds data about the level, and a screen that uses timers to reveal the level number, the platform size, and any modifiers (which will be added later)

The main scene uses another timer to count down from 10 and goes to the next level after that. Currently there is no way to die, but that will be changed.

There’s also a weird bug where if you rotate too fast the ball clips through the platform. I think it’s because the rotation doesn’t automatically translate over to physics, and to fix that I’d probably have to do a bunch of complicated maths so I’m just gonna ask AI for that but everything else has been made by me

0
0
3
Open comments for this post

44m 3s logged

Browser extension view improved and some dummy implementation added

  • Slightly improved how light mode looks, since it looked kinda gross before
  • Made some CSS tweaks so it renders properly on Chromium derivatives (it was rendering very thin)
  • Made a basic listener that closes pages with ‘test’ in the URL
0
0
3
Ship

I finished making Slickify, a Slack bot that adds silly modifiers to your messages!

/slickify-ping: Simple ping command

/slickify-slickify: Adds 😎s in between words in your message

/slickify-smallify: Shrinks all the characters in your message to the best of its ability (due to Unicode limitations it’s not entirely possible)

Try project → See source code →
Open comments for this post

2h 43m 26s logged

Made an extension base using WXT + Vue + Tailwind, and a logo to go along with it!

The light mode version looks kinda garbage tbh but the light mode version looks really good I think! It doesn’t have like any functionality at all, it’s mainly just supposed to serve as a basic view so the extension can be there transparently and so it can be clear what it does.

The logo was made in Photopea, it’s a roughleaf dogwood leaf with the colors of heavenly bamboo. Timelapse: https://lapse.hackclub.com/timelapse/uMRvG-kQMmep

AI was used a bit to help me configure WXT and to fix some visibility issues I had with CSS (the logo wasn’t showing up on dark mode) but everything else was made by me.

0
0
3
Open comments for this post

20m 54s logged

Silly Slack bot with message modifiers is done!

/slickify-slickify (would just be /slickify but I shall follow the will of the guide) just adds 😎s between each word in the message by splitting it up into an array and prepending the emoji

/slickify-smallify shrinks your message to the best of its abilities by replacing each character according to a predefined array, but due to limitations in Unicode it can’t shrink a lot of things

0
0
6
Ship Pending review

2 hours of coding and I’m fully done with my first browser extension! I mostly made this to teach myself how to make extensions for both Chromium and Firefox (which are actually extremely similar, good to know!)

All it does is listen for when a new YouTube tab is opened, checks how many you already have open, and closes it if there are too many. It also uses the storage API to save the user preference of how many they can have open at a time. Hopefully this helps to stop someone’s (and my) future unhealthy binging session.

Making this was basically a sequence of copying generic code from Chrome’s docs, making some slight tweaks by looking at docs, rinse and repeat. AI was occasionally used when debugging the insanely vague error messages JS gives.

  • 1 devlog
  • 2h
Try project → See source code →
Open comments for this post

2h 2m 1s logged

2 hours of coding and I’m fully done with my first browser extension!
I mostly made this to teach myself how to make extensions for both
Chromium and Firefox (which are actually extremely similar, good to
know!)
All it does is listen for when a new YouTube tab is opened, checks
how many you already have open, and closes it if there are too many. It
also uses the storage API to save the user preference of how many they
can have open at a time. Hopefully this helps to stop someone’s (and my)
future unhealthy binging session.
Making this was basically a sequence of copying generic code from
Chrome’s docs, making some slight tweaks by looking at docs, rinse and
repeat. AI was occasionally used when debugging the insanely vague error
messages JS gives.

1
0
7
Open comments for this post

2h 7m 2s logged

Made a super simple dummy backend for my web filter using Fastify + SQLite. It just stores whether a site should be allowed, denied or rewritten, and can grab a site’s rewrite script (which is just hardcoded for now)

0
0
15

Followers

Loading…