Return-Path: Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 74CE2C002B for ; Sun, 19 Feb 2023 23:05:28 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 49AC760DA5 for ; Sun, 19 Feb 2023 23:05:28 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 49AC760DA5 Authentication-Results: smtp3.osuosl.org; dkim=pass (2048-bit key) header.d=lifewithalacrity-com.20210112.gappssmtp.com header.i=@lifewithalacrity-com.20210112.gappssmtp.com header.a=rsa-sha256 header.s=20210112 header.b=NdYfWmS5 X-Virus-Scanned: amavisd-new at osuosl.org X-Spam-Flag: NO X-Spam-Score: -1.399 X-Spam-Level: X-Spam-Status: No, score=-1.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=no autolearn_force=no Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uMTDDUcwxX-3 for ; Sun, 19 Feb 2023 23:05:27 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org ADB4760C04 Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) by smtp3.osuosl.org (Postfix) with ESMTPS id ADB4760C04 for ; Sun, 19 Feb 2023 23:05:26 +0000 (UTC) Received: by mail-lj1-x22c.google.com with SMTP id m22so1469416ljp.0 for ; Sun, 19 Feb 2023 15:05:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lifewithalacrity-com.20210112.gappssmtp.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4QNiblDzbXrr30MKxRRZADxW3irTdnjrLLD/9U24IpU=; b=NdYfWmS5M6adEY48TjW2QRyPGiDk/qi/+QqQ+RfH5pQAmJCUftnOvj4mQgH7KPWDtT fBpWFCTZrsr8lmQCUZ+uT8/x3yOGK72QJGz3Y07+qD5AEXvmbS2KySF4wAtKvMJoAnJR fe2RMBs9RuXFMtpAxr1l9V23+T22JFFu5aSDIY1ajKaRZBNhBRfVxQhCu0Gd8Tu+d5Xk 58KqLfjqLAJs6v7EcSRjKVtY9CYZ26rDQS4oKJIjGbPyjWDTiYXozcd0bSFW3hkuiy7M TzEA81CuiIX23FRy+DQVKGtwuXdJT8uqbqViKVL5buhYadsuy6TO3VYgtYg4dhRWE8PF /5+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=4QNiblDzbXrr30MKxRRZADxW3irTdnjrLLD/9U24IpU=; b=eyyOjSFJcciUjIvV1XzzLUU+PWsCKBl9wtg8s4L5bv6y29IknDsOE7Bgu4NU97iFQ9 hgILuiZkDI/L2+RhUWxQyZJu0Xgt7rOUG2dhTRoMCC3TS/qQSgaYuYMi8HH6l502ySuI HmJQ8GaTuztT/s1TYsPhJC65tZv7mg0XsoHe7c4AP0T9bxmCEDrmk2zRtR88OyaMkroQ iPbjlliviiriFIptfwQID7Bc7BpMhEvOo3op/7ifdtJF9cKR4PWn8Xv2cTa8XSIzslDR JOyjZbUC3QieqZJYvpWnvupS0k8H+QIKkLQc9VHZwDTfZN2/zfb/k8UWMCLB6mHlzV/Z uM0Q== X-Gm-Message-State: AO0yUKW1jKEEF36GS7jx8K2yt1uPJUJGJOzFIyyb9TsVbA3CV1NXyYJn U78cQMOw+Vrf7TjHWnmH/qMiEK2CO0u9XV/IGJ0= X-Google-Smtp-Source: AK7set+TGeyu3BaactVE3AoJPe83tdtwct/ND+kTb3gmRcIRzBb8Y7PtrnouP/UDWd9TTzpN/otPI1Qnu/2SuO2slwA= X-Received: by 2002:a2e:bc16:0:b0:294:69ba:6288 with SMTP id b22-20020a2ebc16000000b0029469ba6288mr466040ljf.4.1676847924041; Sun, 19 Feb 2023 15:05:24 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Christopher Allen Date: Sun, 19 Feb 2023 15:05:12 -0800 Message-ID: To: Andrew Poelstra , Bitcoin Protocol Discussion Content-Type: multipart/alternative; boundary="000000000000dae1c405f5159414" X-Mailman-Approved-At: Sun, 19 Feb 2023 23:34:46 +0000 Subject: Re: [bitcoin-dev] Codex32 X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Feb 2023 23:05:28 -0000 --000000000000dae1c405f5159414 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable An easy but possibly very important tip: If you use only UPPER CASE alpha and numbers in codex32, and avoid most punctuation, it makes QR rendering of it significantly smaller. This is because the QR code to the ISO SPEC, when seeing lowercase, assumes the value is binary, then converts it to a two byte value. If instead, the codex32 is all upper, and it uses only the 45 allowed characters (see https://www.thonky.com/qr-code-tutorial/alphanumeric-table) , it will leave it single byte and try to compress it. Of course it doesn=E2=80=99t compres= s well, but that is OK because it at least didn=E2=80=99t double the size first. See our research on this topic at https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-0= 03-uri-binary-compatibility.md A superior QR codec can do better (see our https://github.com/BlockchainCommons/QRCodeGenerator or https://www.nayuki.io/page/qr-code-generator-library) but many platforms and more basic QR codecs will double the size of the QR if you have any lower case. =E2=80=94 Christopher Allen --000000000000dae1c405f5159414 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable An easy but possibly very important tip:=C2=A0

<= div dir=3D"auto">If you use only UPPER CASE alpha and numbers in codex32, a= nd avoid most punctuation, it makes QR rendering of it significantly smalle= r. This is because the QR code to the ISO SPEC, when seeing lowercase, assu= mes the value is binary, then converts it to a two byte value. If instead, = the codex32 is all upper, and it uses only the 45 allowed characters (see <= div dir=3D"auto">https://www.thonky.com/qr-code-tutorial/alphanumeric-table= ) , it will leave it single byte and try to compress it. Of course it doesn= =E2=80=99t compress well, but that is OK because it at least didn=E2=80=99t= double the size first.=C2=A0

See our research on this topic at=C2=A0

A superior QR codec can do better (see o= ur=C2=A0
https://github.com/BlockchainCommons/QRCodeGenerator or= =C2=A0
https://www.nayuki.io/page/qr-code-generator-library) but= many platforms and more basic QR codecs will double the size of the QR if = you have any lower case.

=E2=80=94 Christopher Allen

<= /div> --000000000000dae1c405f5159414--