sloum


software

I spend most of my time in a terminal emulator. As such, a lot of the software I develop is for use within a terminal [emulator]. I mostly write things for two reasons: to learn, and to help myself do something in a way I can undersstand and control (ie. I get what the code is doing and can modify it as needed). In general none of my software supports the Windows operating system and is designed for a posix oriented system: linux, Unix/BSD, Darwin/MacOS, etc. I also love the Haiku operating system, but have yet to develop any native Haiku applications (C++ is a terrifying mess to me). I generally work on a FreeBSD system or a Linux system of some sort or other for most of my development.

A git host I used for a long time went down permanently. Some things have not been moved to other hosting. I am self-hosting some things. Others may have accurate links to them but their docs may site old hosts. Over time I will be working to clean up the mess.

My Software

My main git host went offline recently. I am self hosting some things and a few things are on legacy hosts that I dont actively use anymore. Most has not been added back to the internet. I'll list a few of the better projects.

Programming Languages

slope

slope is a programming language loosely situated in the scheme/lisp family of languages. Among a certain type of software developer or computer enthusiast it seems that everyone has their own Lisp and this is mine. It has most of the things you would expect (except tail call optimization, though not for lack of trying): macros (unhygeinic), lexical scoping, dynamic typing, garbage collection, module system, package manager (currently broken), vim/emacs/nano syntax plugins, optional modules (gui, clipboard, and a light gui system called 'dialog' that leverages system prompts).

The language is easy to write, comes with quite a few batteries included, and is a great conduit for my thoughts when coding. It has a few other users and contributors as well; including one that supposedly has used it in production at their job. So that is fun!

nimf

nimf was my first attempt at writing a programming language. It is in the style of Forth (stack based). It doesn't bring a lot of new things to the table but jeez did I learn a lot working on it. In the end it was just too cumbersome to use. I did write a gopher client in it though! I run it every now and then for fun, but have abandoned it in favor of slope and felise.

The local documentation is pretty thorough if you decide you'd like to give the language a try. It is modules, has local variables, is tack based, and has configurable memory space. There is no grabage collection and strings can be funky to work with but are doable.

felise

felise is the successor to nimf. It is a stack based language, but this time it is typed and has a larger focus on variable use, procedures, and more-automatic memory management. It improves the usability of nimf substantially.

Bird - vm & assembler

Bird is a stack based virtual machine and an assembler for that virtual machine. Both were very much learning experiences and are not up to the quality of, for example, slope. They aren't really meant to be used and were more about the experience of writing them.

Utilities & Applications

chickadee

A simple blogging/content system. It is meant for a single user (it does not manage multiple user accounts) and features an administration area that allows for posting (with markdown as a first class citizen), media upload, delting/editing existing posts, deleting media, editing css, and doing some other site customization. The repo can be cloned into any directory on an existing site that is being managed by a server running php and it "just works", but is quite simple. Useful for me, but likely not for mainstream uptake.

solo

solo is a version control sysem (ivcs) written in my programming language, slope. It is a version control system designed more for backup and personal editing rather than collaboration. It features commits, branches, and merging. There is a companion program soloweb that will generate a static site for a solo repository. When using soloweb it leverages ssh, tar, and a few other core utils common to posix systems to achieve pushing static html repos with downloads and cloning available.

slp

This is the package manager for slope. It is currently broken due to our git host shutting down. The link above is to the new git host, but packages have not been migrated (all the package contributors used the same git host that shut down). I hope to get it working again in the not distant future, as it worked well for the small niche language it is used with.

bombadillo

bombadillo is probably my most widespread project. It is a multi-protocol terminal based internet client. It supports gopher, gemini, finger, local files, and text rendering of http[s] (with an additional dependency and user opt in).

I got very burnt out on this project as the gemini protocol gained popularity. bombadillo was an early adopter and I did not handle the influx of interest and requests well. Since I had made it for myself I found I just didn't want a lot of things that other people did. I pulled back from open development after this project in favor of providing code for people but not having public issues or pull requests (though I am happy to receive an e-mail wanting to know if I am interested in a patch). I really would love people to not contribute to mine, but instead jump of and make their own based on mine or inspired by it. In any event, bombadillo is still the client I use when I browse gopher or gemini.

nums / gnums

nums and gnums are two separate programs. They are stack based calculators. gnums is a graphical version of nums and embeds most of the nums code under a bunch of gui code. I don't use gui software often, but I like having gnums on hand as an option. I often need to do little calculations for things and often prefer a stack based approach... so these come in handy for me quite often.

Both programs were developed in the Go programming language. gnums uses bindings to Dear ImGui for the graphical components.

swim

swim is a program for creating project boards/swim lanes. It is an offline program that saves projects to file. The files can be synchronized via rsync or other for collaborative purposes, but the program is mostly intended for solo or centralized use (on a server where multiple users may access it, for example). It was written in Go and detects terminal capabilities to provide a nice looking interface.

tally

Terminal based spread sheets are a solved problem... but this was fun to write. It uses stack based operations, rather than infix, within cells. It was written in Go.

netclient

netclient is a vim pluggin that leverages an outside renderer to allow for browsing gopher/gemini/http from within vim. By default it uses lynx as the renderer, but can also use a custom renderer (I built one).