Let's go! 🚀🚀🎉
«We really cannot stress enough how impressed we are with Scala Center and Virtus' work on this front. Scala Native 0.5 is quite the triumph, and Cats Effect 3.7 is the proof. Going forward, you should essentially expect rough parity between scheduling functionality on JVM and LLVM, with JavaScript now being the unusual one (due to its single-threaded nature).»
https://github.com/typelevel/cats-effect/releases/tag/v3.7.0-RC1
TRMNL X is here
The EU is making a very bad mistake here.
The EU is developing an app for age verification that can be used by many other applications as a legal way of ensuring that a user is at least 18 before accessing some protected content.
The problem is here:
The current release provides only basic functionality, with several key features to be introduced in future versions, including:
- App and device verification based on Google Play Integrity API and Apple App Attestation
- Additional issuance methods beyond the currently implemented eID based method.
What does it mean that it relies on the Google Play Integrity API?
Put simply, that:
Any Android device not certified by Google will not be able to run the app. Do you use /e/OS (which is a European fork of Android btw), GrapheneOS, LineageOS or any other open-source fork of Android? Sorry, no age verification for you, which will mean that you’ll probably be locked out of many applications in the future. We often forget it, but, even though developed by Google, the core of Android (AOSP) is open-source and anyone can fork it. Google lately is already trying to attack that core hard enough to turn Android into a fully closed-source operating system exclusively controlled by them. The EU is just doing them a favour apparently.
The Google Play Integrity API relies on keys and certificates exclusively owned by Google. Which means that if you use alternative privacy-aware frameworks to the Google Play Services (like microG) you won’t be able to do age verification. Google is already trying hard to force all vendors that install Android on their devices to get a certification from them only if they also pre-install Google apps and the Google Play Services (see the Android Certified program). The EU in the past opposed such plans because they clearly violate all the possible antitrust rules on the face of the earth. But, by piggybacking on mandatory Google Play Services for age verification, it seems that it’s just doing a U-turn and doing Google another favour.
In other words, EU representatives have (rightfully) talked a lot over the past years about digital sovereignty, technological independence from American tech giants and supporting open-source.
And then, when tasked to build an institutional app for age verification, what do they do?
Well, they entirely delegate the process to an American tech company that they pledged to decouple us from, and they play in their interests by putting another nail in the AOSP’s coffin.
Luckily the age verification app is still in alpha state and it’ll still take time to be deployed, and it’s also open-source.
So please, if you have a Github account, add a reaction or a comment to the issue opened by @SylvieLorxu on the project of the app to boost its visibility.
And if you have contacts with a EU representative don’t hesitate to write to them and express these implementation concerns.
Just released an entry for the 32BitJam: Xtreme Skydive 3D!
You can play it in itch.io or check the source code on GitHub: https://github.com/JD557/xtreme-skydive-3d
There's a lot of stuff that could be improved but, while there's still a lot of time in the jam (until Friday), I will be pretty busy next week. Maybe I'll release a post-jam version with some improvements.
Either way, I'm happy that I finally "shipped a 3D game" with my software renderer.
I've been playing the first Jade Cocoon lately - I played that demo a lot when I was younger, but had never played the full game.
It's not the greatest game ever, but I had fun and it didn't overstay it's welcome (~15 hours. I don't have time for long RPGs anymore ). I would say it holds up pretty well, especially for a game with tank controls, and the fusion system still remains impressive.
However, I was extremely disappointed with the ending cinematic... It's a low-FPS (with obvious blending between frames) FMV with the in-game character models.
While usually I would be fine with it, this game starts with an incredible animated opening!
I was really expecting that there would be more of that. Although I wouldn't be surprised if that got cut for budget reasons.
It's not easy to show in side-by-side screenshots (as the animation quality makes a big difference) but man, what a downgrade.
Playing around a bit more with 3D, got a basic Z-Buffer and vertex colors (without perspective correction yet... affine z-buffer?).
This already lets me draw some quite complex scenes without having triangles popping up left and right, and it seems it might actually be faster than naively sorting the polygons.
Scene in question: https://poly.pizza/m/2twvfQfSlHB
Been playing around a bit with samply to fix some performance issues in Minart (especially polygon rasterization and convolutions).
Ended up making a bunch of things quite faster, so now my old 3D Stanford Bunny demo went from ~12 FPS to 20 FPS on my machine.
But, since I was able to also make convolutions faster, I can add two hackish depth of field passes while keeping the old performance numbers.
Okay this is very cool and anybody who is touching big data should pay attention to how this evolves: https://ducklake.select/manifesto/
Scala 3.7.0 has been released! 🎉
✅ [stable] SIP-58: Named Tuples
✅ [stable] SIP-52: Binary APIs
👀 [preview] SIP-62: For comprehension improvements
🧪 [experimental] SIP-61: Unroll
🧪 [experimental] SIP-68: Reference-able Package Objects
About 4 years ago (24th of June 2021, according to my old tweet: https://x.com/JD557/status/1408166583575449601) I got a KaiOS phone (Nokia 8000 4g) for emergency use.
It has proven to be pretty useful over the years.
Mostly as a WiFI hotspot when abroad (that way I don't have to buy a data plan for me and another for my girlfriend, and we save our smartphone battery a bit), but it's also pretty nice to have a phone with a long battery life that lets me do some normal modern day stuff (such as check ActivityPub).
Yesterday it also proved pretty useful. Due to the Iberian blackout, I was without power and comms during most of the day, so having a radio around was great to listen to the news without having to be in my car.
I wouldn't recommend anyone to buy this particular mode though, as the keyboard is garbage.
#Scala.js 1.19.0 is released! It contains significant performance improvements for the WebAssembly backend (it is now often faster than JS), native support for JS async/await, and a way to leverage Wasm's JavaScript Promise Integration (JSPI). Read more at https://www.scala-js.org/news/2025/04/21/announcing-scalajs-1.19.0/
I boosted several posts about this already, but since people keep asking if I've seen it....
MITRE has announced that its funding for the Common Vulnerabilities and Exposures (CVE) program and related programs, including the Common Weakness Enumeration Program, will expire on April 16. The CVE database is critical for anyone doing vulnerability management or security research, and for a whole lot of other uses. There isn't really anyone else left who does this, and it's typically been work that is paid for and supported by the US government, which is a major consumer of this information, btw.
I reached out to MITRE, and they confirmed it is for real. Here is the contract, which is through the Department of Homeland Security, and has been renewed annually on the 16th or 17th of April.
https://www.usaspending.gov/award/CONT_AWD_70RCSJ23FR0000015_7001_70RSAT20D00000001_7001
MITRE's CVE database is likely going offline tomorrow. They have told me that for now, historical CVE records will be available at GitHub, https://github.com/CVEProject
Yosry Barsoum, vice president and director at MITRE's Center for Securing the Homeland, said:
“On Wednesday, April 16, 2025, funding for MITRE to develop, operate, and modernize the Common Vulnerabilities and Exposures (CVE®) Program and related programs, such as the Common Weakness Enumeration (CWE™) Program, will expire. The government continues to make considerable efforts to support MITRE’s role in the program and MITRE remains committed to CVE as a global resource.”
Awesome!
Our EU Open Source Solutions Catalogue is live !
Recently, Lorenzo Gabriel released https://github.com/lolgab/scala-native-jdbc, a JDBC implementation for Scala Native, which allows libraries that rely on JDBC (such as Scala-SQL) to be used in a native environment.
I've been slowly playing around with adding DuckDB JDBC compliant connector to it, and it's looking pretty nice. I did have to use some trickery to avoid hitting issues with SQLite/DuckDB dialect mismatches, though.
I plan to open source this eventually, but first I want to make some more tests and clean the code (there's quite a few manual memory management involved).
I also need to figure out how this should be distributed... On MacOS DuckDB is distributed via a dylib
with an rpath, which is a bit annoying to use on Scala Native... TBD
Last Christmas my brother and I purchased a 3D Printer (Bambu Lab A1 mini).
Even though I haven't been an heavy user, it has already proven quite useful, especial for custom supports and organizers that one would have an hard time finding in a store.
It feels quite magic to be able to code something in OpenSCAD and have it appear in the real world.
Today I built a couple of supports for some Krakebs that I had lying around. I think they turned out pretty cool, so I uploaded the model to MakerWorld.
Not that I think that anyone will print that, but I should build the habit of sharing some models.
For some reason, Youtube has been recommending me a ton of wave function collapse videos, so I decided to play a bit with it for map generation.
I think my code still has some bugs, but I'm happy enough for now. Maybe I'll pick it up in the future if I decide to use it for an actual game or demo.
Compiler Explorer (https://godbolt.org/) now supports recent Scala 3 versions
It's a nice convenient tool for seeing what JVM bytecode your Scala code turns into
PR bringing versions up to date: https://github.com/compiler-explorer/compiler-explorer/issues/5405
I've been working on a collection of small minigames (inspired by 1x111) with simplistic graphics (inspired by He is Coming)
It still needs a bit more polish, and I want to add some more games before releasing it, but it's cool how easy it is to write simple games with some very basic primitives such as AABB collision. The code for some of the games is surprisingly short.
been learning and thinking about the Burrows-Wheeler transform and so far my conclusion is "what the fuck?"
https://en.wikipedia.org/wiki/Burrows%E2%80%93Wheeler_transform
So! It's been ages! For releases, 2024 was my 'lost' year as I slogged through the surprisingly hard problem of building a component UI system from scratch.
But I'm pleased to announce a raft of new releases. If you want to do some weird stuff with #Scala, look no further..