FizzyOrange

joined 1 year ago
[โ€“] FizzyOrange 1 points 1 month ago

I've tried this. Unfortunately it isn't anywhere near as good as Git Graph, or at least it wasn't when I tried it a few months ago. I'll stick with Git Graph until it stops working I think.

[โ€“] FizzyOrange 7 points 1 month ago

Yeah but this one is actually good. So hopefully it will displace all the others.

[โ€“] FizzyOrange 6 points 2 months ago* (last edited 2 months ago)

Wow look at that CUPS code and tell me with a straight face there aren't 5 more similar vulnerabilities waiting to be found...

[โ€“] FizzyOrange 3 points 2 months ago

I seriously wonder what kind of circumstances lead someone to be this irrationally devoted to such a flawed and outclassed language. Probably best if I just block you though...

[โ€“] FizzyOrange 3 points 2 months ago

Unlikely to be of any use to anyone in practice because you can fit a 12k gate chip into a grain of sand and then it doesn't really matter if it's not flexible.

Interesting tech though.

[โ€“] FizzyOrange 1 points 2 months ago (1 children)

Yeah this sort of stuff reads a lot like philosophy nonsense babble to me. I think maybe it isn't nonsense like the philosophy stuff but it sure would be nice if they gave a few concrete examples to demonstrate that.

The Background link does make sense... but it also seems kind of trivial. Giving the idea of mapping programming language semantics to an existing domain like mathematics a complex name like "denotational semantics" just serves to make it harder to understand and more impenetrable.

Generally I think naming things should make them easier to understand, e.g. naming "a number that represents the address of another object" a "pointer" is great, because it literally is something that points to another thing.

Denotational semantics is a terrible terrible name. I'm not even sure it should have a name. Can we call it "mathematical semantics" (if you map to maths)?

(I may be totally wrong here because I'm not a denotational semantics expert, but I have at least tried to follow it before getting whacked in the face with a load of philosophy.)

Reminds me a lot of REST. The core idea of REST is very simple, but it's also really hard to learn what that idea is because so much of it is hidden behind bullshit philosophy.

[โ€“] FizzyOrange 15 points 2 months ago

Go to bed, you're drunk.

[โ€“] FizzyOrange 3 points 2 months ago

They're comparing it to Ada so maybe it's arguable. I'm not too familiar with Ada but I think it does have some type features that Rust doesn't. Though the example they gave (newtypes) is fairly easy in Rust too, and I'm sure Rust has type features Ada doesn't too.

[โ€“] FizzyOrange 2 points 2 months ago

I've never done it but apparently you can actually gradually transition to Typescript one file at a time by renaming them from .js to .ts. Might help a bit. Good luck anyway!

[โ€“] FizzyOrange 74 points 2 months ago (3 children)

Actual blog post.

Great accomplishment. I think we all knew it must happen like this but it's great to see real world results.

I think this is probably actually the most useful part of the post:

Increasing productivity: Safe Coding improves code correctness and developer productivity by shifting bug finding further left, before the code is even checked in. We see this shift showing up in important metrics such as rollback rates (emergency code revert due to an unanticipated bug). The Android team has observed that the rollback rate of Rust changes is less than half that of C++.

I think anyone writing Rust knows this but it's quite hard to convince non-Rust developers that you will write fewer bugs in general (not just memory safety bugs) with Rust than with C++. It's great to have a solid number to point to.

[โ€“] FizzyOrange 2 points 2 months ago (2 children)

Yeah IntelliJ does amazingly without type annotations but even it can't do everything. E.g. if you're using libraries without type annotations, or if you don't call functions with every possible type (is your testing that good? No.)

Static types have other benefits anyway so you should use them even if everyone in your team uses IntelliJ.

[โ€“] FizzyOrange 1 points 2 months ago

In common usage a linter detects code that is legal but likely a mistake, or code that doesn't follow best practice.

Although static type checkers do fit in that definition, that definition is overly broad and they would not be called a "linter".

Here is how static type checkers describe themselves:

Pyright is a full-featured, standards-based static type checker for Python.

Mypy is a static type checker for Python.

TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.

Sorbet is a fast, powerful type checker designed for Ruby.

Here is how linters describe themselves:

Pylint is a static code analyser for Python 2 or 3. ... Pylint analyses your code without actually running it. It checks for errors, enforces a coding standard, looks for code smells, and can make suggestions about how the code could be refactored.

(Ok I guess it's a bit redundant for Pylint to say it is a linter.)

Eslint: The pluggable linting utility for JavaScript and JSX

Clippy: A collection of lints to catch common mistakes and improve your Rust code.

Ruff: An extremely fast Python linter and code formatter, written in Rust.

You get the idea... Linters are heuristic and advisory. Quite different to static type checking.

view more: โ€น prev next โ€บ