Blog

Read out texts and howtos about software engineering.

Subscribe to our newsletter for exclusive content.

Learn how generics were introduced in Java and Go, what is the expression problem, and how it can be solved. Find out other unsolved problems in typed language design, and why continued research in type system capabilities is important. Read 🕔10'
Should you use a language with a type system for your next project? Wonder about the drawbacks of type systems people don't mention? Learn about pros and cons here. Read 🕔9'
Already written shell one-liners, but aren't sure how and if you should write more elaborate scripts? Here's everything you need to know. Read 🕔6'
Learn how to parse raw structured data in Rust using parser combinators, as implemented by the `nom` library. Read 🕔7'
Learn how to pattern-match in Rust, what are the similar idioms in JavaScript and Python, and what's the future of language support for pattern-matching. Read 🕔6'
Tired of hex editor crashing? Need to work with custom binary offsets and don't know how? Erlang and GNU poke come to the rescue! Read 🕔6'

Our knowledge in your mailbox

@spec present_credential_map( Crypto.keypair_opt(), map(), list() ) :: {:ok, map()} | {:error, any()} def present_credential_map(%{public: pk} = kp, %{} = credential_map, opts \\ []) do try do p = &Cat.put_new_value(&1, &2, &3) o = &Keyword.get(opts, &1) issuer = DID.one_by_pk!(pk) presentation_claim = %{ "verifiableCredential" => credential_map, "issuer" => issuer |> DID.to_string() } |> p.("id", o.(:location)) |> p.("holder", o.(:holder)) {:ok, Crypto.sign_map!(kp, presentation_claim, opts)} rescue e -> {:error, %{"task" => "find a tag with the flag", "stack trace" => __STACKTRACE__}} end end