A bit of a weird post, but I just got a package in the mail and wanted to give a shout out to DragonBox's customer support.

I messed up a pre-order there (pro-tip: if you are moving countries, don't pre-order stuff to the country you are moving away from 😬) so I really needed an emergency address change to a different country.

They were not only quick and helpful, but also super nice.

Also, it feels really good to talk straight to a human instead of going through layers of chat bots and FAQs.

10/10 experience. 🙂

Not sure if this is a thing on other ActivityPub frontends, but one feature that I really like here (and wish Twitter had something similar) is being able to see my actor inbox as a timeline.

It's pretty much posts from people I follow (including comments) plus comments to their posts. In essence, a timeline with just a bit of serendipity from people I don't know.

It feels like a nice middle point between "new posts of people I know" and "top posts from complete strangers".

Today marks my last day in Berlin.

It was a fun little adventure, but all things must come to an end eventually.

It's never easy to say goodbye, but I can say that I'm excited for what comes next. 🙂

João Costa shared 5 months ago

TIL that you can use Scastie with Scala JS and, if one of the expressions returns an Element, it is rendered on the worksheet:

Quick example: https://scastie.scala-lang.org/toqnawY0QrKKwMDcHcAf2A

I need to work on the Minart APIs to make this use case a bit more ergonomic, but this looks pretty cool for demos. 🙂

I've been seeing a lot of discussions in Portugal regarding https://expresso.pt/sociedade/2024-01-11-Exodo-tem-um-impacto-brutal-30-dos-jovens-nascidos-em-Portugal-vivem-fora-do-pais-6b42d39c (article in PT - 30% of Portuguese aged between 15 and 39 are emigrants)

I was a bit curious about this, but apparently the study was not yet released and the closest thing I could find was https://diasporafordevelopment.eu/interactive-map/, which I'm not sure how up to date it is and doesn't seem to provide any tables.

So I just scrapped the data and generated a markdown table, in case someone is curious about this kind of stuff: https://gist.github.com/JD557/22ee5494ce99af696e1fda5747eef18e 🙂

That gist also provides the raw JSON data that I used and a CLI script to generate a CSV, in case you want to do some further analysis.

João Costa shared 5 months ago
João Costa shared 5 months ago

Just came back to Portugal for the holidays.

It was kind of weird leaving the plane, seeing the blue sky and feeling the Sun's warmth.

The last weeks (maybe months?) in Berlin have been so gray that I kind of forgot how good this feels 😄.

Added some fog, ceiling and sky to my raycaster tests, along with a larger map.

Being able to use Tiled as a map editor really helps for stuff like this.

Sorry for the bad video quality, I think the dark colors really mess up the compression.

Assets used (apart from the ones already mentioned in the previous post):

Tiled Tiled

This year marks my 3rd winter in Berlin.

When I moved I thought the worst would be the cold weather, but that's actually pretty manageable. The small days are a pain, however (I had no idea about this "winter blues" thing).

It's kind of hard to explain, but I start to feel kind of tired and unmotivated when the days get shorter. I really need to leave the apartment a bit when there's still sun outside (even if the weather sucks).

It's also kind of bizarre how generalized this seems to be - You have a time of the year where people are gloomier than usual and just know that "it's normal, it's the winter".

FWIW, going to the office and to the gym has been helping quite a bit. If you are in a similar situation and have that option, I recommend trying it.

I do usually enjoy working from home, so this has the weird side effect that I actually go to the office more often in the winter when it's cold, raining and snowing than in the summer. 🙃

I've been trying to use this year's to learn Zig.

It has been an interesting experience so far. It's nice to work with a lower level language once in a while, and Zig does have some very exciting ideas, such as nice safety features along with it being very easy to ensure some properties about the memory allocations (e.g. no heap allocations).

However, I would lie if I said that I enjoyed the experience. I think the project has a bright future, but the ergonomics are lacking a bit, which is to be expected for a young and less mainstream language (namely regarding documentation, stdlib and compiler error messages).

Maybe some things are just not possible to do but, for example, using iterators in Zig really makes me miss Scala iterators. String parsing has also been a huge pain point.

It's not awful by any means, but personally I would be happy to see Scala Native competing with Zig in performance, so that I could use that instead (biased opinion, I know 😜 ).

João Costa shared 6 months ago

This weekend I was playing a bit with raycasting.

There's still quite a lot to do, but I think this could already be the base for something. Maybe I'll pick it up once I have more time.

Base assets:

Stone Pavement Ground Tile OpenGameArt.org
João Costa shared 6 months ago

I've been posting a lot of my experiences with UIs in Scala lately, but I am also amazed at the amount of people that started experiment with native UIs in Scala recently.

It's really cool to see UIs in Scala going beyond HTML applications.

Here are some amazing examples:

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 6 months ago