From 22d1900ed237f297e532715032150e4fa48136e6 Mon Sep 17 00:00:00 2001 From: Viktor Rudebeck Date: Fri, 13 Nov 2026 10:35:38 +0100 Subject: [PATCH 1/4] Update vlovgr author profile --- src/blog/directory.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/blog/directory.conf b/src/blog/directory.conf index 9948eccc..0191d7e1 100644 --- a/src/blog/directory.conf +++ b/src/blog/directory.conf @@ -553,11 +553,11 @@ valencik { } vlovgr { - name: "Viktor Lövgren" + name: "Viktor Rudebeck" avatar: "https://github.com/vlovgr.png" github: vlovgr - twitter: vlovgr - bio: "Viktor is a Software engineer at Ovo Energy in London, working on the platform powering energy meter readings and consumption data. He’s an advocate of strongly typed functional programming, and Scala in particular, which has been his professional focus the past three years." + url: "https://vlovgr.se" + linkedin: "https://linkedin.com/in/vlovgr" } yifanxing { From 682250bef7374cd21d8a161f84a96d1ec8679415 Mon Sep 17 00:00:00 2001 From: Viktor Rudebeck Date: Fri, 13 Nov 2026 10:41:27 +0100 Subject: [PATCH 2/4] Add blog post on Jots --- src/blog/jots.md | 40 ++++++++++++++++++++++++++++++++++++++++ src/img/media/jots.png | Bin 0 -> 40256 bytes 2 files changed, 40 insertions(+) create mode 100644 src/blog/jots.md create mode 100644 src/img/media/jots.png diff --git a/src/blog/jots.md b/src/blog/jots.md new file mode 100644 index 00000000..ce58c332 --- /dev/null +++ b/src/blog/jots.md @@ -0,0 +1,40 @@ +{% + author: ${vlovgr} + date: "2026-11-13" + tags: [technical] +%} + +# Jots: Functional JWTs for Scala + +We are delighted to welcome [Jots](https://vlovgr.github.io/jots) as a new Typelevel affiliate project. + +![Jots: Functional JWTs for Scala](/img/media/jots.png) + +Jots is a library for working with [JSON Web Tokens (JWTs)](https://en.wikipedia.org/wiki/JSON_Web_Token) in Scala, Scala.js and Scala Native. + +- Supports token signing and verification, including with [JSON Web Keys (JWKs)](https://vlovgr.github.io/jots/features/signing.html#json-web-key) and [JWK Sets](https://vlovgr.github.io/jots/features/verification.html#json-web-key-set). +- Integrates with [http4s](https://vlovgr.github.io/jots/integrations/http4s.html) for `AuthMiddleware` verification and periodically refreshing JWK Sets. +- Uses the Cats Effect, Circe, Literally and scodec-bits Typelevel libraries in the core module. + +## Cryptography + +Token signing and verification are built on an independent [`jots-crypto`](https://vlovgr.github.io/jots/features/cryptography.html) module. + +- Provides a `Crypto[F]` capability for effect types with a `Sync` instance, like `IO` and `SyncIO`. +- Supports HMAC, plus signing and verification using ECDSA, EdDSA and RSA algorithms. +- Uses Java cryptography on the JVM, Node.js on Scala.js and OpenSSL on Scala Native. +- Includes a `String` interpolator for public keys, which are validated at compile time. + +The module can be used on its own when you need cross-platform cryptography. + +## Testing + +The [`jots-testing`](https://vlovgr.github.io/jots/features/testing.html) module helps with writing tests for code using the library. + +- Provides ScalaCheck generators and `Arbitrary` instances for tokens, keys, JWKs and more. +- Adds `String` interpolators for private keys, secret keys and tokens, validated at compile time. +- Allows tests to bypass signature verification, which is something the core module prevents. + +## Getting Started + +For more information and how to get started, head over to the [project website](https://vlovgr.github.io/jots). diff --git a/src/img/media/jots.png b/src/img/media/jots.png new file mode 100644 index 0000000000000000000000000000000000000000..37468d0d22067a654bdd420e8b1f2c0b52c8c032 GIT binary patch literal 40256 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 Tw~+$=WrL2E{>AL`w;%mK9ntWN literal 0 HcmV?d00001 From 9328a9326099c883aff3b5eeaf58bcb2753e1838 Mon Sep 17 00:00:00 2001 From: Viktor Rudebeck Date: Sat, 14 Nov 2026 09:11:50 +0100 Subject: [PATCH 3/4] Reword introductory sentence in first person --- src/blog/jots.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/blog/jots.md b/src/blog/jots.md index ce58c332..d56035f7 100644 --- a/src/blog/jots.md +++ b/src/blog/jots.md @@ -6,7 +6,7 @@ # Jots: Functional JWTs for Scala -We are delighted to welcome [Jots](https://vlovgr.github.io/jots) as a new Typelevel affiliate project. +I am happy to announce that my library [Jots](https://vlovgr.github.io/jots) has been accepted as a Typelevel affiliate project. ![Jots: Functional JWTs for Scala](/img/media/jots.png) From 6ce9882ce51de7f7f6631d8b0f67d3c7b1da3e34 Mon Sep 17 00:00:00 2001 From: Justin Reardon Date: Sat, 14 Nov 2026 07:06:07 -0500 Subject: [PATCH 4/4] Update publish date --- src/blog/jots.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/blog/jots.md b/src/blog/jots.md index d56035f7..9bb0fbac 100644 --- a/src/blog/jots.md +++ b/src/blog/jots.md @@ -1,6 +1,6 @@ {% author: ${vlovgr} - date: "2026-11-13" + date: "2026-11-14" tags: [technical] %}