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


Search 65 posts with 32 unique tags


#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.

#1714938699


[ music | core ]

To many “breakcore” songs sound the same, and use the same samples, with the same kind of chops. Same Same Same. The market is over oversaturated.

Breakcore is also a hard to define genre, especial with the new wave of breakcore that is most of the time just DnB. That is also why I use the label ‘core’ on this blog, for me it is a more inclusive label. That way I don’t mislabel tracks but I can still group them by the breakbeat vibe.

It know that the term ‘core’ doesn’t mean anything and that there are a lot of genres ending in ‘core’, but it makes sense in my head and this is my blog. Maybe ‘breakbeat’ would be a better label now I think about it. Ah, it is what it is and I am not going to change it.

Finally something different.

Cover Art

Cover Art

#1714410798


[ music | drain ]

New Bladee album (Cold Visions) is bad, nothing new. More trap style beats, now he just sounds like hyperpop X 83HADES. I’m not going to waste any more words on it.

Cover Art

#1714324368


[ linux ]

It’s that time of the year again. But this time I will swap for real guys, trust me :). Basic Arch install for now, I want to test out Xfce and Hyprland on an old machine first before I make the real swap. This time I didn’t use an Arch installer, I installed it all by myself.

Archlinux neofetch

#1713557458


[ mb_dev ]

We do a little refactoring.

Showing 58 changed files with 406 additions and 352 deletions.

Project structure is now much better, less global var’s etc.

#1713121703


[ rant ]

simple != easy

Golang is simple, which means that its easy to understand.

Running a marathon is simple; you just keep running. But nobody would call it easy.

So why do people call Python easy and simple? Things only seem simple until you need to do something complex. Then the complexity starts to compound.

People need to take complexity more into account when choosing a technology. The amount of magic that is happening always has a cost. You just need to consider if you will pay that cost for a certain project or if you will never run into the downside.

Simple things are not always better, to be clear. But they have their place, and recently I am leaning more towards simpler solutions. They may require more work, but at least I know that I understand most of the things that are happening.

#1712829445


[ music | hardcore ]

Hmmmmm yes, sounds

Cover Art

#1712519722


[ music | electro ]

People are sleeping on WHIPPED CREAM.

Jasiah’s vocal…

Cover Art

Cover Art

#1712417261


[ mb_dev ]

Just added metadata and updated the colour scheme for better contrast. With these two updates completed, I finally have a perfect Lighthouse score.

screenshot of perfect lighthouse score

#1712394774


[ cover_art ]

🔥🔥🔥

PAIN IS GOOD - 1 800 PAIN

cover art PAIN IS GOOD - 1 800 PAIN

#1712090133


[ webdev ]

The datalist element is pretty cool. You can make dropdown inputs that are still editable realy easy. Came in handy today.

<label>
	Choose a flavor:
	<input list="ice-cream-flavors" name="ice-cream-choice" />
</label>

<datalist id="ice-cream-flavors">
  <option value="Chocolate"></option>
  <option value="Coconut"></option>
  <option value="Mint"></option>
  <option value="Strawberry"></option>
  <option value="Vanilla"></option>
</datalist>

Source example: MDN Web Docs

#1711884999


[ mb_dev ]

Today is the first day of summer time and mb handled it correctly. I did not expect it to work correctly because I can’t recall implementing it.

I think the system will break if you change the time zone after the fact. Posts don’t store time zone data, only a Unix timestamp. Just don’t change the time zone I guess.

#1711279188


[ webdev | mb_dev ]

Finally added the RSS feed to mb. Wasn’t to difficult using the encoding/xml module of the standard lib and exactly 100 lines of code. It’s basic but it’s valid and it works. Maybe I will flesh it out if people actually use it.

[Valid RSS]