A Repository of Mostly Techie Notes

Welcome to decuser’s blog

Topics on this blog include computing, retro-computing, operating systems, math, and whatever other technical subjects I happen to be exploring that I find interesting enough to take and share notes about.

Posts

    • Schemes, LISPs, and Lambda

      This note sets up a series of related notes pertaining to my explorations in LISP and Scheme. I began to be interested in functional programming a few years ago and started looking around to find resources to learn it… in my limited spare time. After finding some resources, I would study it, set it aside as too esoteric, pick it up again thinking - this is it, I’m going to master this one way or another, only to set it aside as frustratingly difficult to understand and lacking in applicability. Lately though, I have found some standout resources and worked through enough of them to begin to actually get my mind wrapped around functional programming. Below you will find a brief, informal annotated bibliography of sorts and an explanation of what’s coming in the further explorations into implementations.

    • Installing and Using Research Unix Version 7 on the OpenSIMH PDP-11 Emulator

      A video walking the user through the process of installing and using Research Unix Version 7 on the Open SIMH PDP-11/45 and PDP-11/70 emulators.

      Enjoy!

    • UCB STk Scheme Interpreter for Working Through Brian Harvey's CS61A Course

      This note describes how to install the UCB STk 4.0.1 Scheme interpreter on modern 64 bit Debian based systems. It also describes a method of building the Debian Package used to install the program. This is the version of scheme used by Brian Harvey in his 2011 course, CS61A: Structure and Interpretation of Computer Programs, named after and using famed text, Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman with Julie Sussman, a phenomenally good computer science textbook.

      Now, I’m not a package maintainer and I certainly don’t know the nuances of building packages, this is just meant to document how I was able to get this working in 2023 after reading tons of “too bad, so sad, I can’t get it to work posts”, YMMV, but I’ve tested on LMDE5 (Elsie), Mint 21.1 (Vera), MX Linux 21.3 (Wildflower), and Ubuntu 22.04.2 (Jammy Jellyfish).

      Here’s a screenshot of the working system running on LMDE5:

      one

    • Setting up Slackware 15 on T430 for X Window Programming

      The note walks through the process of installing and configuring a working Slackware 15 64 instance with the packages mirrored locally for ease of access and eliminating the need to be online as much. When the system is up and running it provides xdm services to nearby hosts (those on the local network). This makes running and testing x window clients simpler and more interesting. You may notice that the note references other environments that you may not have or want to use (MacOS Mojave and FreeBSD 13.1). Just ignore those references as they are not strictly required.

      I chose Slackware 15 64 as the environment after trying out various flavors of Debian, Arch, Kwort and others. While these worked ok, they did not provide much of a clean, vanilla x experience. Slackware, on the other hand, provided a sane, simple, and understandable x environment that was pretty vanilla :). It feels really good to get back to Slackware and its simplicity. I don’t have a gazillion processes running doing who knows what, the laptop sleeps without crazy interventions, and stuff works well. That said, Slackware is not for the faint of heart. You should be somewhat familiar with Linux and it’s command line interface and be willing to do your own research before jumping into it.

      two

    • A Modern PDF Cleanup Workflow

      This note provides a workflow for taking a less than optimized PDF and optimizing it for viewing and printing. It isn’t a cure-all for sick PDF’s, but it does work for a lot of them. I’ve struggled with badly scanned PDF’s for a long time and this workflow represents my current best approach.

      The note also provides a cookbook of solutions to problems I have run up against and the solutions that I currently use to address those problems.

    • Xlib basics

      This note explores the basics of Xlib. It covers enough to open a window, configure it, display a message, respond to some events, and close it gracefully - see figure 1 for a hint at what this will look like.

      Why xlib? Well, because we can, because it is the lowest level above the X protocol (sending bits around), and because, contrary to many espoused beliefs these days, knowing how to do something the ‘hard way’ helps you understand what’s going on with the ‘easy way’… and when things inevitably go wrong, you want to have a clue.

      Figure 1. A Basic Xlib Application

      one

    • Setting up for X-Windows Development on MacOS

      This note describes setting up a development environment for doing X Windows Development on Mac OS from the ground up. The notes do apply to other environments… with minor tweaks (I tried the same basic setup on Debian Linux, DragonFly BSD, and FreeBSD with no major issues).

      This is enough setup to build applications in X Windows using Xlib - the lowest level of programming in X… other than the X Protocol :). I did this because I have developed an interest in how graphical interfaces work and X, for all its quirks, is not self-limiting, crippled, partially proprietary or any of that nonsense and it is widely used.

      After setting up, downloading some source, building and deploying, here’s what we’re looking at… on a Mac:

      one

    • Site Update for Monday, January 23, 2023

      Today, I did my 50th deployment (this is the 51st) of the blog, adding mermaid-js support to the site. So, now I can add in flow diagrams and such as I explore fossil scm or other flowing stuff.

      I hope you’re finding the posts here interesting, useful, or fun. If you like, drop me a note and tell me what is needed, what’s good, what needs to go. As always, please be constructive :).

    • Enabling Mermaid in Jekyll without a Plugin

      Mermaid is a javascript tool to generate graphics - diagrams and charts and such using markdown-like syntax. This note describes adding it into a jekyll site such as mine https://decuser.github.io

      flowchart LR id1((a)) --> id2((b)) & c--> d

      Flowchart Example

    • Merging binary files in Fossil - to do or not to do?

      This is a note about merging (or not merging) binary files in Fossil.

      Scenario

      Two users Marilyn and Jim update to latest and begin working on their versions of the repository. Marilyn, changes a binary file called DEMO and commits her changes. Meanwhile, Jim changes his DEMO and tries to commit his changes. When he does so, he is warned that a fork would result from his commit.

      Current Situation

      flowchart LR START[ ]-->id1((2))-->id2((3)) id1((2))-..->STOP[ ] style START fill-opacity:0, stroke-opacity:0 style STOP fill-opacity:0, stroke-opacity:0

      In this note, I look at different solutions to the problems arising when two different committers try to commit changes to the same binary file. This is just a note, not a published solution set. It presents my current thinking on the matter and will inevitably evolve as my understanding of Fossil grows.