# Twtxt is an open, distributed microblogging platform that # uses human-readable text files, common transport protocols, # and free software. # # Learn more about twtxt at https://github.com/buckket/twtxt # # This is an automated Yarn.social feed running feeds v0.1.0@72e53a9 # Learn more about Yarn.social at https://yarn.social # # nick = r-s-doiel-blog # url = https://feeds.twtxt.net/r-s-doiel-blog/twtxt.txt # type = rss # source = https://rsdoiel.github.io/rss.xml # avatar = # description = Robert's ramblings and wonderigs # updated_at = 2024-12-06T17:38:34Z # 2022-10-18T00:00:00Z **7:30 AM, Oberon Language: A minimum SYSTEM module**
Post: Tuesday, October 18, 2022, 7:30 AM

It occurred to me that while the SYSTEM module will need to address the specifics of the hardware and host environment it could support a minimum set of useful constants. What would be extremely helpful would be able to rely on knowing the max size of an INTEGER, the size of CHAR (e.g. 8, 16 or 32 bits), default character encoding used by the compiler (e.g. ASCII, UTF-8). Likewise it would ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/10/18/Wishlist-Oberon-in-2023-2022-10-18_070730.html) 2022-10-16T00:00:00Z **Wish list for Oberon in 2023**
Next year will be ten years since Prof. Wirth and Paul Reed released [Project Oberon 2013](https://www.projectoberon.com). It took me most of that decade to stumble on the project and community. I am left wondering if Prof. Wirth and Paul Reed sat down today what would they design? I think only minor changes are needed and those mostly around assumptions.

The language of Oberon-07 doesn't need to change. I do think the assumptions of the compiler are worth revisiting. ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/10/16/Wishlist-Oberon-in-2023.html) 2022-10-10T00:00:00Z **7:30 AM, Gopher: Setup**
Post: Monday, October 10, 2022, 7:30 AM

Account verified, Yippee!

 ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/10/10/getting-things-setup-2022-10-10_070730.html) 2022-10-09T00:00:00Z **Getting things setup**
I'm digging my [gopherhole on sdf.org](gopher://sdf.org:70/0/users/rsdoiel)
as I wait for my validation to go through. The plan is to migrate content
from rsdoiel.github.io to here and host it in a Gopher context. It's
interesting learning my way around sdf.org. Reminds me of my student days
when I first had access to a Unix system. Each Unix has it own flavors and
even for the same Unix type/version each system has it's own particular
variation. Unix lends itself to customizatio ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/10/09/getting-things-setup.html) 2022-09-28T00:00:00Z **Thinking about Gopher**
Last weekend I visited the [Gophersphere](gopher://gopher.floodgap.com "Floodgap is a good starting point for Gopher") for the first time in a very long time. I'm happy to report it is still alive an active. It remains fast, lower resource consuming. This resulted in finding a Gopher protocol package in Go and adding light weight Gopher server to [pttk](https://rsdoiel.github.io/pttk) my current vehicle for experimenting with plain text writing tools.

I've been thinking allot ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/09/28/thinking-about-gopher.html) 2022-09-27T00:00:00Z **Rust development notes**
I recently wanted to try [ncgopher](https://github.com/jansc/ncgopher) which is a [rust](https://rust-lang.org) based application. I was working on a an M1 Mac mini. I use [Mac Ports](https://www.macports.org) for my userland applications and installed [cargo](https://doc.rust-lang.org/cargo/) to pickup the rust compiler and build tool

\`\`\`shell
sudo port install cargo
\`\`\`

All went well until I tried to build ncgopher and got an error as follows

\`\`\`
cargo build --r ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/09/27/rust-development-notes.html) 2022-09-26T00:00:00Z **7:30 AM, Golang: pttk**
Post: Monday, September 26, 2022, 7:30 AM

renamed "pandoc toolkit" (pdtk) to "plain text toolkit" (pttk) after adding gopher support to cli. This project is less about writing tools specific to Pandoc and more about writing tools oriented around plain text.

 ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/09/26/golang-development-2022-09-26_070730.html) 2022-09-19T00:00:00Z **12:30 PM, SQL: Postgres**
Post: Monday, September 19, 2022, 12:30 PM

Setting up postgres 14 on Ubuntu shell script, see [https://www.postgresql.org/download/linux/ubuntu/](https://www.postgresql.org/download/linux/ubuntu/), see [https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-22-04-quickstart](https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-22-04-quickstart) for setting up initial database and users

 ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/09/19/rosette-notes-2022-09-19_121230.html) 2022-09-19T00:00:00Z **PostgreSQL dump and restore**
This is a quick note on easily dumping and restoring a specific database
in Postgres 14.5. This example has PostgreSQL running on localhost and
[psql](https://www.postgresql.org/docs/current/app-psql.html) and
[pg\_dump](https://www.postgresql.org/docs/current/app-pgdump.html) are both available.
Our database administrator username is "admin", the database to dump is called "collections". The SQL dump
file will be named "collections-dump-2022-09-19.sql".

\`\`\`shel ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/09/19/PostgreSQL-Dump-and-Restore.html) 2022-08-30T00:00:00Z **Ordering front matter**
A colleague of mine ran into an interesting Pandoc behavior. He was combining a JSON metadata document and a converted word document and wanted the YAML front matter to have a specific order of fields (makes it easier for us humans to quickly scan it and see what the document was about).

The order he wanted in the front matter was

\- title
\- interviewer
\- interviewee
\- abstract

This was for a collection of oral histories. When my friend use Pandoc's \`--metadata-json\` to ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/30/Ordering-Frontmatter.html) 2022-08-26T00:00:00Z **10:30 AM, SQL: Postgres**
Post: Friday, August 26, 2022, 10:30 AM

If you are looking for instructions on installing Postgres 14 under Ubuntu 22.04 LTS I found DigitalOcean [How To Install PostgreSQL on Ubuntu 22.04 \\[Quickstart\\]](https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-22-04-quickstart), April 25, 2022 by Alex Garnett helpful.

 ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/26/rosette-notes-2022-08-26_101030.html) 2022-08-26T00:00:00Z **Postgres 14 on Ubuntu 22.04 LTS**
This is just a quick set of notes for working with Postgres 14 on an Ubuntu 22.04 LTS machine. The goal is to setup Postgres 14 and have it available for personal work under a user account (e.g. jane.doe).

Assumptions

\- include \`jane.doe\` is in the sudo group
\- \`jane.doe\` is the one logged in and installing Postgres for machine wide use
\- \`jane.doe\` will want to work with her own database by default

Steps

1\. Install Postgres
2\. Confirm install ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/26/postgres-14-on-ubuntu-22.04-LTS.html) 2022-08-24T00:00:00Z **12:00 PM, SQL: Postgres**
Post: Wednesday, August 24, 2022, 12:00 PM

I miss \`SHOW TABLES\` it's just muscle memory from MySQL, the SQL to show tables is \`SELECT tablename FROM pg\_catalog.pg\_tables WHERE tablename NOT LIKE 'pg\_%'
\`. I could write a SHOWTABLE in PL/pgSQL procedure implementing MySQL's "SHOW TABLES". Might be a good way to learn PL/pgSQL. I could then do one for MySQL and compare the PL/SQL language implementations.

 ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/24/rosette-notes-2022-08-24_121200.html) 2022-08-24T00:00:00Z **A Quick into to PL/pgSQL**
PL/pgSQL is a procedure language extended from SQL. It adds flow control and local state for procedures, functions and triggers. Procedures, functions and triggers are also the compilation unit. Visually PL/pgSQL looks similar to the MySQL or ORACLE counter parts. It reminds me of a mashup of ALGO and SQL. Like the unit of compilation, the unit of execution is also procedure, function or trigger.

The Postgres documentation defines and explains the [PL/pgSQL](https://www.postg ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/24/plpgsql-quick-intro.html) 2022-08-22T00:00:00Z **11:30 AM, SQL: Postgres**
Post: Monday, August 22, 2022, 11:30 AM

Three things have turned out to be challenges in the SQL I write, first back ticks is a MySQL-ism for literal quoting of table and column names, causes problems in Postgres. Second issue is "REPLACE" is a none standard extension I picked up from MySQL [it wraps a DELETE and INSERT together](https://dev.mysql.com/doc/refman/8.0/en/extensions-to-ansi.html), should be using UPDATE more than I have done in the past. The third is ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/22/rosette-notes-2022-08-22_111130.html) 2022-08-19T00:00:00Z **Rosette Notes: Postgres and MySQL**
\> A dance around two relational databases, piecing together similarities as with the tiny mosaic tiles of a guitar's rosette

What follows are my preliminary notes learning Postgres 12 and 14.

This is a short comparison of some administrative commands I commonly use. The first column describes the task followed by the SQL to execute for Postgres 14.5 and then MySQL 8. The presumption is you're using \`psql\` to access Postgres and \`mysql\` to access MySQL. Values between ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/19/rosette-notes.html) 2022-08-15T00:00:00Z **PTTK and STN**
This log is a proof of concept in using [simple timesheet notation](https://rsdoiel.github.io/stngo/docs/stn.html) as a source for very short blog posts. The tooling is written in Golang (though eventually I hope to port it to Oberon-07). The implementation combines two of my personal projects, [stngo](https://github.com/rsdoiel/stngo) and my experimental writing tool [pttk](https://github.com/rsdoiel/pttk). Updating the \_\_pttk\_\_ cli I added a function to the "blogit" action that will ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/15/golang-development.html) 2022-08-15T00:00:00Z **5:45 PM, Golang: ptdk, stngo**
Post: Monday, August 15, 2022, 5:45 PM

Thinking through what a "post" from an simple timesheet notation file should look like. One thing occurred to me is that the entry's "end" time is the publication date, not the start time. That way the post is based on when it was completed not when it was started. There is an edge case of where two entries end at the same time on the same date. The calculated filename will collide. In the \`BlogSTN()\` function I c ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/15/golang-development-2022-08-15_170545.html) 2022-08-14T00:00:00Z **5:00 PM, Golang: pdtk, stngo**
Post: Sunday, August 14, 2022, 5:00 PM

Today I started an experiment. I cleaned up stngo a little today, still need to implement a general \`Parse()\` method that works on a \`io.Reader\`. After a few initial false starts I realized the "right" place for rendering simple timesheet notation as blog posts is in the the "blogit" action of [pdtk](https://rsdoiel.github.io/pttk). I think this form might be useful for both release notes in projects as well as ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/14/golang-development-2022-08-14_170500.html) 2022-08-12T00:00:00Z **4:30 PM, Golang: stngo**
Post: Friday, August 12, 2022, 4:30 PM

A work slack exchange has perked my interest in using [simple timesheet notation](https://rsdoiel.github.io/stngo/docs/stn.html) for very short blog posts. This could be similar to Dave Winer title less posts on [scripting](http://scripting.com). How would this actually map? Should it be a tool in the [stngo](https://rsdoiel.githubio/stngo) project?

 ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/12/golang-development-2022-08-12_160430.html) 2022-07-30T00:00:00Z **Turbo Oberon, the dream**
Sometimes I have odd dreams and that was true last night through early this morning. The dream was set in the future. I was already retired. It was a dream about "Turbo Oberon".

"Turbo Oberon" was an Oberon language. The language compiler was named "TO" in my dream. A module's file extension was ".tom", in honor of Tom Lopez (Meatball Fulton) of ZBS. There were allot of ZBS references in the dream.

"TO" was very much a language in the Oberon-07 tradition with minor extensions when i ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/07/30/Turbo-Oberon.html) 2022-07-27T00:00:00Z **Artemis Project Status, 2022**
It's been a while since I wrote an Oberon-07 post and even longer since I've worked on Artemis. Am I done with Oberon-07 and abandoning Artemis? No. Life happens and free time to just hasn't been available. I don't know when that will change.

Since I plan to continue working Artemis I need to find a way forward in much less available time. Time to understand some of my constraints.

1\. I work on a variety of machines, OBNC is the only compiler I've consistently be ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/07/27/Artemis-Status-Summer-2022.html) 2022-07-12T00:00:00Z **4:30 PM, Golang: stngo**
Post: Friday, August 12, 2022, 4:30 PM

A work slack exchange has perked my interest in using [simple timesheet notation](https://rsdoiel.github.io/stngo/docs/stn.html) for very short blog posts. This could be similar to Dave Winer title less posts on [scripting](http://scripting.com). How would this actually map? Should it be a tool in the [stngo](https://rsdoiel.githubio/stngo) project?

 ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/08/12/golang-development-2022-08-12_160430.html) 2022-02-18T00:00:00Z **Installing Golang from source on RPi-OS for arm64**
This are my quick notes on installing Golang from source on the Raspberry Pi OS 64 bit.

1\. Get a working compiler
 a. go to https://go.dev/dl/ and download go1.17.7.linux-arm64.tar.gz
 b. untar the tarball in your home directory (it'll unpack to $HOME/go)
 c. \`cd go/src\` and \`make.bash\`
2\. Move go directory to go1.17
3\. Clone go from GitHub
4\. Compile with the downloaded compiler
 a. \`cd go/src\`
 b. \`env GOROOT\_BOOTSTRAP= ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/02/18/Installing-Go-from-Source-RPiOS-arm64.html) 2021-12-18T00:00:00Z **Notes on setting up a Mid-2010 Mac Mini**
I acquired a Mid 2010 Mac Mini. It was in good condition but lacked an OS on the hard drive. I used a previously purchased copy of Mac OS X Snow Leopard to get an OS up and running on the bare hardware. Then it was a longer effort to get the machine into a state with the software I wanted to use on it. My goal was Mac OS X High Sierra, Xcode 10.1 and Mac Ports. The process was straight forward but very time consuming but I think worth it. I wound ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/12/18/Notes-on-setting-up-a-2010-Mac-Mini.html) 2021-11-27T00:00:00Z **Setting up FreeDOS 1.3rc4 with Qemu**
In this article I'm going explore setting up FreeDOS with Qemu
on my venerable Dell 4319 running Raspberry Pi Desktop OS (Debian
GNU/Linux). First step is to download FreeDOS "Live CD" in the
1.3 RC4 release. See http://freedos.org/download/ for that.

I needed to install Qemu in my laptop. It runs the Raspberry Pi
Desktop OS (i.e. Debian with Raspberry Pi UI). I choose to install
the "qemu-system" package since I will likely use qemu for other
things besides F ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/11/27/FreeDOS-1.3rc4-with-Qemu.html) 2021-11-26T00:00:00Z **Portable Conversions (Integers)**
An area in working with Oberon-07 on a POSIX machine that has proven problematic is type conversion. In particular converting to and from INTEGER or REAL and ASCII. None of the three compilers I am exploring provide a common way of handling this. I've explored relying on C libraries but that approach has it's own set of problems. I've become convinced a better approach is a pure Oberon-07 library that handles type conversion with a minimum of assumptions about ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/11/26/Portable-Conversions-Integers.html) 2021-11-22T00:00:00Z **Revisiting Files**
In October I had an Email exchange with Algojack regarding a buggy example in [Oberon-07 and the file system](../../../2020/05/09/Oberon-07-and-the-filesystem.html). The serious bug was extraneous non-printable characters appearing a plain text file containing the string "Hello World". The trouble with the example was a result of my misreading the Oakwood guidelines and how \*\*Files.WriteString()\*\* is required to work. The \*\*Files.WriteString()\*\* procedure is supposed to write eve ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/11/22/Revisiting-Files.html) 2021-06-22T00:00:00Z **Revisiting Files**
In October I had an Email exchange with Algojack regarding a buggy example in [Oberon-07 and the file system](../../../2020/05/09/Oberon-07-and-the-filesystem.html). The serious bug was extraneous non-printable characters appearing a plain text file containing the string "Hello World". The trouble with the example was a result of my misreading the Oakwood guidelines and how \*\*Files.WriteString()\*\* is required to work. The \*\*Files.WriteString()\*\* procedure is supposed to write eve ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/11/22/Revisiting-Files.html) 2021-06-14T00:00:00Z **Combining Oberon-07 with C using Obc-3**
This post explores integrating C code with an Oberon-07 module use
Mike Spivey's Obc-3 Oberon Compiler. Last year I wrote a similar post
for Karl Landström's [OBNC](/blog/2020/05/01/Combining-Oberon-and-C.html).
This goal of this post is to document how I created a version of Karl's
Extension Library that would work with Mike's Obc-3 compiler.
If you want to take a shortcut you can see the results on GitHub
in my [obc-3-libext](https://github.c ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/06/14/Combining-Oberon-07-with-C-using-Obc-3.html) 2021-05-16T00:00:00Z **Beyond Oakwood, Modules and Aliases**
Oakwood is the name used to refer to an early Oberon language
standardization effort in the late 20th century. It's the name
of a hotel where compiler developers and the creators of Oberon
and the Oberon System met to discuss compatibility. The lasting
influence on the 21st century Oberon-07 language can be seen
in the standard set of modules shipped with POSIX based Oberon-07
compilers like
[OBNC](https://miasap.se/obnc/), [Vishap Oberon Compiler](ht ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/05/16/Beyond-Oakwood-Modules-and-Aliases.html) 2021-05-14T00:00:00Z **Combining Oberon-07 with C using Obc-3**
This post explores integrating C code with an Oberon-07 module use
Mike Spivey's Obc-3 Oberon Compiler. Last year I wrote a similar post
for Karl Landström's [OBNC](/blog/2020/05/01/Combining-Oberon-and-C.html).
This goal of this post is to document how I created a version of Karl's
Extension Library that would work with Mike's Obc-3 compiler.
If you want to take a shortcut you can see the results on GitHub
in my [obc-3-libext](https://github.c ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/06/14/Combining-Oberon-07-with-C-using-Obc-3.html) 2021-04-25T00:00:00Z **Ofront on Raspberry Pi OS**
This post is about getting Ofront[^1] up and running on Raspberry Pi OS[^2].
Ofront provides a Oberon-2 to C transpiler as well as a Oberon V4[^3]
development environment. There are additional clever tools like \`ocat\`
that are helpful working with the differences in text file formats between
Oberon System 3, V4 and POSIX. The V4 implementation sits nicely on top of
POSIX with minimal compromises that distract from the Oberon experience.

[^1]: Ofront was developed by J ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/04/25/Ofront-on-Rasberry-Pi-OS.html) 2021-04-16T00:00:00Z **Beyond Oakwood, Modules and Aliases**
Oakwood is the name used to refer to an early Oberon language
standardization effort in the late 20th century. It's the name
of a hotel where compiler developers and the creators of Oberon
and the Oberon System met to discuss compatibility. The lasting
influence on the 21st century Oberon-07 language can be seen
in the standard set of modules shipped with POSIX based Oberon-07
compilers like
[OBNC](https://miasap.se/obnc/), [Vishap Oberon Compiler](ht ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/05/16/Beyond-Oakwood-Modules-and-Aliases.html) 2021-04-16T00:00:00Z **Updating Schema in SQLite3**
[SQLite3](https://sqlite.org/docs.html) is a handy little
database as single file tool. You can interact with the file
through largely standard SQL commands and embed it easily into
applications via the C libraries that the project supports.
It is also available from various popular scripting languages
like Python, PHP, and Lua. One of the things I occasionally
need to do and always seems to forget it how to is modify a
table schema where I need to remove a column[^1] ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/04/16/Updating-Schema-in-SQLite3.html) 2021-04-02T00:00:00Z **A2 Oberon on VirtualBox 6.1**
This is a short article documenting how I install A2 Oberon
in VirtualBox using the [FreeDOS 1.2](https://freedos.org),
the A2 [ISO](https://sourceforge.net/projects/a2oberon/files/) cd image and [VirtualBox 6.1](https://virtualbox.org).

1\. Download the ISO images for FreeDOS and A2
2\. Create a new Virtual Machine
3\. Install FreeDOS 1.2 (Base install) in the virtual machine
4\. Install A2 from the ISO image over the FreeDOS installation

From working with Native ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/04/02/A2-Oberon-on-VirtualBox-6.1.html) 2021-03-17T00:00:00Z **ETH Oberon System 3 on VirtualBox 6.1**
In this post I am walking through installing Native Oberon 2.3.7
(aka ETH Oberon System 3) on a virtual machine running under
VirtualBox 6.1. It is a follow up to my 2019 post
[FreeDOS to Oberon System 3](/blog/2019/07/28/freedos-to-oberon-system-3.html "Link to old blog post for bringing up Oberon System 3 in VirtualBox 6.0 using FreeDOS 1.2"). To facilitate the install I will first prepare
my virtual machine as a FreeDOS 1.2 box. This simplifies getting the
 ... ⌘ [Read more](https://rsdoiel.github.io/blog/2021/03/17/NativeOberon-VirtualBox.html) 2020-12-24T00:00:00Z **RetroFlag GPi Case Setup**
These are my notes for setting up a RetroFlag GPi case using Recalbox
distribution for retro gaming.

\+ RetroFlag GPi Case Kit (including a Raspberry Pi Zero W and blank SD Card)
\+ A computer to setup the SD Card and the Raspberry Pi Imager v1.5

We will be installing [Recalbox](https://www.recalbox.com/ "the all-in-one retro gaming console")
v7.7.x for Raspberry Pi Zero W and GPi case. Recalbox which is a Retro
Gaming Linux distribution.

1\. Download the appropriate Raspberry P ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/12/24/gpi-case-setup.html) 2020-11-27T00:00:00Z **Dates**
This module provides minimal date time records and procedures
for working with dates in YYYY-MM-DD and MM/DD/YYYY format and
times in H:MM, HH:MM and HH:MM:SS formats.

Set
: Set a DateTime record providing year, month, day, hour, minute and second as integers and the DateTime record to be populated.

SetDate
: Set the date portion of a DateTime record, leaves the hour, minute and second attributes unmodified.

SetTime
: Set the time portion of a DateTime record, leaves the year, month, date attributes unmodi ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/11/27/Dates.html) 2020-11-27T00:00:00Z **Dates & Clock**
The [Oakwood](http://www.edm2.com/index.php/The\_Oakwood\_Guidelines\_for\_Oberon-2\_Compiler\_Developers#The\_Oakwood\_Guidelines)
guidelines specified a common set of modules for Oberon-2 for writing
programs outside of an Oberon System. A missing module from the Oakwood
guidelines is modules for working with dates and the system clock.
Fortunately the A2 Oberon System[^1] provides a template for that
functionality. In this article I am exploring implementing the
[Dates](Dates.Mod) and [Cl ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/11/27/Dates-and-Clock.html) 2020-11-27T00:00:00Z **Clock**
This is a C time library wrapper for getting system time
to support Dates.Mod. The procedures are read only as
setting time is non-standard on many Unix-like systems[^1].
The two procedures follow the A2 style procedure signatures
adjusted for Oberon-07.

[^1]: Eric Raymond discusses time functions, http://www.catb.org/esr/time-programming/

~~~
MODULE Clock;

PROCEDURE GetRtcTime\*(VAR second, minute, hour, day, month, year : INTEGER);
BEGIN
END GetRtcTime; ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/11/27/Clock.html) 2020-11-27T00:00:00Z **Chars**
This module provides common character oriented tests.

InRange
: Check to see if a character, c, is in an inclusive range from a lower to upper character.

IsUpper
: Check to see if a character is upper case

IsLower
: Check to see if a character is lower case ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/11/27/Chars.html) 2020-11-11T00:00:00Z ****
The Project Gutenberg EBook of The Magna Carta, by Anonymous

This eBook is for the use of anyone anywhere in the United States and most
other parts of the world at no cost and with almost no restrictions
whatsoever. You may copy it, give it away or re-use it under the terms of
the Project Gutenberg License included with this eBook or online at
www.gutenberg.org. If you are not located in the United States, you'll have
to check the laws of the country where you are located before using this ebook.

Title: Th ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/11/11/magnacarta.html) 2020-11-11T00:00:00Z ****
The Project Gutenberg EBook of The Declaration of Independence of The
United States of America by Thomas Jefferson

This eBook is for the use of anyone anywhere at no cost and with almost no
restrictions whatsoever. You may copy it, give it away or re-use it under
the terms of the Project Gutenberg License included with this eBook or
online at http://www.gutenberg.org/license

Title: The Declaration of Independence of The United States of America ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/11/11/independence.html) 2020-11-11T00:00:00Z ****
The Project Gutenberg EBook of The United States' Constitution
by Founding Fathers

Copyright laws are changing all over the world. Be sure to check the
copyright laws for your country before downloading or redistributing
this or any other Project Gutenberg eBook.

This header should be the first thing seen when viewing this Project
Gutenberg file. Please do not remove it. Do not change or edit the
header without written permission.

Please read the "legal small print," and other information about the
eBoo ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/11/11/constitution.html) 2020-11-11T00:00:00Z **Pandoc & Metadata**
Pandoc supports three ways of providing metadata to its template
engine.

1\. Front matter
2\. Command line optional metadata
3\. A JSON metadata file.

Front matter is a community term that comes from physical world
of paper books and articles. It is the information that comes
before the primary content. This information might be things
like title, author, publisher and publication date. These days
it'll also include things like identifiers like ISSN, ISBN possibly
newer identifiers lik ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/11/11/Pandoc-Metadata.html) 2020-11-09T00:00:00Z ****
Most people know about [Pandoc](https://pandoc.org/) from its
fantastic ability to convert various markup formats from one to
another. A little less obvious is Pandoc can be a template engine
for rendering static websites allowing you full control over the
rendered content.

The main Pandoc documentation of the template engine can be found
in the [User Guide](https://pandoc.org/MANUAL.html#templates).
The documentation is complete in terms of describing the template
capabilities but lacks a tutorial for ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/11/09/Pandoc-Partials.html) 2020-10-31T00:00:00Z **Software Tools, Filters**
This post is the second in a series revisiting the programs
described in the 1981 book by Brian W. Kernighan and P. J.
Plauger's called [Software Tools in Pascal](https://archive.org/details/softwaretoolsinp00kern). The book is available from the
[Open Library](https://openlibrary.org/) and physical copies
are still (2020) commonly available from used book sellers.
The book was an late 20th century text on creating portable
command line programs using ISO standard Pascal of the era.

In th ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/10/31/Filters.html) 2020-10-19T00:00:00Z **Assembling Pages**
This is the thirteenth post in the [Mostly Oberon](https://rsdoiel.github.io/blog/2020/04/11/Mostly-Oberon.html) series. Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the various rabbit holes I will inevitably fall into.

I use [Pandoc](https://pandoc.org) to process Markdown documents. I like to keep my
front matter in JSON rather than Pandoc's YAML. Fortunately Pandoc
does support working with JSON as a metadata file include. Normally I would
manually s ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/10/19/Assemble-pages.html) 2020-10-09T00:00:00Z **Assembling Pages**
This is the thirteenth post in the [Mostly Oberon](https://rsdoiel.github.io/blog/2020/04/11/Mostly-Oberon.html) series. Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the various rabbit holes I will inevitably fall into.

I use [Pandoc](https://pandoc.org) to process Markdown documents. I like to keep my
front matter in JSON rather than Pandoc's YAML. Fortunately Pandoc
does support working with JSON as a metadata file include. Normally I would
manually s ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/10/19/Assemble-pages.html) 2020-10-03T00:00:00Z **Pandoc Partials**
Most people know about [Pandoc](https://pandoc.org/) from its
fantastic ability to convert various markup formats from one to
another. A little less obvious is Pandoc can be a template engine
for rendering static websites allowing you full control over the
rendered content.

The main Pandoc documentation of the template engine can be found
in the [User Guide](https://pandoc.org/MANUAL.html#templates).
The documentation is complete in terms of describing the template
capabilities but lacks ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/11/09/Pandoc-Partials.html) 2020-10-03T00:00:00Z **Oberon to Markdown**
This is the twelfth post in the [Mostly Oberon](https://rsdoiel.github.io/blog/2020/04/11/Mostly-Oberon.html) series. Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the various rabbit holes I will inevitably fall into.

Oberon source code has a very nice property in that anything
after the closing end statement is ignored by the compiler.
This makes it a nice place to write documentation, program
notes and other ideas.

I've gotten in the habit of wr ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/10/03/Oberon-to-markdown.html) 2020-09-29T00:00:00Z **Software Tools, Getting Started**
This post is the first in a series revisiting the
programs described in the 1981 book by Brian W. Kernighan and
P. J. Plauger's called [Software Tools in Pascal](https://archive.org/details/softwaretoolsinp00kern).
The book is available from the [Open Library](https://openlibrary.org/)
and physical copies are still (2020) commonly available from used book
sellers. The book was an early text on creating portable command
line programs.

In this series I present the K & P (i. ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/09/29/Software-Tools-1.html) 2020-09-03T00:00:00Z **Oberon to Markdown**
This is the twelfth post in the [Mostly Oberon](https://rsdoiel.github.io/blog/2020/04/11/Mostly-Oberon.html) series. Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the various rabbit holes I will inevitably fall into.

Oberon source code has a very nice property in that anything
after the closing end statement is ignored by the compiler.
This makes it a nice place to write documentation, program
notes and other ideas.

I've gotten in the habit of wr ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/10/03/Oberon-to-markdown.html) 2020-08-29T00:00:00Z **Software Tools, Getting Started**
This post is the first in a series revisiting the
programs described in the 1981 book by Brian W. Kernighan and
P. J. Plauger's called [Software Tools in Pascal](https://archive.org/details/softwaretoolsinp00kern).
The book is available from the [Open Library](https://openlibrary.org/)
and physical copies are still (2020) commonly available from used book
sellers. The book was an early text on creating portable command
line programs.

In this series I present the K & P (i. ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/09/29/Software-Tools-1.html) 2020-08-15T00:00:00Z **Portable Oberon-07**
This is the eleventh post in the [Mostly Oberon](../../04/11/Mostly-Oberon.html) series.
Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the
various rabbit holes I will inevitably fall into.

By R. S. Doiel, 2020-08-15 (updated: 2020-09-05)

Karl Landström's [OBNC](https://miasap.se/obnc/), Oberon-07 compiler,
comes with an Oberon-2 inspired set of modules
described in the Oakwood Guidelines as well as
several very useful additions making Oberon-07 su ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/08/15/Portable-Oberon-07.html) 2020-07-15T00:00:00Z **Portable Oberon-07**
This is the eleventh post in the [Mostly Oberon](../../04/11/Mostly-Oberon.html) series.
Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the
various rabbit holes I will inevitably fall into.

By R. S. Doiel, 2020-08-15 (updated: 2020-09-05)

Karl Landström's [OBNC](https://miasap.se/obnc/), Oberon-07 compiler,
comes with an Oberon-2 inspired set of modules
described in the Oakwood Guidelines as well as
several very useful additions making Oberon-07 su ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/08/15/Portable-Oberon-07.html) 2020-07-08T00:00:00Z **Words Matter**
UPDATE (2020-08-15, RSD): When I added a post today I was VERY pleased to
to see that GitHub now allows me to publish my blog via the "main" branch.
It's nice to see the change in the words we use.

\*\*Why does software development use the vocabulary of slavery and
Jim Crow to describe our creations?\*\* What we call things matters.
This is especially true of the words we use day to day without thinking.

\`\`\`shell
 git pull origin master
\`\`\`

"Naming things is a hard problem in computer s ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/07/08/words-matter.html) 2020-07-07T00:00:00Z **Procedures in records**
This is the tenth post in the [Mostly Oberon](../../04/11/Mostly-Oberon.html) series.
Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the
various rabbit holes I will inevitably fall into.

In my last post I looked at how Oberon-07 supports the passing of procedures as parameters in a procedure. In this one I am looking at how we can
include procedures as a part of an Oberon RECORD.

Let's modify our module name [Noises.Mod](Noises.Mod) to explor ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/07/07/Procedures-in-records.html) 2020-06-20T00:00:00Z **Procedures as parameters**
This is the ninth post in the [Mostly Oberon](../../04/11/Mostly-Oberon.html) series.
Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the
various rabbit holes I will inevitably fall into.

Oberon-07 supports the passing of procedures as parameters in a procedure.
Let's create a module name [Noises.Mod](Noises.Mod) to explore this.

The key to supporting this is Oberon's type system. We need to decide what our
generic procedure will look li ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/06/20/Procedures-as-parameters.html) 2020-05-25T00:00:00Z **Dynamic types**
This is the eighth post in the [Mostly Oberon](../../04/11/Mostly-Oberon.html)
series. Mostly Oberon documents my exploration of the Oberon Language,
Oberon System and the various rabbit holes I will inevitably fall into.

Oberon-07 is a succinct systems language. It provides a minimal
but useful set of basic static types. Relying on them addresses
many common programming needs. The Oberon compiler ensures
static types are efficiently allocated in memory. One of the
strengths of Oberon is this ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/05/25/Dynamic-types.html) 2020-05-09T00:00:00Z **Oberon-07 and the file system**
By R. S. Doiel, 2020-05-09 (updated: 2021-10-29)

This is the seventh post in the [Mostly Oberon](../../04/11/Mostly-Oberon.html) series. Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the various rabbit holes I will inevitably fall into.

In a POSIX system we often talk of opening files,
writing and reading files and close files. The Oberon
language reflects a more Oberon System point of view.

The Oberon System generally avoids ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/05/09/Oberon-07-and-the-filesystem.html) 2020-05-06T00:00:00Z **Compiling OBNC on macOS**
This is the sixth post in the [Mostly Oberon](../../04/11/Mostly-Oberon.html) series. Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the various rabbit holes I will inevitably fall into.

Compiling OBNC v0.16.1 on macOS (10.13.6) using MacPorts (2.6.2)
is straight forward if you have the required dependencies and
environment setup up. Below are my notes to get everything working.

\+ OBNC v0.16.1
\+ SDL v1.2
\+ Boehm-Demers-Weiser GC
\+ A C ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/05/06/Compiling-OBNC-on-macOS.html) 2020-05-01T00:00:00Z **Combining Oberon-07 and C with OBNC**
This is the fifth post in the [Mostly Oberon](../../04/11/Mostly-Oberon.html)
series. Mostly Oberon documents my exploration of the Oberon
Language, Oberon System and the various rabbit holes I will
inevitably fall into.

In my day job I write allot of code in Go and
orchestration code in Python. It's nice having
the convenience of combining code written one
language with an another. You can do the same
with [OBNC](https://miasap.se/obnc/). The OBNC
compiler supp ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/05/01/Combining-Oberon-and-C.html) 2020-04-19T00:00:00Z **Oberon Loops and Conditions**
This is the four post in the [Mostly Oberon](../11/Mostly-Oberon.html) series. Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the various rabbit holes I will inevitably fall into.

Oberon is a small systems language and while it is minimalist.
It provides you with the necessary primitives to get things done.
I've touched on code organization, basic types and basic type
extensions in the previous articles. I have shown the bas ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/04/19/Mostly-Oberon-Loops-and-Conditions.html) 2020-04-18T00:00:00Z **Oberon Basic Types**
This is the third post in the [Mostly Oberon](../11/Mostly-Oberon.html) series. Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the various rabbit wholes I inevitably fell into.

Oberon is a small systems language. It provides a useful but
limited umber of basic types. These can be be
thought of as simple types mapping to specific memory locations
and more complex types composed of multiple memory locations.

NOTE: \_\_basic types\_\_, INTEGER, ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/04/18/Mostly-Oberon-Basic-Types.html) 2020-04-12T00:00:00Z **Oberon Modules and Procedures**
This is the second post in the [Mostly Oberon](../11/Mostly-Oberon.html) series. Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the various rabbit wholes I inevitably fell into.

The module is a primary code unit of Oberon language. Modules allow you to focus on functional units of code and can be readily composed into larger solutions.
A module's name should match the filename you are saving it under. A module starts with declaring it' ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/04/12/Mostly-Oberon-Modules.html) 2020-04-11T00:00:00Z **Mostly Oberon**
\*\*Mostly Oberon\*\* is a series of blog posts documenting my exploration of the Oberon Language, Oberon System and the various rabbit wholes I inevitably fell into.

Oberon is a classical computer language and operating system originated by Professors Niklaus Wirth and Jürg Gutknecht at [ETH](https://en.wikipedia.org/wiki/ETH\_Zurich) circa 1987. It was inspired by their experiences in California at the [Xerox Palo Alto Research Center](https://en.wikipedia.org/wiki/PARC\_\\(company\\)). Thi ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/04/11/Mostly-Oberon.html) 2020-04-01T00:00:00Z **Combining Oberon-07 and C with OBNC**
This is the fifth post in the [Mostly Oberon](../../04/11/Mostly-Oberon.html)
series. Mostly Oberon documents my exploration of the Oberon
Language, Oberon System and the various rabbit holes I will
inevitably fall into.

In my day job I write allot of code in Go and
orchestration code in Python. It's nice having
the convenience of combining code written one
language with an another. You can do the same
with [OBNC](https://miasap.se/obnc/). The OBNC
compiler supp ... ⌘ [Read more](https://rsdoiel.github.io/blog/2020/05/01/Combining-Oberon-and-C.html) 2019-07-28T00:00:00Z ****
gadgets1.arc is exactly the same as gadgets.arc, except that the
following picture decoding modules have been removed to reduce
its size to below 1.44Mb:
 TGA.Obj IFF.Obj XPM.Obj PPM.Obj

This is a temporary fix until the next release. ... ⌘ [Read more](https://rsdoiel.github.io/blog/2019/07/28/gadgets1.html) 2019-07-28T00:00:00Z **FreeDOS 1.2 to Oberon System 3**
\> UPDATE: (2021-02-26, RSD) Under VirtualBox 6.1 these
\> instructions still fail. My hope is to revise these
\> instructions when I get it all sorted out.
>
\> Many links such as the ftp site at ETH Oberon are
\> no more. I've updated this page to point at Wayback machine
\> or included content in here where I cannot find it else where.
>
\> UPDATE: (2021-02-19, RSD) Under VirtualBox 6.1 these instructions
\> fail. For VirtualBox I’ve used FreeDOS 1.3rc3 Live CD ... ⌘ [Read more](https://rsdoiel.github.io/blog/2019/07/28/freedos-to-oberon-system-3.html) 2018-07-22T00:00:00Z **Review: Software Tools in Pascal**
This book is by Brian W. Kernighan and P. J. Plauger. It is an
example of the type of books I find I re-read and want in my
personal library. The book covers software construction through
a series of programs written in pascal. It is about how these
programs work, how to approach problems and write sound software.
I was surprised I did not know about this book when I was browsing
the [Open Library](https://openlibrary.org) this weekend. While
Pascal was a popular ... ⌘ [Read more](https://rsdoiel.github.io/blog/2018/07/22/software-tools-in-pascal.html) 2018-03-11T00:00:00Z **Accessing Go from Julia**
The problem: I've started exploring Julia and I would like to leverage existing
code I've written in Go. Essentially this is a revisit to the problem in my
last post [Go based Python Modules](https://rsdoiel.github.io/blog/2018/02/24/go-based-python-modules.html)
but with the language pairing of Go and Julia.

In out first example we send an integer value from
Julia to Go and back via a C shared library (written in Go). While Julia doesn't
require type declarations I will b ... ⌘ [Read more](https://rsdoiel.github.io/blog/2018/03/11/accessing-go-from-julia.html) 2018-02-24T00:00:00Z **Go based Python modules**
The problem: I have written a number of Go packages at work.
My colleagues know Python and I'd like them to be able to use the
packages without resorting to system calls from Python to the
command line implementations. The solution is create a C-Shared
library from my Go packages, using Go's \_C\_ package and combine it
with Python's \_ctypes\_ package. What follows is a series of
simple recipes I used to understand the details of how that worked.

Many of the the examples ... ⌘ [Read more](https://rsdoiel.github.io/blog/2018/02/24/go-based-python-modules.html) 2018-02-19T00:00:00Z **Go, Bleve and Library oriented software**
In 2016, Stephen Davison, asked me, "Why use Go and Blevesearch for
our library projects?" After our conversation I wrote up some notes so
I would remember. It is now 2018 and I am revising these notes. I
think our choice paid off. What follows is the current state of my
reflection on the background, rational, concerns, and risk mitigation
strategies so far for using [Go](https://golang.org) and
[Blevesearch](https://blevesearch.com) for Caltech Library proje ... ⌘ [Read more](https://rsdoiel.github.io/blog/2018/02/19/go-bleve-and-libraries.html) 2017-12-18T00:00:00Z **Raspbian Stretch on DELL E4310 Laptop**
Today I bought a used Dell E4310 laptop. The E4310 is an "old model" now
but certainly not vintage yet. It has a nice keyboard and reasonable
screen size and resolution. I bought it as a writing machine. I mostly
write in Markdown or Fountain depending on what I am writing these days.

The machine came with a minimal bootable Windows 7 CD and an blank
internal drive. Windows 7 installed fine but was missing the network
drivers for WiFi. I had previously copi ... ⌘ [Read more](https://rsdoiel.github.io/blog/2017/12/18/raspbian-stretch-on-amd64.html) 2017-12-10T00:00:00Z **Harvesting my Gists from GitHub**
This is a just quick set of notes on harvesting my Gists on GitHub so I
have an independent copy for my own website.

In this gist I assume you are using Bash on a POSIX system (e.g. Raspbian
on a Raspberry Pi) with the standard compliment of Unix utilities (e.g. cut,
sed, curl). I also use Stephen Dolan's [jq](https://github.com/stedolan/jq)
as well as Caltech Library's [datatools](https://github.com/caltechlibrary/datatools).
See the respective GitHub repo ... ⌘ [Read more](https://rsdoiel.github.io/blog/2017/12/10/harvesting-my-gists-from-github.html) 2017-10-20T00:00:00Z **NodeJS, NPM, Electron**
Electron is an app platform leveraging web technologies. Conceptually it is a
mashup of NodeJS and Chrome browser. [Electron](https://electron.atom.io/) site
has a nice starter app. It displays a window with Electron version info and
'hello world'.

Before you can get going with \_Electron\_ you need to have a
working \_NodeJS\_ and \_NPM\_. I usually compile from source and this
was my old recipe (adjusted for v8.7.0).

\`\`\`shell
 cd
 git clone https://github.com/nodejs/node.git ... ⌘ [Read more](https://rsdoiel.github.io/blog/2017/10/20/node-npm-electron.html) 2017-06-16T00:00:00Z **Cross compiling Go 1.8.3 for Pine64 Pinebook**
Pine64's Pinebook has a 64-bit Quad-Core ARM Cortex A53 which is
not the same ARM processor found on a Raspberry Pi 3. As a
result it needs its own compiled version of Go. Fortunately cross
compiling Go is very straight forward. I found two helpful Gists
on GitHub discussing compiling Go for a 64-Bit ARM processor.

\+ [conoro's gist](https://gist.github.com/conoro/4fca191fad018b6e47922a21fab499ca)
\+ [truedat101's gist](https://gist.github.com/truedat101/58 ... ⌘ [Read more](https://rsdoiel.github.io/blog/2017/06/16/cross-compiling-go.html) 2016-09-20T00:00:00Z **Android, Termux and Dev Environment**
Recently I got a new Android 6 tablet. I got a case with a tiny Bluetooth keyboard. I started wondering if I could use it as a development device when on the road. So this is my diary of that test.

1\. Find a way to run Bash without rooting my device
2\. See if I could use my normal web toolkit
 \+ curl
 \+ jq
 \+ sed
 \+ grep
3\. See if I could compile or add my own custom Golang programs
4\. Test setup by running a local static file server, mkpage and ... ⌘ [Read more](https://rsdoiel.github.io/blog/2016/09/20/Android-Termux-Dev-environment.html) 2016-08-16T00:00:00Z **From Markdown and Bash to mkpage**
When I started maintaining a website on GitHub a few years ago my needs
were so simple I hand coded the HTML. Eventually I adopted
a markdown processor for maintaining the prose. My "theme" was a
CSS file and some HTML fragments to wrap the markdown output. If I needed
interactivity I used JavaScript to access content via a web API.
Life was simple, all I had to learn to get started was Git and how to
populate a branch called "gh-pages".

Recently my websi ... ⌘ [Read more](https://rsdoiel.github.io/blog/2016/08/16/From-Markdown-and-Bash-to-mkpage.html) 2016-08-15T00:00:00Z **Exploring Bash for Windows 10 Pro**
UPDATE (2016-10-27, RSD): Today trying to compile Go 1.7.3 under
 Windows 10 Pro I've am getting compile errors when the
 assembler is being built. I can compile go1.4.3 but see errors
 in some of the tests results.

I am running Windows 10 Pro (64bit) Anniversary edition under Virtual Box. The VM was upgraded from an earlier version of Windows 10 Pro (64bit). The VM was allocated 4G or ram, 200G disc and simulating 2 cores. After the upgrade I too ... ⌘ [Read more](https://rsdoiel.github.io/blog/2016/08/15/Setting-up-Go-under-Bash-for-Windows-10.html) 2016-07-15T00:00:00Z **Exploring Bash for Windows 10 Pro**
UPDATE (2016-10-27, RSD): Today trying to compile Go 1.7.3 under
 Windows 10 Pro I've am getting compile errors when the
 assembler is being built. I can compile go1.4.3 but see errors
 in some of the tests results.

I am running Windows 10 Pro (64bit) Anniversary edition under Virtual Box. The VM was upgraded from an earlier version of Windows 10 Pro (64bit). The VM was allocated 4G or ram, 200G disc and simulating 2 cores. After the upgrade I too ... ⌘ [Read more](https://rsdoiel.github.io/blog/2016/08/15/Setting-up-Go-under-Bash-for-Windows-10.html) 2016-07-04T00:00:00Z **How to make a Pi-Top more Raspbian**
I have a first generation Pi-Top. I like the idea but found I didn't use it much due to a preference for
basic Raspbian. With the recent Pi-TopOS upgrades I realized getting back to basic Raspbian was relatively
straight forward.

1\. Make sure you're running the latest Pi-TopOS based on Jessie
2\. Login into your Pi-Top normally
3\. From the Pi-Top dashboard select the "Desktop" icon
4\. When you see the familiar Raspbian desktop click on the following ... ⌘ [Read more](https://rsdoiel.github.io/blog/2016/07/04/How-To-Make-A-PiTop-More-Raspbian.html) 2016-05-30T00:00:00Z **Instant Articles, Accelerated Mobile Pages, Twitter Cards and Open Graph**
The web has gotten slow. In [2016](http://httparchive.org/trends.php) the
average page weight is in multi-megabytes and the average number of network
requests needed to deliver the content is counted in
the hundreds. In the mix are saturated networks and a continued public
expectation of responsiveness (web wisdom suggests you have about 3 seconds
before people give up). The odd thing is we've known how to build fast
website ... ⌘ [Read more](https://rsdoiel.github.io/blog/2016/05/30/amp-cards-and-open-graph.html) 2016-05-28T00:00:00Z **OPML to Markdown and back**
I wrote a Go language package to sort [OPML](http://dev.opml.org/spec2.html) outlines.
I wrote this because my preferred [feed reader ](http://goread.io) supports manual
sorting but not automatic alpha sorting by the \_outline\_ element's \_text\_ attribute.

Out of the box the OPML 2 Spec provides attributes indicating inclusion of other OPML files,
scripts, basic metadata (create, modified, authorship), and even directory structures.

[Fargo](http://fargo.io) allows u ... ⌘ [Read more](https://rsdoiel.github.io/blog/2016/05/28/OPML-to-Markdown-and-back.html) 2022-11-01T00:00:00Z **Installing Cargo/Rust on Raspberry Pi 400**
On my Raspberry Pi 400 I'm running the 64bit Raspberry Pi OS.
The version of Cargo and Rustc are not recent enough to install
[ncgopher](https://github.com/jansc/ncgopher). What worked for
me was to first install cargo via the instructions in the [The Cargo Book](https://doc.rust-lang.org/cargo/getting-started/installation.html).

~~~shell
curl https://sh.rustup.rs -sSf \| sh
~~~

An important note is if you previously installed a version of Cargo/Rust
 ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/11/01/installing-cargo-rust-r400.html) 2022-11-07T00:00:00Z **Compiling Pandoc from source**
I started playing around with Pandoc's \_\_pandoc-server\_\_ last Friday. I want to play with the latest version of Pandoc. When I gave it a try this weekend I found that my Raspberry Pi 400's SD card was too small. This lead me to giving the build process a try on my Ubuntu desktop. These are my notes about how I going about building from scratch. I am not a Haskell programmer and don't know the tool chain or language. Take everything that follows with a good dos ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/11/07/compiling-pandoc-from-source.html) 2022-11-11T00:00:00Z **Twitter's pending implosion**
It looks like Twitter continues to implode as layoffs and resignations continue. If bankers, investors and lenders call in the loans [bankruptcy appears to be possible](https://www.reuters.com/technology/twitter-information-security-chief-kissner-decides-leave-2022-11-10/). So what's next?

Twitter has been troubled for some time. The advertising model corrodes content. Twitter is effectively a massive RSS-like distribution system. It has stagnated as the APIs became more res ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/11/11/Twitter-implosion.html) 2022-11-17T00:00:00Z **Revealing the Pandoc AST**
I've used Pandoc for a number of years, probably a decade. It's been wonderful
watching it grow in capability. When Pandoc started accepting JSON documents as
a support metadata file things really started to click for me. Pandoc became
my go to tool for rendering content in my writing and documentation projects.

Recently I've decided I want a little bit more from Pandoc. I've become curious
about prototyping some document conversion via Pandoc's filter mechanism. To do
that ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/11/17/revealing-pandoc-ast.html) 2022-11-21T00:00:00Z **Initial Impressions of Pagefind**
I'm interested in site search that does not require using server side services (e.g. Solr/Elasticsearch/Opensearch). I've used [LunrJS](https://lunrjs.com) on my person blog site for several years. The challenge with LunrJS is indexes become large and that limits how much your can index and still have a quick loading page. [Pagefind](https://pagefind.app) addresses the large index problem. The search page only downloads the portion of the indexes it needs. The ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/11/21/initial-impressions-pagefind.html) 2022-11-28T00:00:00Z **Pandoc, Pagefind and Make**
Recently I've refresh my approach to website generation using three programs.

\- [Pandoc](https://pandoc.org)
\- [Pagefind](https://pagefind.app) for providing a full text search of documentation
\- [GNU Make](https://www.gnu.org/software/make/)
 \- [website.mak](website.mak) Makefile

Pandoc does the heavy lifting. It renders all the HTML pages, CITATION.cff (from the projects [codemeta.json](codemeta.github.io "codemeta.json is a metadata documentation schema for docu ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/11/28/pandoc-pagefind-and-make.html) 2022-12-05T00:00:00Z **Progress and time remaining**
I often find myself logging output when I'm developing tools. This is typically the case where I am iterating over data and transforming it. Overtime I've come to realize I really want a few specific pieces of information for non-error logging (e.g. \`-verbose\` which monitors progress as well as errors).

\- percentage completed
\- estimated time allocated (i.e. time remaining)

To do that I need three pieces of information.

1\. the count of the current iteration( ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/12/05/progress-and-time-remaining.html) 2022-12-12T00:00:00Z **Go and MySQL timestamps**
The Go [sql](database/sql) package provides a nice abstraction for working with SQL databases. The underlying drivers and DBMS can present some quirks that are SQL dialect and drive specific. When I've worked with Postgres I've been able to treat a Go \`time.Time\` as the same in Postgres' timestamp. This is convenient as Postgres like [MySQL](https://dev.mysql.com) can maintain a creation timestamp as well as a modified timestamp easily. If you need to work with the MySQL ... ⌘ [Read more](https://rsdoiel.github.io/blog/2022/12/12/Go-and-MySQL-Timestamps.html) 2023-01-03T00:00:00Z **SQL query to CSV, a missing datatool**
At work we maintain allot of metadata related academic and research publications in SQL databases. We use SQL to query the database and export what we need in tab delimited files. Often the exported data includes a column containing publication or article titles. Titles in library metadata can be a bit messy. They contain a wide set of UTF-8 characters include math symbols and various types of quotation marks. The exported tab delimited data usually needs ... ⌘ [Read more](https://rsdoiel.github.io/blog/2023/01/03/sql-to-csv-a-missing-datatool.html) 2023-03-07T00:00:00Z **Prototyping a personal search engine**
\> Do we really need a search engine to index the "whole web"? Maybe a curated subset is better.

Alex Schreoder's post [A Vision for Search](https://alexschroeder.ch/wiki/2023-03-07\_A\_vision\_for\_search) prompted me to write up an idea I call a "personal search engine". I've been thinking about a "a personal search engine" for years, maybe a decade.

With the current state of brokenness in commercial search engines, especially with the implosio ... ⌘ [Read more](https://rsdoiel.github.io/blog/2023/03/07/prototyping-a-personal-search-engine.html) 2023-03-10T00:00:00Z **First Personal Search Engine Prototype**
I've implemented a first prototype of my personal search engine which
I will abbreviate as "pse" from here on out. I implemented it using
three [Bash](https://en.wikipedia.org/wiki/Bash\_(Unix\_shell)) scripts
relying on [sqlite3](https://sqlite.org), [wget](https://en.wikipedia.org/wiki/Wget) and [PageFind](https://pagefind.app) to do the heavy lifting.

Both Firefox and newsboat store useful information in sqlite databases.
Firefox's \`moz\_places.sqlite\` hold ... ⌘ [Read more](https://rsdoiel.github.io/blog/2023/03/10/first-prototype-pse.html) 2023-05-20T00:00:00Z **gsettings command**
One of the things I find annoying about Ubuntu Desktop defaults is that when I open a new application it opens in the upper left corner. I then drag it to the center screen and start working. It's amazing how a small inconvenience can grind on you over time. When I've search the net for changing this behavior the usual suggestions are "install gnome-tweaks". This seems ham-handed. I think continue searching and eventually find the command below. So I am making a note of the command he ... ⌘ [Read more](https://rsdoiel.github.io/blog/2023/05/20/gsettings-commands.html) 2023-07-05T00:00:00Z **Quick recipe, compiling PostgREST (M1)**
These are my quick notes for compiling PostgREST on a M1 Mac Mini. I use a similar recipe for building PostgREST on Linux.

1\. Install [GHCup](https://www.haskell.org/ghcup/) to get a good Haskell setup (I accept all the default choices)
 a. Use the curl example command to install it
 b. Make sure the environment is active (e.g. source \`$HOME/.ghcup/env\`)
2\. Make sure GHCup is pointing at the "recommended" versions of GHC, Cabal, etc. (others ... ⌘ [Read more](https://rsdoiel.github.io/blog/2023/07/05/quick-recipe-compiling-PostgREST-M1.html) 2023-10-06T00:00:00Z **Skimmer**
I have a problem. I like to read my feeds in newsboat but I can't seem to get it working on a few machines I use.
I miss having access to read feeds. Additionally there are times I would like to read my feeds in the same way
I read twtxt feeds using \`yarnc timeline \| less -R\`. Just get a list of all items in reverse chronological order.

I am not interested in reinventing newsboat, it does a really good job, but I do want an option where newsboat isn't
available or is not not convenient to use. This le ... ⌘ [Read more](https://rsdoiel.github.io/blog/2023/10/06/concept.html) 2023-10-18T00:00:00Z **Building A to Z list pages in Pandoc**
Pandoc offers a very good template system. It avoids elaborate features in favor of a few simple ways to bring content into the page. It knows how to use data specified in “front matter” (a YAML header to a Markdown document) as well as how to merge in JSON or YAML from a metadata file. One use case that is common in libraries and archives that less obvious of how to handle is building A to Z lists or year/date oriented listings where you have a set of navigation links at ... ⌘ [Read more](https://rsdoiel.github.io/blog/2023/10/18/A-to-Z-lists.html) 2023-11-17T00:00:00Z **Postgres Quick Notes, take two**
A collection of quick notes for setting and Postgres for development. ⌘ [Read more](https://rsdoiel.github.io/blog/2023/11/17/PostgreSQL-Quick-Notes.html) 2023-12-07T00:00:00Z **RSS and my web experience**
RSS is alive and kicking and Bluesky should support it too. Explore my recipe for reading web news. ⌘ [Read more](https://rsdoiel.github.io/blog/2023/12/07/rss-and-my-web-experience.html) 2023-12-23T00:00:00Z **Finding Bluesky RSS feeds**
With the update to [1.60](https://bsky.app/profile/bsky.app/post/3kh5rjl6bgu2i) of Bluesky we can now follow people on Bluesky via RSS feeds. This makes things much more convienient for me.
The RSS feed is visible via the HTML markup on a person's profile page (which are now public). E.g. My Bluesky profile page is
at and if you look at that pages HTML markup you'll see a link element in the head

\`\`\`html

\`\`\`

That's the RSS feed. So now if you want to follow y ... ⌘ [Read more](https://rsdoiel.github.io/blog/2023/12/23/finding-blue-sky-rss-feeds.html) 2024-01-04T00:00:00Z **Updated recipe, compiling PostgREST 12.0.2 (M1)**
These are my updated "quick notes" for compiling PostgREST v12.0.2 on a M1 Mac Mini using the current recommended
versions of ghc, cabal and stack supplied [GHCup](https://www.haskell.org/ghcup). When I recently tried to use
my previous [quick recipe]() I was disappointed it failed with errors like

~~~
Resolving dependencies...
Error: cabal: Could not resolve dependencies:
[\_\_0] trying: postgrest-9.0.1 (user goal)
[\_\_1] next g ... ⌘ [Read more](https://rsdoiel.github.io/blog/2024/01/04/updated-recipe-compiling-postgrest_v12.0.2.html) 2024-01-31T00:00:00Z **vis for vi and fun**
I've been looking for a \`vi\` editor that my fingers would be happy with. I learned \`vi\` when I first encountered Unix in University (1980s). I was a transfer student so didn't get the "introduction to Unix and Emacs" lecture. Everyone used Emacs to edit programs but Emacs to me was not intuitive. I recall having a heck of a time figuring out how to exit the editor! I knew I needed to learn an editor and Unix fast to do my school work. I head to my college bookstore and found two ... ⌘ [Read more](https://rsdoiel.github.io/blog/2024/01/31/vis-for-vi-and-fun.html) 2024-02-01T00:00:00Z **Installing pgloader from source**
I'm working on macOS at the moment but I don't use Home Brew so the instructions to install pgloader are problematic for me. Except I know pgloader is a Lisp program and once upon a time I had three different Lisps running on a previous Mac. So what follows is my modified instructions for bringing pgloader up on my current Mac Mini running macOS Sonoma 14.3 with Xcode already installed.

pgloader is written in common list but the instructions at https://pglo ... ⌘ [Read more](https://rsdoiel.github.io/blog/2024/02/01/installing-pgloader-from-source.html) 2024-02-23T00:00:00Z **Two missing features from HTML5, an enhanced form.enctype and a list input type**
I wish the form element supported a \`application/json\` encoding type and there was such a thing as a \`list-input\` element.

I've been thinking about how we can get back to basic HTML documents and move away from JavaScript required to render richer web forms. When web forms arrived on scene in the early 1990s they included a few basic input types. Over the years a few have been added but by and large the data model ... ⌘ [Read more](https://rsdoiel.github.io/blog/2024/02/23/enhanced_form_handling.html) 2024-02-25T00:00:00Z **A Text Oriented Web**
The web is a busy place. There seems to be a gestalt resonant at the moment on the web that can be summarized by two phrases, "back to basics" and "simplification". It is not the first time I've seen this nor is it likely the last. This blog post describes a thought experiment about a simplification with minimal invention and focus on feature elimination. It's a way to think about the web status quo a little differently. My intention is to explore the implications of a more text cent ... ⌘ [Read more](https://rsdoiel.github.io/blog/2024/02/25/text_oriented_web.html) 2024-04-25T00:00:00Z **Getting Started with Miranda**
I've been interested in exploring the Miranda programming language. It's a language influenced Haskell which has been used for programs I use almost daily such as [Pandoc](https://pandoc.org) and [shellcheck](https://www.shellcheck.net/). I've given a quick review of [miranda.org.uk](https://miranda.org.uk) to get a sense of the language but to follow along with the [Miranda: The Craft of Functional Programming](https://www.cs.kent.ac.uk/people/staff/sjt/Miranda\_craft/) it is ... ⌘ [Read more](https://rsdoiel.github.io/blog/2024/04/25/getting-started.html) 2024-05-10T00:00:00Z **A quick review of Raspberry Pi Connect**
The Raspberry Pi company has created a nice way to share a Pi Desktop. It is called Raspberry Pi Connect. It is built on the peer-to-peer capability of modern web browsers using [WebRTC](https://en.wikipedia.org/wiki/WebRTC). The connect service requires a Raspberry Pi 4, Raspberry Pi 400 or Raspberry Pi 5 running the [Wayland](https://en.wikipedia.org/wiki/Wayland\_(protocol)) display server and Bookworm release of Raspberry Pi OS.

When I read the [announc ... ⌘ [Read more](https://rsdoiel.github.io/blog/2024/05/10/quick-review-rpi-connect.html) 2024-06-04T00:00:00Z **Exploring RISC OS 5.30 on a Raspberry Pi Zero W**
In this post I talk about my exploration of using a Raspberry Pi Zero W
as a desktop computer. This was made possible by the efficiency of
RISC OS 5.30 which includes native WiFi support for Raspberry Pi computers. ⌘ [Read more](https://rsdoiel.github.io/blog/2024/06/04/exploring_riscos.html) 2024-06-08T00:00:00Z **RISC OS 5.30, GCC 4.7 and Hello World**
These are my notes on learning to program a Raspberry Pi Zero W
under RISC OS using GCC 4.7 and RISC OS 5.30 ⌘ [Read more](https://rsdoiel.github.io/blog/2024/06/08/riscos_gcc_and_hello.html) 2024-06-14T00:00:00Z **Bootstrapping a Text Oriented Web**
First order of business is to shorten "text oriented web" to TOW. It's easier to type and say. I'm considering the bootstrapping process from three vantage points.

1\. content author
2\. the server software
3\. client software

The TOW approach is avoids invention in favor of reuse. HTTP protocol is well specified and proven. [Common Mark](https://commonmark.org) has a specification as does [YAML](https://yaml.org/). TOW documents are UTF-8 encoded. A TOW document is a ... ⌘ [Read more](https://rsdoiel.github.io/blog/2024/06/14/tow_bootstraping.html) 2024-07-03T00:00:00Z **Transpiling with Deno**
[Deno](https://deno.land) is a fun environment to work in for learning TypeScript. As I have become comfortable writing server side TypeScript code I know I want to also be able to use some modules in JavaScript form browser side. The question is then how to you go from TypeScript to JavaScript easily with getting involved with a bunch-o-npm packages? Turns the solution in deno is to use the [deno\_emit](https://github.com/denoland/deno\_emit/blob/main/js/README.md) module. Let ... ⌘ [Read more](https://rsdoiel.github.io/blog/2024/07/03/transpiling_with_deno.html) 2024-07-08T00:00:00Z **Web GUI and Deno**
My notes on two Web GUI modules available for Deno. ⌘ [Read more](https://rsdoiel.github.io/blog/2024/07/08/webgui_and_deno.html) 2024-10-18T00:00:00Z **Quick tour of Deno 2.0.2**
A quick tour of Deno 2 along with a discussion of some of the features are enjoy about
Deno plus TypeScript and contrasts with my experience with Go and Python. ⌘ [Read more](https://rsdoiel.github.io/blog/2024/10/18/a-quick-tour-of-deno-2.html) 2024-10-31T00:00:00Z **SQLite3 json_patch is a jewel**
Quick note about json\_path function in SQLite3 ⌘ [Read more](https://rsdoiel.github.io/blog/2024/10/31/sqlite3_json_patch.html) 2024-11-06T00:00:00Z **Rust tools for Web Work**
A quick review of a PageFind and FlatLake by Cloud Cannon. A brief description of how I use them. ⌘ [Read more](https://rsdoiel.github.io/blog/2024/11/06/rust-tools-for-web-work.html) 2024-11-20T00:00:00Z **Raspberry Pi 4 & 400 Power Supply Issues**
Quick notes on some low voltage issues I ran into with my Raspberry Pi 4 and 400 using the stock power supply with thumb drives. ⌘ [Read more](https://rsdoiel.github.io/blog/2024/11/20/power-supply-issues.html) 2024-11-21T00:00:00Z **Transpiling & Bundling with Emit**
A brief discussion of using the Deno emit module to transpile and bundle
TypeScript. ⌘ [Read more](https://rsdoiel.github.io/blog/2024/11/21/transpiling-and-bundling-with-emit.html) 2024-12-06T00:00:00Z **When Deno+TypeScript, when Go?**
Brief discussion of when I choose Deno+TypeScript versus Go for work projects. ⌘ [Read more](https://rsdoiel.github.io/blog/2024/12/06/when_deno_when_go.html)