Playing around with some custom color schemes.

I know this is super cheesy, but I just had to do it 😜 (including some post processing effects).

Also, there's something particularly comfy about browsing in full screen. Not sure if it's the lack of distracting images or how fast the pages load, but I kind of like it. There's definitely a lack of content, though.


I was just playing around with the Gopher protocol and I think I got a new toy project. 😄

This one might take a while to get into a nice state, though (I've been hiding some InterIm/Minart limitations under the rug, and they are quite the problem here). But I think it would be a nice way to validate that InterIm works.

Also, since Gopher is a super simple protocol (it's trivial to implement with raw sockets), I can actually run this in Scala Native with no issues

João Costa shared 8 months ago

As promised, here it is!

Späti, a store where you can get all your favorite Coursier packages.

The project is not yet published on the Coursier repo, but you can try it out with cs launch eu.joaocosta:spaeti_3:latest.release -M eu.joaocosta.spaeti.main

⚠️ Please be aware that this is a very early prototype and will probably have a lot of issues. Use at your own risk. ⚠️

I've been picking up IterIm again past two weeks (mostly writing some dummy UIs and fixing bugs).

Today I worked on a for Coursier, the application/artifact manager.

It's nothing too advanced, but I'll give it some more polish and then see if it's worth releasing a demo.

Who knows, maybe someone will find it useful? 🤷

Once in a while, I love to play some old-school-style shooters. Levels are usually short and sweet, and there's not much of a story, so even if I stop playing for a while I can pick them back up without any issue.

However, maybe it's my nostalgia goggles, but I'm starting to feel like a lot of the new games in the genre have way too many enemies spawning out of thin air (especially on backtracking is required), which feels kind of boring and uninspired, IMO.

I think it was OK in "Doom (2016)", but "Prodeus" levels are starting to annoy me and I quit "Wrath: Aeon of Ruin" because I couldn't take that anymore (this was during the early access, I think things are a bit more balanced now).

And the thing is, I don't remember Doom, Quake and even DN3D having much of that! It was mostly monster closets, IIRC (which don't annoy me nearly as much). So I wonder where the inspiration for this comes from.

João Costa shared 8 months ago

Finally took some time to convert my Neovim config to Lua.

I wouldn't say that it looks much better (a lot of it was just rewriting set foo to = true, set g:bar to = true, ...), but at least it was a nice opportunity to replace some convoluted functions with plugins (because I sure as well wasn't going to port that 😬 )

João Costa shared 8 months ago

I wanted to play a bit more with transparencies on a more game-like scenario, so I did a very small side scroller demo like a space shooter intro segment where the planet is being destroyed.

I think it turned out quite nice, almost looks like a real game.😛

Also, I recently played the Europa demo, and that made me really want to do something with a fade to white... I use too much fade to black.



It's been a long time since the original announcement, but I'm quite hyped to see that Retro-bit finally released their Saturn Pro Controller.

Yes, it looks a bit cramped, but I think it's the only controller in the market with 6 face buttons, 4 shoulder buttons and 2 analog sticks (the Duke comes close, but only has 2 shoulder buttons).

This should work pretty well as a controller that works with (almost) all retro games. So even if it's not as comfortable, it still sounds like a great pick.🙂

Sharing in case someone else was also looking for something like this.

Took some time (mostly on the plane) to try follow 's "An intro to Flow Fields in Scala".

Not exactly the same - I couldn't get my Perlin noise implementation to look good and I added some bloom - but I think it's still in the same spirit.

JS Demo:


Flow Fields Demo

I was just reading some HN comments regarding rLCDs as an alternative to e-ink displays for desktop computers.

It might be a good alternative, and I'm sure that the technology has advanced a lot in the last 25 years, but I feel like I'm in a bizarro alternate dimension where everyone is touting the GameBoy screen as the next big thing in display technology, and backlit LCDs are the awful thing of the past. 😄

João Costa shared 9 months ago

An problem that has been bothering me for the some months now: The MyVodafone app has not been adjusted for inflation (at least in Portugal).

Comparing the "Yorn" phone plans from 2015/2018/2021/2023:

  • 2015: €1.80/wk (~€7/month), €2.35/wk (~€9/month), €3.90/wk (~16€/month)
  • 2018: €2.25/wk (~€9/month), €3.99/wk (~16€/month)
  • 2021: €2.75/wk (~€11/month), €3.99/wk (~16€/month), €4.99/wk (~20€/month)
  • 2023: €2.95/wk (~€12/month), €4.10/wk (~16€/month), €5.30/wk (~21€/month), €6.35/wk (~25€/month)

Meanwhile, the payment options are still €5/€10/€15 - which were OK for ~2015 prices, but now pretty much all plans require you to charge a custom amount.

I wonder if this is an oversight or if there's some fear that changing the values will make more users aware of the price changes.🤔

João Costa shared 10 months ago

Just moved this server from Contabo to Hetzner.

I've been having quite some technical problems lately (which might have been my fault), but this time it felt particularly bad:

  • Rebooting the instance from the UI didn't fix the problem
  • I couldn't connect to the machine via SSH or VNC
  • The "rescue" option didn't work (I still couldn't connect to the machine with the rescue image running)

I contacted support which, to their credit, responded in a timely manner, and apparently they just rebooted the machine and things just stated working. 🤷

So, overall I think their offer might be pretty good if you don't need uptime guarantees (e.g. if you just want to host a minecraft server or something), but I'm not sure if I can keep trusting it to host this blog.

Either way, I'm now on a smaller instance (since Hetzner is a bit more expensive), so maybe things will blow up... Hopefully not🤞

Took a quick break from InterIm development to work on Minart.

Finally got transparencies to work, and the performance doesn't seem that bad. I can get multiple moving particles on the screen with no problems.🙂

To be honest, I picked this up now because I spent way too much time searching for bitmap fonts without transparency for my InterIm demos. That's a thing of the past now.


This weekend I was playing around with InterIm to try out some new features (asRefs macro) and some old ones that were not really tested (custom render ops), so I decided to build a drum machine! 🎵

The API could still use some improvements, but this is getting to an almost usable state. 🙂

Font: Spleen by Frederic Cambus ( Drum Samples: Free Pipe Pack by Goldbaby (

404 error
João Costa shared 11 months ago