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

Sabrina

@Sabrina

Joined June 1st, 2026

  • 36Devlogs
  • 7Projects
  • 4Ships
  • 45Votes
THE #1 Beach Bunny fan in the world (don't fact check this, it's true)
Ship

I added 3 new apps to my website!!
1st-ly a guestbook, as most good indie sites should have. I made the api myself and it is running on nest. Please dont spam it,,, but feel free to leave positive messages or constructive criticism there! I WILL read it

2nd-ly a visitor counter + flag collector using flagcounter.com Everytime someone visits my site and loads the image it will count the user and we can all see how far around the globe my website has reached! (Can we get every single country?? 👀)

3rd-ly a countdown until android becomes a lockdown platform in 2027, provided by keepandroidopen.org

Also along the way I applied and was accepted into many webrings. At this moment im in the following:

  • transing the internet
  • hotline webring
  • html energy webring
  • cd ring
  • vocaloid webring
  • the no ai webring
  • wii ring
    I’m probably gonna reorganize the ordering of the webring since it is currently in the order i joined, and not in the order of which i like the most

if you know of a swedish webring (that isn’t the eurowebring) or a swedish speaking/learning webring let me know i want to join!! Or we can start one, either is fine!!

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

35m 3s logged

I was added to the vocaloid webring, no ai webring, and the wii ring!! I also added my 3rd new app (for webos 2) where it shows the countdown until android become a lock-down platform
I also added a visitor count to see who all joins, and to collect flags for each new country that visits, currently im at 22 w/ the rankings being the US, France, Germany, Argentina, China, and Switzerland, then the other 16 flags have only appeared once

Thats about it for right now, hopefully ill add some more cool information later, byeeee

0
0
19
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
8
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
9
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
6
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
103
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
9
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
40
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 →
Loading more…

Followers

Loading…