What Happend in March?

Astro v4.5

First on the list Astro just turned three and they celebrated with a pretty amazing Launch week. On one hand version 4.5 was released with an improved developer experience thanks to the Audit UI, view transition improvements, and experimental JSON schemas for data collections.

export default defineConfig({
  experimental: {
    contentCollectionJsonSchema: true,
  },
});

On the other hand, Astro is now leveraging the power of LibSQL to offer its own, fully managed, integrated database solution - Astro DB.

Astro is looking better than ever and is quickly evolving into a platform offering much more than just the tools to build content-driven websites.

Tailwind CSS 4 Alpha

Next, Tailwind CSS 4 Alpha was announced in March. The previous post CSS-based internal toolchain is now replaced by a Rust-powered internal engine, making Tailwind builds up to 10 times faster, with a smaller footprint. Moving forward, the framework has only one external dependency on Lightning CSS, and the team is focused on making this whole developer experience feel closer to a CSS-native library.

Billion Row Challenge

Stepping away from dev news for a second, the one billion row challenge is an interesting exercise that took place across multiple dev communities in recent months. The task is pretty simple - you have to read a file with 1 billion lines, aggregate the information contained in each line, and print a report with the result. You’ll soon find out that this “trivial” task has quite a lot of gotchas and Renato’s article is a comprehensive deep dive into what it takes to implement an optimized solution in Go.

This challenge started for the Java language, which also got a new version released in March.

Java v22

Java 22 comes packed with useful updates like more flexible constructors which give developers more freedom and control,

public PositiveBigInteger(long value) {
  if (value < 0) {
    throw new Exception("non-positive");
  }
  super(value);
}

unnamed variables for a better developer experience,

int total = 0;

for(Order _ : orders) {
    total ++;
}
return total;

or updates to the Stream API to support custom intermediate operations.

Stream.generate(() -> ThreadLocalRandom.current().nextInt())
  .limit(1000)
  .gather(selectOne(Math::max))
  .parallel()
  .findFirst();

If you are rolling your eyes when hearing about Java, just know that this one is here to stay, and is still one of your best bets if you are looking for a powerful ecosystem with good job opportunities. Trust me, Java is no longer the old, boring language it was 10 years ago.

JavaScript Bloat in 2024

Back to the JavaScript world, Niki takes a look at the state of the modern web and analyzes the size of JS scripts served to the client. It is an interesting read, and the conclusion is pretty concerning - in modern apps, the size of your JavaScript outweighs the size of the actual content.

If you find such updates useful you should consider joining our newsletter or watching one of these videos next.

Until next time, thank you for reading!