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

Sabrina

@Sabrina

Joined June 1st, 2026

  • 35Devlogs
  • 7Projects
  • 3Ships
  • 30Votes
THE #1 Beach Bunny fan in the world (don't fact check this, it's true)
Open comments for this post

3h 13m 3s logged

I organized my webrings into joined and applied! Currently im in 5 atm, transing the internet, hotline ring, html energy, cdring, and the vocaloid webring

I also created a guestbook completely from scratch!
Source code at /guestbook
I had to add 2 antibot measures
#1) a honeypot field. a field that humans cannot see. off screen very far away, but if a webscraper sees it, it will fill it out and then my server will see that and ignore it
#2) human only answerable question. I made the question be a part of the website that everyone visiting will find out, and so answering this question will be lightwork for anyone with at least 10 braincells, but a web scraper will (hopefully) have no clue

Oh also my guestbook sends a discord message via a webhook everytime someone writes in it, so I can see every new entry w/o needing to look at my website every hour

next i kinda to add a live chat. rtc or something? It’ll be like a guestbook only I can respond to people to make feel more connected

0
0
4
Open comments for this post

1h 40m 18s logged

I finally made a button!
I added a robotx.txt and ai.txt to block web scrapers for LLMs
I also applied to all the webrings i had previously, and added new webrings i found!
Feel free to comment your website and i’ll check it out, and maybe add you to my net neighbors
Next I want to make a guest book (from scratch?)

The new webrings i added were:
hotline webring
DS Ring
DroidRing
IndieRing
Computering Webring
HTML Energy Webring
Webmaster Webring

0
0
6
Open comments for this post

1h 50m 21s logged

Terminal Done!

I have added a recreation of the original terminal interface, where you
type HELLO answer questions like your student number, problem number,
and then you can write the program in the terminal, run it, save it, etc!

Readme

I also created the readme

0
0
5
Open comments for this post

3h 24m 26s logged

Basically finished

I added a bunch of the orignal error messages from a 1964 manual, and now it is feature complete (minus DIM and DEF)

Next

What i’d like to do next is create the terminal interface as described in this manual, on pages 16-18.
It would be cool to say HELLO and then type in a user id, program id, write the program and save it, and even run it. I think it would feel very fitting!

0
0
3
Open comments for this post

40m 34s logged

I implemented the skipping FOR loops if they are invalid. ex for i = 0 to 10 step -1
I also created a few test programs and ran then to see if they worked (they did)

Here is my pythagarian triangle finder:

10 FOR A = 1 TO 50 STEP 1
20 FOR B = 1 TO 50 STEP 1
30 LET C2 = A*A + B*B
40 LET C = SQR(C2)
50 IF INT(C)=C THEN 70
60 GOTO 80
70 GOSUB 500
80 NEXT B
90 NEXT A
100 STOP

500 PRINT "PYTHAGARIAN TRIANGLE FOUND";A;B;C
510 RETURN

1000 STOP

I’m highkey a lazy bum and dont want to implement DEF and DIM for my own sanity’s sake, and making better debug screens? goodness no! I’ll be making an interface to type in basic programs now

0
0
2
Open comments for this post

3h 11m 38s logged

It is like 90% complete, and like works REALLY well

Lexer

I updated this a little bit. I changed how the functions are called so instead of doing execute the interpreter calls __str__ on it and it will return the python function to do that operation inside of eval.
As well I updated the parsing so you can put as many spaces or as little between operations as you want and it will still read just fine. like before you could only do ( A * 3 ) / 5 but now things like (A*3)/ 5 work just fine!
I also made strings get read in entirely
Also print statements now can use semicolons to seperate parts of a message on 1 line. like you can do
10 PRINT "A = "; A; " B = ";B
and it will print out “A = {A} B = {B}” with {A} and {B} being replaced with their actual runtime values!

Interpreter

I added some error catching and the global DATA array so the DATA statement can put its data in there
It now catches when you try to NEXT from a for loop that doesnt exist
also it catches when you try to RETURN from a subroutine when you never called a subroutine, as well as making sure that setting the program counter, via things like IF/THEN and GOTO are an actual line defined in the program

Up Next

I want to finish making sure all the functions and statements work as intended, as well as implementing DEF and DIM
I also REALLY want to get more details error reports, by also giving the line number where an error occurred, possible typo/solutions, etc

0
0
2
Open comments for this post

2h 42m 49s logged

Interpreter is basically done, I’ve only got to implement data def dim and read instructions.
I’m highkey fearing making def since my current syntax parsing is fucking abysmal and this will only make it worse.
I’ve also got to work on reading strings in for print statement and highkey most of my syntax reading in ngl
But it does work for some programs like this Fibonacci sequence generator I made

10 LET A = 0
20 LET B = 1
30 LET C = A + B
40 IF C > 144 THEN 100
50 PRINT C
60 LET A = B
70 LET B = C
80 GOTO 30
100 STOP
0
0
2
Open comments for this post

2h 12m 41s logged

Lexer

I’ve got the lexer basically done, maybe a few tweaks a bit later but for the most part i can take in each line of Dartmouth Original BASIC and turn it into a list of lines and symbols to then parse

Interpreter

Currently it keeps track of all the variables and the program counter and runs through each line of BASIC executing it. Atm it looks fine, I just need to create and add the execute function to all of the BASIC statements like STOP, PRINT, IF, and LET

Pratt Parser

Currently I am working on the a pratt parser to determine the value of math operations for PRINT and LET and possible other stuff

0
0
4
Open comments for this post

7h 5m 31s logged

YouTube Metadata changes

Getting the metadata for each youtube video has proven hard. yt-dlp + youtube_transcript_api used to be fine but as i starting embedding many videos i got rate limited and ip banned from transcript (hopefully lifted within 2 days, i watch yt w/ captions on)
So i switched to meta_yt and that worked so much better but eventually i got rate limited again. I have now finally swapped to the official google API so i can get a bunch of metadata from videos quickly, but no captions from it since it costs 200 quota credits (I have a max of 10,000 a day)

Actual Algorithm

I have currently saved 501 video embeddings to my database and have generated a user embedding for me. 12 out of the ~378 values for that embedding is in the image below.
For each video you watch your embedding changes like so. The video’s embedding gets multiplied by 0.05 and by the percentage of the video you watched (0-1). Then that gets added to your user embedding that was multiplied by 0.95.
The formula looks like this:
userEmbedding = (userEmbedding * 0.95) + (videoEmbedding * 0.05 * watchPercentage)

Up Next:

Next I want to implement FAISS, and the cosine function to compare similarity of vectors. Then using that I want to try selecting some videos I am, and am not intrested in and see how well it knows me.
After it works well enough I want to either make myself a browser extention or website to serve me videos.
I also gotta make some way to find new videos (popularity, trending, what else?) and then embed them and store it

0
0
4
Open comments for this post

3h 40m 5s logged

I made most of the parts I need to get this working

YouTube History

YouTube, in their infinite wisdom, does not expose an api endpoint for your watch history w/o using google takeout (which takes forever)
So I make a quick firefox extention to read my watched videos and time watched and then save it to a json file for later

YouTube Video Info

I am using yt_dlp and youtube_transcript_api to take a YT video’s ID and then retrieve the following info:

  • title
  • description
  • duration
  • categories
  • tags
  • was_live
  • transcript

Embedding Model

I’ve downloaded and tested the BAAI/bge-small-en-v1.5 text transformer to generate text embeddings for any text I want. The goal is that users have an embedding for things they like, and each video has an embedding based on it’s title, description, category, tags, and the transcript.
To recomend videos I can see how similar a video’s embedding is to the user’s embedding, and then rank them. I can then give them choices based on that ranking.
Watching and liking videos will nudge the user’s embedding towards that video’s embedding, while leaving early or disliking nudges it away.

Database

I’m using a Lightning Memory-Mapped Database (LMDB) w/ 2 tables, one for all the user’s embeddings, and the other for all the video’s embeddings.
I am going to try and use FAISS for the similary search from the user embedding to all the videos

Whats next?

I need to do a few things, mostly just connecting each of these systems.
First of all I need to go through my entire watch history and get the info for them, then embed them, and then store it in my database. Also repeating this process with any other video I can find on YouTube

I also need to connect the system to take my user embedding, and get the most similar videos and then return those.

I would also like to make a custom UI/homepage for my algorithm.

0
0
4
Open comments for this post

1h 36m logged

Case work

I worked, and pretty much finished the case for my MP3 player!!
I also added 2 more screw standoffs in the pcb and then added the cutouts into my case.
Cutouts for usb c, vol up, vol down, screws, screen, and spinny wheel

okay thats about it for this devlog love yall byeee

0
0
11
Open comments for this post

1h 42m logged

PCB Layout & Routing done

I have finished routing the pcb!
I had to put the volume buttons on the side under the screen and resistors. but drc complains that it is in the courtyard of the sceen. I, however, dont care and will do it anyways since the header pins for the screen will be trimmed down after soldering.

Next

I will work on making a transparent PETG case for this, then i will work on firmware after I built it!

0
0
98
Open comments for this post

2h 35m 24s logged

Schematic done

I worked on the entire schematic for the mp3 player.
I used:
a Xiao ESP32 S3 Plus from seeedstudio as the mcu
a 2.8in ili9341 tft color screen
a MAX17048G+T10 to detect the lipo battery percentage
an AO3407A P-channel mosfet to seperate the peripheral’s power from the esp32’s
a rotary encoder for navigation and 2 push buttons for volume control
a MAX98357A to amplify the audio from the esp32 to drive a 8ohm 3W speaker
For a lipo i’ll probably use like a 2000 or 3000 mAh one

Next

Next i will work on placing the parts into a pcb and then routing it

0
0
8
Ship

I made a 1920x1080 pixel canvas that is synced with everyone else online!
I'm particularly proud of the settings menu when you rigth click since i had to prevent the default thing and then figure out how to recreate the menu via divs and stuff. my favorite aspect of it is making it disappear if your mouse leaves it's area

Features:
- You can draw
- If you right click you can change settings like brush size, color, and if youre using a marker or pencil
- Ctrl+Z to undo a stroke, or use the settings menu to click the undo button
- Your drawing and every elses are synced together

  • 2 devlogs
  • 3h
  • 12.02x multiplier
  • 40 Stardust
Try project → See source code →
Open comments for this post

1h 14m logged

I made the server and it gets each time the client adds or removes their canvas stroke, and then it syncs your strokes with everyone else!

1
0
39
Open comments for this post

2h 5m 33s logged

ive got the entire client working! with a custom right click menu and everything. plus ctrl+z support

Now ive gotta work on:

  • Server websocket
  • Client sending their drawings
  • Server syncing other clients drawings to each other
0
0
23
Ship

I created a lossless text compression algorithm that uses an AI to guess which letter should come next!
My project works best on the latin alphabet, and specifically english text! Even better with minimal punctuation! It works best with this set of characters: a-z, A-Z, 0-9, and the space

Two things were challenging. First was getting even getting a model to train, I had to followed a tutorial on tensorflow, but after that google colab trained like there was no tomorrow. The second thing was making the AI deterministic and finding an optimal way to compress it.
Initially, I had the ability to set seeds and then i would compress it many many many times over again with different seeds to see which one was optimal. I eventually changed the entire format and how it worked. I made it 100% deterministic and then stored the top 11 results instead of just the top result.
I'm proud that in certain cases my compression beat huffman coding by a few bytes. in like 90% of the cases though I am consistently like 1-10 bytes more inflated than huffman coding. But my decoder works on all strings, but for huffman coding you need the table as well, and the optimal one changes.

  • 10 devlogs
  • 20h
  • 18.19x multiplier
  • 360 Stardust
Try project → See source code →
Open comments for this post

2h 2m 32s logged

I finished the website and the API! I added a mode to stream the output of the decompression so you can watch it happen in real time.
I also made a bit writer class to clean up the compress function. I was also gonan stream that but it was gonna be a little weird since i reverse all the bytes at the end and modify the head which wouldve been in the start byte.
But I have deployed the website to “https://llm-text-compression.netlify.app/” and I have deployed the API to nest @ “https://aicompressapi.sabrina.hackclub.app//compress
I shall now ship it <3
well i need a readme.md also so in like 10 mins

0
0
5
Open comments for this post

5h 11m 35s logged

I added support for longer utf-8 characters which had me rewrite a little bit of the compression and decompression parts. It inflated the size a little bit but i’d say its manageable right now.
I also started working on an API and website so its easy for people to vote. You can input hex bytes or text to compress or decompress.
I also wrote a lot about how the compression and decompression algorithm works!

0
0
4
Loading more…

Followers

Loading…