https://pine32.be - © pine32.be 2025
Welcome! - 77 total posts. [RSS]
A funny little cycle. [LATEST]


Search 77 posts with 36 unique tags


#1726662585


[ dev | corap ]

Time to rewrite Corap finally, starting with the scheduler. The current docker images is more then 1 GB. Going to remove a lot of dependencies. Also going to rewrite the fronted, learned a lot about Golang sins starting that project.

#1724482570


[ photography ]
sqr_dump_1_1 sqr_dump_1_2 sqr_dump_1_3 sqr_dump_1_4

sqr_dump_2!! Found some nice older photo’s while making backups. Wasn’t soon-ish like I said but soon enough.

#1723758927


[ music | hiphop ]

Please forgive because I have zyned, and will zyn again

Cover Art

#1723020840


New logo dropped!!

#1722452920


[ golang ]

Templ is now a recognized language on GitHub. Lets fucking Gooooo. Still the best HTML templating langue I have used. Django is also pretty good though, but not as good or as fast.

temple github screenshot

#1722283789


[ mb_dev ]

So… this regex broke my site… Because it is a ‘Youtube URL’ but is has no ID so it breaks things and panics. I should really learn regex. But not now, hotfix for the win.

faulty regex screenshot

#1721423976


[ music | core ]

Pathetic

Cover Art

I like how all this artists cover arts are different levels of deranged.

#1720948971


[ dev | rant ]

I am officially done with ORM’s. My latest experiment was ent, a code gen based ORM for Golang. Works fine, I like the API, and then you want to do something slightly complex and it just doesn’t work. I wanted a many to many with extra data in the join table, so for so good, this did work. Until I wanted to make it not unique. I needed this because I wanted to add one track multiple times to a playlist, in my current project. But this was not allowed, the codegen would not build. Other people have the same issue but no solution is known. So my solution is to rewrite my code again, this time with pgx. I also have tried and used sqlc in some projects but it won’t scale for my current project. But I do like it a lot for smaller projects, like this blog uses it for example.

I have tried a lot of ORM’s over the year but I am finally done, not a chance. They are cool great until they are not, then they are just a pain.

#1720600927


[ photography ]
sqr_dump_1_1 sqr_dump_1_2 sqr_dump_1_3 sqr_dump_1_4

I have taken a liking to square photo recently. All photo are quickly taken in the moment (with a shitty phone) and later edited and reframed. Just don’t look to close.

More to come, soon-ish.

#1720473853


[ music | dark_trap ]

Not a sound from the crowd when the heat come

Cover Art

#1720389426


[ webdev ]

Spent the last 2 weeks scraping supermarkets for a vacation job and the average website is hot garbage. One website pulled the location data of all stores in all countries (1000+ stores) to show 1 marker on a small map. The other had over 50 deep HTML elements. Not to speak of all the badly formatted data that I had to parse (including invalid JSON). Just when you think you’ve seen it all they come up with some more BS. I am going to explode.

#1719641212


[ music | dark_trap ]

New album dropped!!

The Distortion That Creates Them - Istasha

Cover Art

#1719158831


[ webdev | rant ]

Write your own auth!!

Everybody should write there own authentication at least once. I am currently writing a session based authentication system for one of my upcoming projects. It forced me to learn all parts of system. And once you’ve done it, authentication is no longer as scary and complicated as it might otherwise seem. Yes, it could be a vulnerability, but so can many things in your application.

#1718867743


[ photography ]

This photo was taken with Open Camera and has not been edited in any way (except cropping). Open Camera uses almost no post-processing, this in combination with the worst settings you can imagine (max ISO, min shutter speed etc.) can give some funky effects. Also, I made my own LED driver and it shows.

Glitchy picture of a laptop

#1718647739


[ webdev ]

Finally updated my personal website/blog, pine32.be. It is finally in a state that I don’t hate. I Rewrote it in Zola, before that is was written in Hugo. Both are static site generators but after trying both I preferer Zola. It is simpler but still feels more powerful, not to mention that it is written in Rust.

I am currently happy with both the layout and the content. I don’t think I will change the layout much in the future. I do want to add some more longer blogs. We’ll see if I actually do it.

#1718384056


A bit late but happy pride.

non binary pride poster

Credit: Mx. Morgan

#1718144987


[ music | electro_swing ]

Parov Stelar is absolutely timeless.

Cover Art

The whole album is great, especially part 1.

#1717783312


[ c | lisp | BYOWL ]

Finished the Build Your Own Lisp book and already added some extra features. There are still lots of extra’s I want to add to the langue. I also really need to add some docs and examples, and maybe even tests.

The language is quite capable especially with the prelude that is embedded into to it. It even has things like switch statements, completely implemented in lzp. Lisps are really programmable programming languages.

(fun {day-name x} {
  case x
    {0 "Monday"}
    {1 "Tuesday"}
    {2 "Wednesday"}
    {3 "Thursday"}
    {4 "Friday"}
    {5 "Saturday"}
    {6 "Sunday"}
})
(print (day-name 4))

> "Friday" 

#1717426070


[ music | hyperpop ]

Apparently hyperpop is quite big in France

Cover Art

J’ai des traces sur le corps, qui sait?

#1716911837


[ c | lisp | BYOWL ]

Just finished chapter 13, which added flow control. Recursive functions are now possible like one that calculates the Fibonacci sequence. It is not that fast, even compared to Python but at least it works.

lzp> def {fib} (\ {n} {if (<= n 1) {n} {+ (fib (- n 1)) (fib (- n 2))}})
()
lzp> fib 25
75025

#1716581850


[ c | lisp | BYOWL ]

Almost done with chapter 11 of Build Your Own Lisp and I have finally variables (that are immutable actually) and you can do some funky stuff with them. This is maybe very basic for any lisp but I have never used a lisp.

lzp> def {arglist} {a b x y}
()   
lzp> arglist
{a b x y}
lzp> def arglist 1 2 3 4
()   
lzp> list a b x y
{1 2 3 4}

#1716490138


[ music | selfhosted ]

Another reason to host your own music, sometimes albums on Spotify are just missing a track. Like the example below from Crystal Castles. If you self-host it with Navidrome, for example, you can put whatever you want on it, whether it has been removed for legal reasons (often sample licensing) or it is unreleased. Very annoying when Spotify doesn’t even tell you that a track is missing, especially when they are such bangers.

Kept by Crystal Castles on Amnesty (I)

Side note. A great feature of Navidrome, I could just download this track with the format and bitrate I want, 320kbps mp3 in this case. De server just transcodes it on the fly for smaller download sizes. I have this track in FLAC but that file is more then 30MB, way to much to post here.

#1716107769


[ music ]

I am try a new thing for my music. Making a playlist of 50 tracks each month. I hope this will be better organized the my current setup. I am still planning on automating music sorting with AI though. Shout out to ii* for the idea.

spotify playlist sceenshot

#1715841763


[ c | lisp | BYOWL ]

Finally learning some C. I am following Build Your Own Lisp by Daniel Holden. The final code should only be about 1000 lines so it’s a small project but still a great way to learn C. I’m only on chapter 7 of 16, but so far I’d recommend it.

#1715288892


[ mb_dev | webdev ]

Finally added cache busting to mb. I should have done this long before but I only learned this technique recently. For some reason I never wondered how bigger sites did this.

For those who don’t know what cache busting is. It’s a technique used to force a web browser to download the latest version of a static file (css, img, …) instead of using a cached version. This is done by making every version of a file have a different and unique name, so the browser won’t recognize the updated file and will fetch it from the server. I have done this by adding a hash of the file to the filename, for example main-ad5d104a4a86.css.

With every version being a unique file we can update the Cache-Control header.

Cache-Control: public, max-age=31536000, immutable

This the most aggressive caching that you can configure, it tells the browser that this file will never change and that it will never need to refetch it from the server. This could be a problem for normal files but this is perfect for this usecase because we have control of the clients cache from the server.

Normally these hashes would be added at build/bundle time. But Golang doesn’t have these options so I did it at start-up of the server. Luckily Golang is very fast so it didn’t add any time to the start up (1-2 ms). The implementation works better then expected.

The perfectionist within me did try it with code-gen and it did work, see commit. But it didn’t feel clean or maintainable and was drifting from the goal of simplicity of this project, so I decided to scrap it.