This project, the “Here be software project” is about collecting a bunch of items possibly helpful to other people.
This project will contain self contained programs, i.e. programs entirely contained in one source file.
This project will contain pieces of software, i.e. source files easily adaptable into possibly useful programs.
The plan being to collect all these things, in one place.
Here we go!
This one https://sourceforge.net/p/herebesoftware/hbs/ci/master/tree/lisp/demoEmacs/memorable-unicodes.el
It is a self contained, zero dependencies, GNU Emacs elisp package, providing a very concise minor mode.
It provides the memorable unicodes (minor) mode, MUM for short.
The minor mode, it gives an alternative way of typing unicode characters, in GNU Emacs.
To install it, one may include the following two lines in one's ~/.emacs.d/init.el GNU Emacs initialization file.
(add-to-list 'load-path "~/.hhfs/usr/share/emacs/28.2/lisp")
(use-package memorable-unicodes)
These two lines work, when one saves a copy of memorable-unicodes.el, within the ~/.hhfs/usr/share/emacs/28.2/lisp directory.
One may, for sure, store the memorable-unicodes.el file, wherever, and simply adjust the 'load-path, to point to it.
Once the init.el loads memorable-unicodes.el, one would simply M-x memorable-unicodes-mode, to activate the minor mode, and use it.
What this minor mode does is detailed at the beginning of memorable-unicodes.el itself, in one hopefully heafty enough comment.
One, its author, enjoys this minor mode, it working as one intended, within GNU Emacs 28.2, within Debian, bookworm.
This one https://sourceforge.net/p/herebesoftware/hbs/ci/master/tree/python3/demoTwiddle/twiddle.py
It is a self contained Python3 program solving an instance of the 3 by 3 version of the Twiddle puzzle.
First I have seen this Twiddle puzzle, in the f-droid application linked below.
Second I have seen that there is an HTML and Javascript or Web- assembly version, as well.
https://f-droid.org/en/packages/name.boyle.chris.sgtpuzzles/
https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/twiddle.html
This one https://sourceforge.net/p/herebesoftware/hbs/ci/master/tree/python3/demoTwiddle/twiddle2.py
It builds a strategic approach for solving any Twiddle puzzle, based on
a few key Twiddle puzzles solved with twiddle.py mentioned just a few lines above.
It may be understood as a simple proof that the 3 by 3 Twiddle variant is always solvable.
The proof is simple, but is built on a few parts precomputed by running an alogorithm.
So I would say that is a man machine man proof. Ha - ha.
This one https://sourceforge.net/p/herebesoftware/hbs/ci/master/tree/python3/demoGtkIndicator/indicate_me.py
As it is, it is software, it is not a program.
It may be easily adapted to be a program.
When adapted, it switches (activates) top level windows managed by the X11 server.
Internally, it spawns “wmctrl -i -a window_id” subprocesses, to activate (bring to front) X11 windows.
To adapt it, simply run “wmctrl -l”, and edit a list [program_name, window_id] in the Python 3 source code.
It installs a menu in the indicator area, therefore the title “gtk indicator” for this thing.
Most menu item from this menu are simply switching to some window, like one would do by alt + tab -b -ing.
Four menu items, E, X, I, and T, are check menu items, implementing a safe exit -ing from the process.
Not to issue exit -ing the program, by mistake, 4 check menu items work together to implement the Exit functionality.
And so on, and so forth.
It shows one way to go about finding a primitive root g for a given prime number p.
The prime used to demo the presented approach was 809.
It is a simple pick and test approach, and I do not know any better way for solving this “g = primitive_root(p)” problem.
This one, https://sourceforge.net/p/herebesoftware/hbs/ci/master/tree/c/demoActivator/activator.c
Again “wmctrl -i -a [window_id]”, but this time with a context menu, from an small undecorated square window with side length equal 30.
A small square which may be moved wherever, is programmed to stay always on top, and is also right click draggable.
The E, X, I, T check menu items scheme, implemented once more.
This one, https://sourceforge.net/p/herebesoftware/hbs/ci/master/tree/python3/demoFiniteField/finite_field.py
Simply shows a well known method for constructing a finite field.
You start with a prime field prime field Fₚ, p is a prime, and knowing an irreducible polynomial p(x) ∈ Fₚ[x], you construct Fₚ[x]/(p(x)).
This is what this demo program does; I simply wanted to make sure that I got it right, so why not verify with a small example.
It worked like a charm!
https://sourceforge.net/p/herebesoftware/hbs/ci/master/tree/javascript/demoCssTree/css_tree_demo.js
Simply these two files alone may be used to quickly “navigate” large files, on condition that
their content is intently structured in a hierarchical fashion, based on indentation level.
The hard part of this foldable tree text rendering is provided by the browser’s < details / > HTML element, and a wee bit of Javascript does the
easy part: loading a text file from the local file system, parsing that text as a tree in memory, and finally building a DOM tree which with
a bit of CSS magik looks pretty convincing as a tree.
The idea is that this then could be used by anyone to look at text in a way in which it is easy to collapse details, collapse or fold, then
unflod if going back at some detail is helpful, and so on; furthermore, I could in the future make reference to some text I write, and just
mention it is possible to look at that text, with this 'browser program'?
I first used a functionality like this in SciTE, there you have an "Indent" language, which may be selected with the menu item "Languages" > "Indent ... '
from the menu bar.
https://www.scintilla.org/SciTE.html
Also I could use the same functionality, in Geany, with the price of writing text in .yaml files, on account that the 'code folding' implementation
for .yaml files in Geany, is pretty much like the "Indent ... " language from SciTE.
https://www.geany.org/
And so on and so forth, many words possible to put in writing, but better stop.
Stop now.