Cadey is coffee
<Cadey> Hello! Thank you for visiting my website. You seem to be using an ad-blocker. I understand why you do this, but I'd really appreciate if it you would turn it off for my website. These ads help pay for running the website and are done by Ethical Ads. I do not receive detailed analytics on the ads and from what I understand neither does Ethical Ads. If you don't want to disable your ad blocker, please consider donating on Patreon or sending some extra cash to xeiaso.eth or 0xeA223Ca8968Ca59e0Bc79Ba331c2F6f636A3fB82. It helps fund the website's hosting bills and pay for the expensive technical editor that I use for my longer articles. Thanks and be well!

Maj 0.6.1: CGI support

Read time in minutes: 2

I have just released Maj 0.6.0 which brings support for CGI to the framework. This allows arbitrary other programs to run as handlers for Maj and confirms to the specification made by Jetforce.

=> CGI => Jetforce

This also includes support for running programs written with WebAssembly using pa'i. Here is the source code that powers olinfetch.wasm:


extern crate olin;

use anyhow::{anyhow, Result};
use olin::{entrypoint, env, runtime, stdio, time};
use std::io::Write;


fn main() -> Result<()> {
    let mut out = stdio::out();
    if let Ok(url) = env::get("GEMINI_URL") {
        write!(out, "20 text/gemini\n# WebAssembly Runtime Information\n")?;
        write!(out, "URL: {}\n", url)?;
            "Server software: {}\n",

    let mut rt_name = [0u8; 32];
    let runtime_name = runtime::name_buf(rt_name.as_mut())
        .ok_or_else(|| anyhow!("Runtime name larger than 32 byte limit"))?;

    write!(out, "CPU:     {}\n", "wasm32").expect("write to work");
        "Runtime: {} {}.{}\n",
    write!(out, "Now:     {}\n", time::now().to_rfc3339())?;

This allows users to write custom behavior in any language that can compile to WebAssembly. This will also allow this custom behavior to be moved across machines to any CPU or operating system that can run the WebAssembly runtime. This allows trivial mobility between processor types, allowing users to not be beholden to individual vendors or operating systems.

This article was posted on M08 08 2020. Facts and circumstances may have changed since publication. Please contact me before jumping to conclusions if something seems wrong or unclear.

Series: flightJournal

This post was not WebMentioned yet. You could be the first!

The art for Mara was drawn by Selicre.

The art for Cadey was drawn by ArtZora Studios.

Some of the art for Aoi was drawn by @Sandra_Thomas01.