arendjr

joined 1 year ago
[–] arendjr@programming.dev 2 points 1 month ago (4 children)

Maybe not the best example then, but not the only example. If you unintentionally create something that resembles the original too much you may still become liable. It’s hard to draw the line, which is why many in such a position would prefer to be safe rather than sorry.

[–] arendjr@programming.dev 4 points 1 month ago (6 children)

It’s a gray area, legally. What you say is theoretically correct, but there’s practical issues once you’ve looked at the code that will open you up to legal liability anyway.


For instance, what if you need a utility function during your reimplementation for which there is really only one obvious implementation? You can no longer claim to have come up with it by yourself.


I doubt the FSF would sue over it, but companies are known to avoid the risk.

[–] arendjr@programming.dev 1 points 3 months ago* (last edited 3 months ago) (1 children)

Haha, sure thing!

So, today, TurboPascal isn’t a very popular programming language anymore. But that’s okay! We have new programming languages nowadays. Some of the popular languages that we use today include JavaScript, TypeScript and CSS. You don’t need to know much about these languages, except that they’re commonly used for creating websites and apps that run on the web.

Now, assume you want to create a website or a webapp, and you were to learn these languages for that purpose. In that case you have quite a learning experience ahead of you, which is great! Learning can be fun! But what’s not so great is that these languages have lots of room to make mistakes. Now, everyone makes mistakes, that’s just a fact of life, but when mistakes can be avoided, that’s generally preferred.

This is where Biome comes in: It is a tool – we call it a linter – that helps you to detect many kinds of common mistakes. It can show you where these mistakes are, and sometimes even fix them for you. It can also show you possible mistakes, things that are not necessarily a mistake, but things that look suspicious.

And on top of that, Biome offers you another tool: It’s called a formatter. When you write your code, it automatically takes care for you that the code looks consistent. So it fixes things like indentation and other use of whitespace for you, as well as where to place your parentheses and stuff like that.

Together, hopefully these two things can make your programming experience a little bit more enjoyable. Cheers!

[–] arendjr@programming.dev 2 points 3 months ago (1 children)

They’re included in the beta!

Specifically, you can create GritQL plugins for custom linter diagnostics. There’s certainly more we’d like to do on that front, but we’re first going to see how these are being received to decide where to prioritise next.

[–] arendjr@programming.dev 1 points 3 months ago (1 children)

I don’t have Nix experience myself, but what would it take to be better supported there? I think we’d be open to PRs for that ☺️

[–] arendjr@programming.dev 2 points 3 months ago

We don’t currently publish to Crates.io, but we do have CI integrations that can install without needing NPM.

[–] arendjr@programming.dev 2 points 3 months ago* (last edited 3 months ago) (3 children)

Formatter and linter in one even :) I’ve updated the message at the top.

[–] arendjr@programming.dev 10 points 3 months ago

I think it’s the latter. I once had to take care of a sick friend who was pretty much puking her guts out. Her moans sounded arousing. Of course she wasn’t intentionally doing that, it’s just our own male brains playing tricks on us.

[–] arendjr@programming.dev 1 points 3 months ago

I’m making a case for custom codes, not for using a 200 status code with it. My reply said the 200 didn’t make sense.

Of course once you use custom codes, the actual HTTP status codes do become less important, because there’s some redundancy there. That’s not an argument to do it wrong, but it is an argument that accurate HTTP status codes are less of a priority. So understandably some people will take shortcuts.

Apparently you find this very frustrating, but in the end it’s just an implementation detail. But it also sounds like you’re more frustrated with the service API as a whole than the fact it uses custom error codes specifically, so I’m just going to leave it at that.

[–] arendjr@programming.dev 5 points 3 months ago

I’m not arguing against that. Merely providing some counterweight to the idea that the author was “flinging shit in the trenches” 😅

[–] arendjr@programming.dev 12 points 3 months ago (2 children)

I found the title of that section slightly triggering too, but the argument they lay down actually makes sense. Consistency helps you to achieve correctness in large codebases, because it means you don’t have to reinvent what is correct over and over in separate pockets of the codebase. Such pockets also make incremental improvements to the codebase harder and harder, so they do come back to bite you.

Your example of vendors doesn’t relate to that, because you don’t control your vendor’s code. But you do control your organisation’s.

[–] arendjr@programming.dev 3 points 3 months ago* (last edited 3 months ago) (3 children)

Well, looking at your example, I think a good case can even be made for it.

“s23” doesn’t look like an HTTP status code, so including it can make total sense. After all, there’s plenty of reasons why you could want custom error codes that don’t really align with HTTP codes, and customised error messages are also a sensible use case for that.

Of course duplicating the actual HTTP status code in your body is just silly. And if you use custom error codes, it often still makes sense to use the closest matching HTTP status code in addition to it (so yeah, I agree the 200 in your example doesn’t make a lot of sense). But neither of those preclude good reasons for custom codes.

 
45
DirectX Adopting SPIR-V (devblogs.microsoft.com)
submitted 9 months ago* (last edited 9 months ago) by arendjr@programming.dev to c/linux@programming.dev
 

SPIR-V is the intermediate shader target used by Vulkan as well, so it sounds like this may indirectly make DirectX on Linux smoother.

 

Biome v1.9 is out!

Today we celebrate both the first anniversary of Biome 🎊 and the release of Biome v1.9! Read our blog post for a look back at the first year and the new features of Biome v1.9.

In a nutshell:

  • Stable CSS formatting and linting. Enabled by default!
  • Stable GraphQL formatting and linting. Enabled by default!
  • .editorconfig support. Opt-in
  • biome search command to search for patterns in your source code.
  • New lint rules for JavaScript and its dialects.
 

With this post I've taken a bit more of a practical turn compared to previous Post-Architecture posts: It's more aimed at providing guidance to keep (early) architecture as simple as possible. Let me know what you think!

 

After my previous post introducing Post-Architecture, I received a bunch of positive feedback, as well as enquiries from people wanting to know more. So I figured a follow-up was in order. Feel free to ask questions here as well as on Mastodon!

 

This post highlights my experience working with software architecture in startup environments. I think the approach is different enough from the traditional notion of software architecture that it may warrant its own term: post-architecture.

 

cross-posted from: https://programming.dev/post/12807878

This new version provides an easy path to migrate from ESLint and Prettier. It also introduces machine-readable reports for the formatter and the linter, new linter rules, and many fixes.

 

This new version provides an easy path to migrate from ESLint and Prettier. It also introduces machine-readable reports for the formatter and the linter, new linter rules, and many fixes.

 

I just had a random thought: a common pattern in Rust is to things such as:

let vec_a: Vec<String> = /* ... */;
let vec_b: Vec<String> = vec_a.into_iter().filter(some_filter).collect();

Usually, we need to be aware of the fact that Iterator::collect() allocates for the container we are collecting into. But in the snippet above, we've consumed a container of the same type. And since Rust has full ownership of the vector, in theory the memory allocated by vec_a could be reused to store the collected results of vec_b, meaning everything could be done in-place and no additional allocation is necessary.

It's a highly specific optimization though, so I wonder if such a thing has been implemented in the Rust compiler. Anybody who has an idea about this?

 

Just a progress update on a fun open-source project I'm involved with. Biome.js is a web toolchain written in Rust, and it provides a great excuse to play around with parsing technologies and other fun challenges :)

243
submitted 1 year ago* (last edited 1 year ago) by arendjr@programming.dev to c/rust@programming.dev
 

Slide with text: “Rust teams at Google are as productive as ones using Go, and more than twice as productive as teams using C++.”

In small print it says the data is collected over 2022 and 2023.

view more: ‹ prev next ›