💾 Archived View for icolotl.com › gemlog › 0x0005-acanthus-spinosus captured on 2024-05-26 at 14:42:21. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

ACANTHUS SPINOSUS

Retrace 0x0005 -- Morgana's Log
Tags: software, retrace 
Mar 25 2024 02:35 PM (MDT) (day 340)
------------------------------------

Introduction

Welcome, y'all! This post is going to serve as my writeup for the 2024 OFFLFIRSOCH -- for those who don't know, this is an awesomely-named challenge to create a piece of Offline-First software, with a bit of a focus on replicating online services that really don't need to be online. I chose to tackle two sites I regularly use, "rot13.com" (A shift cypher en/decoder) and "quipqiup.com" (A substitution cypher breaker) respectively. I've been posting about the work elsewhere on Retrace, so if you're interested in my process check out anything tagged "software" -- specifically 0x0000 through 0x0002.

Announcing OFFLFIRSOCH 2024 [Solderpunk]

https://rot13.com/ [Inspiration for MORGROT]

https://www.quipqiup.com/ [Inspiration for MORGSUB]

Retrace 0x0000: Lycoris Albiflora

Retrace 0x0001: Trametes Versicolor

Retrace 0x0002: Dianthus Knappii

MORGROT (Rot13 Program)

This is a very basic shift cypher encoder and decoder, created to serve as a basic offline tool and as my submission to the OFFLFIRSOCH. Two copies are included here, a Rust version which is currently the recommended version, along with a C version which functions pretty much identically and was the original. Although I doubt either program will be of much use to anyone except me, they're all licensed under the GPL3+, so feel free modify/use them for your own usage.

I had originally produced the C version as my only submission for OFFLFIRSOCH, however I was fairly worried that I had missed a memory management bug or something similar, and if there was any chance of anyone else depending on my code I wanted to minimize this as much as possible. Hence, I've ported it to Rust, which was quite a learning experience as this is my first serious attempt at a Rust program, but this should mean a somewhat higher quality program (hypothetically).

MORGROT on Retrace

--> Jump to Rust Ver. Source Code

--> Jump to C Ver. Source Code

MORGROT on Gossamer [WEB]

Git Clone Link: https://icolotl.com/git/Touchstone/morgrot.git

MORGSUB (Substitution Cypher Breaker)

Of course, as it turns out that the built in command "tr" is capable of doing Rot13 as well, I wasn't satisfied with just MORGROT as my submission, hence I also developed MORGSUB. This is a fairly basic substitution cypher breaker, taking in a cypher from standard input and displaying progress info and the (hopefully) broken message to standard output. There's a lot more that could be done for more efficient or successful cypher breaking, however as a quick OFFLFIRSOCH submission and with everything else going on in my life (capstone, graduation, etc.) there wasn't enough time for advanced features -- maybe next March I'll implement a few more features.

I'm admittedly not 100% happy with how this turned out, as with some research I'm sure I could figure out how to make this work a lot better, but as a first attempt it's good enough for what I needed it for. I definitely think I'll eventually put out a patched version that meets my expectations later, but as I write this the end-of-March deadline is fast approaching.

MORGSUB on Retrace

--> Jump to Main Source Code

MORGSUB on Gossamer [WEB]

Git Clone Link: https://icolotl.com/git/Touchstone/morgsub.git

MORGGEM (Gemini Server, Retrace Host)

This isn't a OFFLFIRSOCH submission, quite the opposite in a way, but I also made a custom Gemini server specifically to host my submission -- if you're reading this, then it's currently working! It's nothing fancy at the moment, mostly just capable of hosting static pages, but I have a bunch of neat ideas to improve it -- I almost want to try and make a few simple games or virtual novels, it seems well suited for that.

At the moment I'm not putting the source up on Gossamer as I'm changing it and adding new features every few days, so it's quite unstable, but if anyone's interested just let me know and I'll send you a copy of the current code -- just don't expect a perfect plug-and-play solution, at least not yet.

mailto:morgana@icolotl.com

Closing Notes

Participating in the OFFLFIRSOCH has been a ton of fun, and as noted elsewhere this month has been my most productive in quite a while due to the challenge -- Even though the month is over, I ought to try and keep this up, or at least keep up with making neat/small projects like this. Maybe I can polish up MORGSUB and MORGGEM up a bit more, that might be a nice goal for next month. (Oh, and to those finding Retrace from my submission, welcome! Things are a bit disorganized at the current moment, but fixing that is also the goal of the next month or so.) Thanks to Solderpunk for hosting the OFFLFIRSOCH -- I'll see y'all in six months for the ROOPHLOCH!

<-- BACK <--