| CARVIEW |
Select Language
HTTP/2 200
content-type: application/rss+xml
x-amz-meta-md5chksum: 0388e3b1ed3bb4b92429963b7534b778
last-modified: Sat, 08 Feb 2025 18:49:11 GMT
server: AmazonS3
content-encoding: gzip
date: Mon, 29 Dec 2025 21:24:09 GMT
etag: W/"0388e3b1ed3bb4b92429963b7534b778"
vary: accept-encoding
x-cache: Hit from cloudfront
via: 1.1 2ace1ac5338e11353a1b92d324dde856.cloudfront.net (CloudFront)
x-amz-cf-pop: TLV50-C1
x-amz-cf-id: -fCEfXGneR8skij5li-vKWEgaFgzftIFnvkzWem9NOBkvY7VrIkdgg==
age: 271
mko.re https://mko.re/Sat, 01 Feb 2025 00:00:00 +0000 Remko Tronçon Remko Tronçon age-plugin-se: Building a lean cross-platform cryptography tool (FOSDEM'25 Swift Devroom) https://www.youtube.com/watch?v=L-LSY4Y9G68Sat, 01 Feb 2025 00:00:00 +0000 Remko Tronçon https://mko.re/talks/age-plugin-se-fosdem-2025/
<img src="https://mko.re/talks/age-plugin-se-fosdem-2025/hero_hu1fd8cfc8be605ded493a4a53a6edcdd0_250563_640x0_resize_box_3.png" width="640" height="360"/>
In this lightning talk, I show age-plugin-se in action, and touch on the steps taken to make it robust, simple, and distributable on multiple platforms (including Alpine Linux), all while keeping the dependencies (including tools) to a minimum. Packaging Swift apps for Alpine Linux https://mko.re/blog/swift-alpine-packaging/Sun, 02 Jun 2024 00:00:00 +0000 Remko Tronçon https://mko.re/blog/swift-alpine-packaging/
<img src="https://mko.re/blog/swift-alpine-packaging/hero_hu447e204f4d18572619e9ad6f34ad1dde_93601_640x0_resize_q75_box.jpg" width="640" height="329"/>
<p>While trying to build my <a href="carview.php?tsp=https://github.com/remko/age-plugin-se">Age Apple Secure Enclave
plugin</a>, a small Swift CLI app, on
<a href="https://www.alpinelinux.org">Alpine Linux</a>, I realized that the Swift
toolchain doesn’t run on Alpine Linux. The upcoming Swift 6 will support
(cross-)compilation to a static (musl-based) Linux target, but I suspect an
Alpine Linux version of Swift itself isn’t going to land soon. So, I
explored some alternatives for getting my Swift app on Alpine.</p> Generating coverage reports & badges for SwiftPM apps https://mko.re/blog/swiftpm-coverage/Sun, 21 Apr 2024 00:00:00 +0000 Remko Tronçon https://mko.re/blog/swiftpm-coverage/
<p>The <a href="carview.php?tsp=https://github.com/remko/age-plugin-se">age plugin for Apple’s Secure Enclave</a> is a small,
platform-independent Swift CLI app, built using the <a href="https://www.swift.org/documentation/package-manager/">Swift Package Manager</a>. Because it does
not use Xcode for building, you can’t use the Xcode IDE for collecting and browsing test coverage of
your source files. I therefore wrote <a href="https://github.com/remko/age-plugin-se/blob/main/Scripts/ProcessCoverage.swift">a small (self-contained, dependencyless, cross-platform)
Swift script</a>
to transform SwiftPM’s raw coverage data
into <a href="https://remko.github.io/age-plugin-se/ci/coverage.html#f4">annotated source code</a>, together with
an <a href="https://remko.github.io/age-plugin-se/ci/coverage.svg">SVG badge</a> to put on
your project page.</p> A WebAssembly Core for Uxn https://mko.re/blog/uxn-wasm/Sun, 24 Dec 2023 00:00:00 +0000 Remko Tronçon https://mko.re/blog/uxn-wasm/
<img src="https://mko.re/blog/uxn-wasm/hero_hu4ee6495a6c6cd554063f7edc1e6f9c71_32438_640x0_resize_box_3.png" width="640" height="252"/>
<p>While watching <a href="https://www.youtube.com/watch?v=umSuLpjFUf8" title="'Concatenative programming and stack-based languages' -- Douglas Creager, Strange Loop 2023">a Strange Loop talk on concatenative
programming</a>,
I learned about <a href="https://100r.co/site/uxn.html">Uxn</a>,
a small virtual machine that runs games, editors, drawing programs, … Uxn has been <a href="https://github.com/hundredrabbits/awesome-uxn#emulators" title="Uxn Emulators">ported to various platforms</a>, including classic consoles such as the Nintendo DS, GBA, Playdate, …</p>
<p>There also is a JavaScript version: <a href="https://rabbits.srht.site/uxn5/" title="Uxn5: Uxn/Varvara JavaScript system">Uxn5</a>. Since the Uxn5 core was a straight translation of the C reference implementation to pure JavaScript, it wasn’t very performant. After <a href="https://mko.re/blog/waforth" title="WAForth: Forth Interpreter+Compiler for WebAssembly">my latest expeditions into WebAssembly</a>, I wanted to give writing a pure emulator in WebAssembly a try as well, so I created <a href="https://github.com/remko/uxn.wasm" title="uxn.wasm">uxn.wasm</a>, a WebAssembly core for the Uxn virtual machine.</p> Lightweight structured logging on Cloud Run using slog https://mko.re/blog/cloudrun-slog/Wed, 16 Aug 2023 00:00:00 +0000 Remko Tronçon https://mko.re/blog/cloudrun-slog/
<p>In this post, I’ll walk through a small example of a Go web app for <a href="carview.php?tsp=https://cloud.google.com/run">Cloud Run</a> that uses
Go 1.21’s standard library <a href="https://pkg.go.dev/log/slog"><code>slog</code></a> package for structured logging to Cloud Logging.</p>
<p>Contrary to the <a href="https://cloud.google.com/logging/docs/setup/go" title="Setting Up Cloud Logging for Go · Google Cloud">documented ‘standard’ approach for
logging</a>, this example doesn’t
use any third-party logging package for logging. Instead, it relies on
Cloud Run’s support for ingesting structured logs by <a href="https://cloud.google.com/run/docs/logging#using-json" title="Write structured logs · Google Cloud">simply printing
JSON to standard error</a>.</p> An age plugin for Apple's Secure Enclave https://mko.re/blog/age-plugin-se/Fri, 14 Jul 2023 00:00:00 +0000 Remko Tronçon https://mko.re/blog/age-plugin-se/
<img src="https://mko.re/blog/age-plugin-se/hero_hu4dcc2415b02bea77b244f5ab276955d2_123394_640x0_resize_q75_box.jpg" width="640" height="374"/>
<p>For my day-to-day encryption needs, I’m a big fan of
<a href="https://github.com/FiloSottile/age">age</a>. age is a simple, modern and secure
file encryption tool, and serves as a better replacement for
tools such as GnuPG. You can even use it as <a href="https://github.com/FiloSottile/passage" title="passage">the backend for managing your passwords</a>.</p>
<p>For extra convenience and security, I wanted to be able to use my MacBook’s Secure
Enclave (controlled by Touch ID) to encrypt files, so I created an age plugin for this: <a href="carview.php?tsp=https://github.com/remko/age-plugin-se"><code>age-plugin-se</code></a>.</p> Exploring WebAssembly with Forth (and vice versa) (FOSDEM'23) https://www.youtube.com/watch?v=QqW39jElFhASat, 04 Feb 2023 00:00:00 +0000 Remko Tronçon https://mko.re/talks/waforth-fosdem-2023/
<img src="https://mko.re/talks/waforth-fosdem-2023/hero_hu5310bb0ed2775bcf7630df962ed0870d_43282_640x0_resize_box_3.png" width="640" height="360"/>
In this FOSDEM'23 talk, I dive into the details of WAForth, a tiny but complete Forth interpreter and dynamic compiler for and written in WebAssembly. A Dynamic Forth Compiler for WebAssembly https://mko.re/blog/waforth/Thu, 24 May 2018 00:00:00 +0000 Remko Tronçon https://mko.re/blog/waforth/
<img src="https://mko.re/blog/waforth/hero_hu158a6b9004e8049e9e04c4f4eca9ed13_30560_640x0_resize_box_3.png" width="640" height="252"/>
<p>In yet another ‘probably-useless-but-interesting’ hobby project, I wrote a Forth compiler and interpreter targeting WebAssembly.
It’s written entirely in <a href="https://webassembly.org">WebAssembly</a>, and comes with a compiler
that dynamically emits WebAssembly code on the fly. The entire system (including 80% of all
core words) fits into a 10k (5k gzipped) WebAssembly module. You can try out <a href="https://mko.re/waforth" title="WAForth Interactive Console">the WAForth interactive console</a>, or
grab the code from <a href="https://github.com/remko/waforth" title="WAForth GitHub page">GitHub</a>.</p> Ken Burns Effect Slideshows with FFMpeg https://mko.re/blog/ken-burns-ffmpeg/Sun, 06 Aug 2017 00:00:00 +0000 Remko Tronçon https://mko.re/blog/ken-burns-ffmpeg/
<img src="https://mko.re/blog/ken-burns-ffmpeg/hero_hu9f64d330349da8a55a534d4227eda8e7_317136_640x0_resize_q75_box.jpg" width="640" height="264"/>
<p>One of the first things that impressed me about Mac OS X when I first saw it
was its screensaver. Instead of just showing a simple slideshow of your
pictures, it actually used a <a href="https://en.wikipedia.org/wiki/Ken_Burns_effect" title="Ken Burns effect -- Wikipedia">Ken Burns</a> panning and zooming
effect with a fancy fading transition to make the otherwise static pictures
really come to life. It always sounded like a fun project to create a standalone
tool to create slideshow movies that used this effect, with full control over
where and how much pictures should be zoomed. It turns out you don’t really
need a new tool: you can get the same result using just
<a href="https://ffmpeg.org">FFMpeg</a>. In this post, I’ll walk through the steps of
creating slideshows using the Ken Burns effect.</p>
<p>Oh, and cats. There will be cats!</p> Universal/Isomorphic React on a Swift Backend https://mko.re/blog/react-swift/Mon, 26 Sep 2016 00:00:00 +0000 Remko Tronçon https://mko.re/blog/react-swift/
<img src="https://mko.re/blog/react-swift/hero_hu3b5ba7e41b0cfae33ce275f453ba0692_13970_640x0_resize_box_3.png" width="640" height="194"/>
<p><a href="https://facebook.github.io/react/">React</a>’s standard flow is to start with an empty HTML template from the
server, and populate the DOM entirely on the client. Letting React pre-render
the initial HTML for your app on the server before the client takes
over has some advantages, though: it lets slower (mobile) clients load your
app much faster, and it’s good for SEO for search engines that don’t support
JavaScript. Since you have to run React on the server to do this, you need a
JavaScript-able backend, which is why such <a href="https://medium.com/@mjackson/universal-javascript-4761051b7ae9#.ryy93gr3m"><em>Universal</em></a> (a.k.a. <em>Isomorphic</em>) apps
are mostly built with <a href="https://nodejs.org/">Node.js</a> backends. However, you can create universal React
apps with other languages too, including <a href="https://swift.org">Swift</a>. In this post, I’ll walk
through <a href="https://github.com/remko/react-swift-example">an example of a universal React
app</a> using Swift’s <a href="https://vapor.codes">Vapor</a> web
framework.</p>