For some time, I have been actively seeking to improve this web site's readability and visual appeal. Eventually, I wanted to have justified text. I tried it, and after some time, realized that it was hard to read. The issue was inconsistency in spacing; there would be occasional gaps between words. Ideally, a mix of paragraph-at-once text justification and hyphenation may resolve this issue. Not only do HTML and CSS alone not afford better than line-by-line text justification, they do not afford client-side text hyphenation. Instead, the popular solutions appear to be particularly browser-specific, and often involve JavaScript. I read on this issue, noticing that manual text hyphenation is achieveable using a special character code “­”.
The issue felt approachable from a programmatic standpoint. A standalone program to hyphenate HTML was easy to imagine. And so, I programmed. What resulted was automatic hyphenation of HTML, without JavaScript or browser-specific incantations necessitated. By means of a singular non-standard dependency, libhyphen, the hyphenation is syllabic. The program I produced is roughly 250 lines of C code, and somewhat configurable by means of an included header file. This very text is hyphenated using this program. In the compressed tarball linked below, full Windows binaries are included.
hyp-1.0.tar.gz, 172 KBA few months into maintaining a neocities subdomain, I had some gripes. Adding repetitive HTML tags and using the web browser interface for uploading files were rubbing me the wrong way, and I wanted a page that listed every file available on the subdomain. With a lot of learning along the way, I wrote tools that allowed maintaining the subdomain to be much more focused on actually valuable content than on HTML hassle.
The code for generating HTML is written in C89, and the code for direct interaction with the neocities API is written in POSIX Bourne Shell script. The code compiles and runs on modern OpenBSD (OpenBSD's own ksh, OpenBSD's own make or GNU make, and either LLVM's clang or Fabrice Bellard's tcc), Windows (busybox ash, MinGW make, and either MinGW gcc or Fabrice Bellard's tcc), and Linux (GNU bash or busybox ash, GNU make, and either GNU's gcc or LLVM's clang or Fabrice Bellard's tcc). An outdated copy of this site's 'files.json' is provided, so as to provide with the source code some valid input.
A few extra tools for generic uploading – the most useful of which is also written in C89 and may be used to recursively upload files and directories – are included in the various directory.
neocities-1.0.tar.gz, 58 KBAs of 2023 February 17, I began to complete Advent of Code 2022, after having watched some of Russ Cox's videos featuring creative solutions to Advent of Code 2021. Twenty-six of the fifty stars have been earned, using source code provided here. The solutions are written mostly in C89, with there being some AWK, POSIX Bourne Shell script, and in the case of day five, a hacky and expansive shell script leveraging what I now know are some of the GNU extensions supported by busybox ash. I am very glad to have completed as much as I have, and in participating, I have begun to peel away at what I know I don't know.
aoc.tgz, 1088 KB