Passed the 1 year mark a couple days ago for the Villainous Imposer Program -- my bookbinding imposition tool. Gave a talk on it for Binderary over on the @renegadeguild Discord but realized I never posted about it here...? It's not exactly beginner friendly, but I find it damn useful. Took what I learned contributing to bookbinder-js and re-wrote things from scratch to support all the power features and impositions I could possibly want. (it's basically a free fancy web page)
The goal this year is to dial in addressing printer skew -- I don't know how to do it yet, but that's the fun of a challenging goal, no? I just really want at home text block printing to look as polished as possible. Am also thrilled that my cry for help during the talk actually rallied aid (bless Lele of @gildingthelelepress!! 🙏) and there will be folding animations 'soon' for the various configs.
Have paused coding-brain for a bit to return to the basics -- am binding a ~1,000 piece for Binderary (a Legal Tiny!) and have 12 signatures left (out of 60 😩) -- but am looking forward to tackling 2 new impositions when I cycle back to it.
Been difficult to post lately for so many reasons, one of which is that the thoughts have been very code-y lately - but also social
At a @renegadeguild meetup the subject of elevators came up and I was lead to read the The Intuitionist
a book I realized a third of the way in was written by the same guy who wrote Zone One- a beloved zombie novel. Colson Whitehead. Would recommend.
Interesting book. Lots of relevant bits, but one that I latched onto with amusement was swan diving back into Elevator Saga - an elevator optimizing Javascript coding game. Would recommend.
I remember this launching sometime while I was back at ____, so that's 2015 onward - and over 7 years ago. We played it at work- have been meaning to go back to it - fun to try and model it well, knowing what the challenges would/could look like. I remain very mournful at the lack of easy 'let' in the JavaScript language. As someone who never learned a language other than my native English, this is the first time I'm feeling something missing in expressing myself/my thoughts even though I feel rather fluent in both.
I always joked that Google was my D&D Patron and now it feels truer with the evil twist of misaligned corporate values. Despite my love of Kotlin, have been finding JavaScript to coming in more handy. Handy for helping @renegadeguild type things- a group which continues to be pleasant and whose individual company I occasionally get to entertain in person. Recent outings which included seeing Sinners in IMAX. Would recommend.
New job means the brain's been a' churning with code lately. Putting some cycles towards @renegadeguild this month-- signature order spine lines are (languishing) in review (as Draft) and I threw together a typeset assembly tool in hopes of finally (collaboratively) tackling the idea of a Renegade cookbook.
Launched in honor/anticipation of Edible Book Day (April 1st), the Renegade PDF Potluck tool is currently accepting entries. Currently only available to Renegade Bindery folks (thems on the Discord) -- you can find the link & info in the Event on the server.
Deadline for entries is tomorrow (Saturday, March 22nd 2024) @ midnight PST but seeing as only 2 entries have been submitted so far, might be extending that a bit.
Not too long ago I updated the “Wacky” portion of the Bookbinder JS impositions- removing some and adding some and adding a couple bonus features. I remain grateful that @momijizukamori continues to let me graft my mad wee impositions onto their page-- feels like I’m selling knock off Rolexes from a trench coat on the steps of a classy boutique.
https://momijizukamori.github.io/bookbinder-js/
A while ago @nafeathers passed me their typesetting for Kurt Vonnegut’s The Manned Missiles, which I used for my sampler set testing out the options because I trust other folk’s design choices (aspect ratios) far more than my own. The texts are trimmed to “max width” of physical page even though the typesetting remained scaled proportionally-- in some options, the height is the limiting factor, others width. [All pages printed on US Letter paper]
Of course I remain obsessed/in love with my “Mini” layout but am newly fond of the “Small” one and recently bound a ~40k text using it with much satisfaction (and legibility).
The green cutting mat pictures show pre-trimmed & trimmed texts & relative text sizes. The numbers indicate how many pages fit on a single side of a printed page. In my opinion, the best layouts are the “Small”, “Tiny”, and “Mini” ones since they’re “duplex on the short side” fold-up zig-zags and I’ve a strong (but totally unfounded) belief that I get less printer skew that way.
My dudes... I don't know if I'm the last one to learn this, but I come bearing good news! Google's Apps Script is amazing and makes Spreadsheets & Slides so much more powerful!
Tumblr is hardly the best platform to talk about code on but this was a game changer! As a minor helper on @renegadepublishing's yearly exchange, my scripts let me keep up with the growing quantity of entries and while I only figured it out at the end of this year's labors, it will be so very, very, very helpful for next year's.
Will tuck further ravings under the cut but the short of it is that it (A) let me programmatically pull deets from AO3 to enrich final report and (B) let me programmatically fill the results slide show with data.
Coherently flowing prose often fail me when shifting to a technical discussion, so to break down the work:
this was all in JavaScript. I obviously love Kotlin more these days, but it felt painless/rather accessible being in JS
the primary 'key' passed around for the entries (when participents submitted updates and final entries) tended to just be the fic URL (plus gifter/giftee names) - a good UUID but carries no meta info
almost (tho not all) of the entries were hosted on AO3 which made programatic scraping possible
we definitely needed the author & fic name... which required visiting the page. And once you're on the page, why not grab more details? In the end we wound up scraping: title, author, last update, word count, fandom, rating. And while there's more one could collect, we lacked the space to visually display it along with the results. Remember-- the point is the typesetting!
Apps Script let you make URL requests [getContent]
I used the Cheerio library to process the page's contents and let me comb through it using jQuery. Link goes to GitHub page, which has the Script ID you'll need to import it in the Libraries section.
I found the Google Sheets APIs easy enough to read/work with -- just lots of arrays, really. Also, the quotas that you get seem generous to me (for a free product)
AO3 specific note : had to append "?view_adult=true" to the URLs if I wanted to bypass that check screen, but I also had to handle locked fic, which keep you at a reduced info lock screen. Be sure to test E rated & locked fic when drafting your script (Incognito Window is your friend)
Here is the Gist of the pictured script-- it was a 'round 2' edit where I went back and pulled Rating & Locked status : [LINK]
The above refers mostly to the Sheets side of things. The other most magical feature was the population of Slides w/ sheet data!
Notes as follows:
images are my current weakness-- had to go in later and adjust/layout/upload images manually. SUPER LAME. Next time I'm going to dig into pulling images from the drive...
I was able to embed links programmatically into the slides but it was VERY HACKY code. The generation of the PDF links was still a manual task, and while I imagine I could script that, sounds hairy (I want to avoid all things Auth)
The {{name_pattern}} was/is only a stylistic choice. Doing a find & replace on something so distinct is safest tho.
I did not use Alt Text on my things but I think going forward, it would be how I'd ID/address the non-string replacement actions (finding the right shape to anchor a URL link on was finicky the way I did it)
Here is my (very messy!) script for populating the slides: [LINK]
For next time:
using a script to pull tags/fandoms/pairings will make the gifter/giftee pairing process sooooo much smoother (so far it's been very manual!! Bless @aetherseer's tenacity!)
I need to figure out image imports/population of the slides... ignoring any aspect ratio/size issues
Fell into a coding spell- broken briefly by travel and socialization but still lurking in the back of my head. Bézier curves are on my mind, but that doesn't mean I actually understand how to successfully manipulate them mathematically.
It hurts to know that there is a good, clever, competent way to accomplish what I want, if only I knew it... but better to settle on a hack-y corner cased solution than do absolutely nothing at all.
trying to turn attention away from pathetic pet projects to actually asked for communally used coding... bumping up against the classic 'why do anything?' At least the painful balancing of self interest vs others' wants pairs well with the book I'm currently reading-- not done with it yet, but have been really enjoying Leech by Hiron Ennes.
Keeping my brain limber by finally throwing myself into the Word Buttler project, ✨ now with Gregg Shorthand support ✨ My rendering of the shorthand remains incredibly weak, but I've spent time fleshing out other support elements. All of it is blindingly ugly-- I'm a dev, not a designer. Am happy that the functionality I want is slowly being actualized, including:
A Gregg Shorthand keyboard where you swipe out from the center to find the key representing the stroke, in vague approximation of the shape being sought
A Gregg -> IPA -> English translator, which includes inline text elements of vertically stacked options to handle phonetic ambiguity
Simple support tools to help me refine the elements I'm using to render the shorthand. Am far enough along now (can highlight individual characters mid-phrase) that I can go back and re-do how I'm rendering the strokes. Maybe if I read that paper for the fifith time I'll finally wrap my head around how to implement it...
You guys! It’s Advent of Code time!! Day 3 starts in 2 hrs!
Anyone else a coder? Anyone a beginner coder? I highly recommend taking a stab at it. They’re fun, themed story problem style coding challenges. It’s language agnostic and is a good chance to try your hand at something new/you want to learn. I’m writing mine in Kotlin this year (as I did in 2018... not sure what happened in 2019? Missed the boat?) and I’ve already learned something new!