Page MenuHomePhabricator

Updated 2,398 Days AgoPublic

Stitching Algorithm | Syntax


redstring.png (280×196 px, 12 KB)

I hate writing repetitive code. I really do. Redstring was originally written to make it easier to create such code without a whole lot of copy-paste-edit work; at the same time, it was created to make content development easier.



Redstring 1.0 and 1.1 were both created with Adobe AIR, and as such, suffered from considerable performance and lag issues. To this day, I still speak (in Field Guide to Common Nerds) about one particularly spectacular misuse of the program caused by a logical miscalculation on my part.

Macro _doublefacepalm_: Checksums are called "one-way" encryption for a reason. Redstring requires until June 29, 3178 to go the other way.


redstring_icon.png (128×128 px, 9 KB)
I rebuilt Redstring in Python, introduced a less painful "stitching" algorithm, added threading, and made various improvements. The end result was much better, but 2.0 still did not have all the features I wanted. I intended to add a few extra features, but I realized that it would require me to completely rewrite the stitching algorithm yet again, and 2015 did not afford any opportunities to do so.


I think the changes are extensive enough to jump major versions.

In 3.x, I want to introduce the following features. (This should be converted to Maniphest tasks ASAP, but it is here for reference.)

  • Multi-line models: In 2.0, Redstring treats each line in the Models field as a separate model. This is useful in some cases, but not where you want a multiline model. We need a feature to toggle how the models are parsed down.
  • Random Selection: Sometimes you don't want all of the combinations you created, but just a selected number of them. We need an option for randomly selecting and presenting a subset of results.
  • Strip Duplicates: We need an option that can either strip or suppress duplicates in Redstring.
  • Repetition Bug: We need to skip any column that isn't being used in a given model. Right now, if you have values in {A}, {B}, and {C}, but only use {A} and {B} in a given model, we'll get repetitions of results from the model, coming from attempting stitching with {C}.
  • Auto-incrementors: It can be tedious to type all numbers in a particular range. We should offer special substitution markers, such as {1-100} and {a-z}.
  • Handling \{ and \} properly for literal curly braces.
  • Improved logo. The old one just kinda...sucked compared to the others.
Last Author
Last Edited
Jan 20 2016, 10:53 AM

Document Hierarchy

Event Timeline

jcmcdonald edited the content of this document. (Show Details)
jcmcdonald changed the edit policy from "All Users" to "Redstring [Project] (Project)".Jan 27 2017, 12:01 PM