115 Followers
107 Following
1.3K Posts
Cryptographer, Security Engineer/Architect, humanist, with a taste for offensive security as well.

After a few months of break, over the last week or so I finally had some time to work on my pet programming language #Rocket again.

My main goal was to fix a bug that prevented some built-in types (ints, booleans, ...) from being used as instances of a protocol (as in #Python - think interfaces in #Java, traits in #Rust or ...). The reason was that for these types I didn't have any runtime type info. If they were stored in a variable (or function parameter) of type `MyProtocol` that was that - there was no more information on the type except just that: It implements the protocol `MyProtocol`. No way of knowing the actual type or finding the implementation of the methods required by the protocol.

So I had to refactor how ints and booleans were represented internally. As you can imagine, that's a change quite deep in the language. It affected arrays (which store their length - an integer), strings (which under the hood ultimately are arrays of integers) and some other stuff. Changing the representation of booleans required adjustments in parts of the language that deal with booleans: lazily evaluating logical `and`s and `or`s, `if` statements, `while` loops, etc.

Anyway, after the refactoring I think the code is a bit cleaner. And once I had this, fixing the bug was literally a two line change (plus imports and tests).

Also found and fixed another bug: When importing two submodules of the same top-level module (e.g. `import mymodule.submodule_1; import mymodule.submodule_2`) the second import statement used to fail because the name `mymodule` already existed (was already taken) in the code doing the imports (it was created by the first import statement).

And then there was a third bug I introduced in the refactoring of the representation of ints. It lead to `-some_unsigned_int` to be treated as another unsigned int (rather than a signed one) in some regards. My test case converting `-9223372036854775808` (the minimum value a signed 64 bit integer can hold) to a string caught it.

On a side node: I'm so grateful I started writing lots of test cases for this project. The amount of bugs they've caught that would have gone unnoticed otherwise is worth a million. Always write test cases if you care about your software.

#RocketLang

Von wegen "zusätzliche Maßnahmen" - diese Regierung hat keinen Plan fürs Klima, viel schlimmer noch, sie will die fossile Krise eskalieren!

Apparently #Microsoft gives away "#rewards" in some #lottery. They inform you... via e-mail. Then the web page asks you to log in. All the internal #phishing alarms bells are going crazy. I've double-checked they're not pulling a homoglyph attack. Apparently it's real.

This is undoing phishing training.

"Source: My LLM said so" is the new "Source: Internet", but even worse.

#LLM #AI #slop

Die Einschränkung des Berliner IFG ist ein Skandal & die Vorgehensweise von CDU & SPD ein Rückschritt. Wer Sachverständige nur zur Show einlädt hat kein ernsthaftes Interesse an guter Politik & sinnvollen Gesetzen.
The good thing about #AI is that now people are quicker to call out other people's #slop publicly.

Berliner CDU & SPD haben uns verraten!

Unter fadenscheinigen Argumenten hat die schwarz-rote Koalition in Berlin das Informationsfreiheitsgesetz erheblich eingeschränkt. Die Regierung hatte ein Transparenzgesetz versprochen und setzt jetzt in einem Hauruck-Verfahren das Gegenteil um.

Re: https://mastodon.social/@bagder/116294927524710539

The #opensource #curl project is probably doing more in terms of security than most commercial companies.

Dass Deutschland sich in dieser Situation solch eine Regierung erlaubt, ist so als würden die Passagiere der Titanic ein Loch in den Rumpf sägen, weil ihnen die Zeit bis zum Zusammenstoß mit dem Eisberg zu lang wird.