Beglitch (not to be confused with
glitch, because I am bad at
naming things) is a tiny framework to attach fragment shader effects
to DOM elements on web pages.
html2canvas to paint the target DOM node in pixels, then
overlays that atop the target node while keeping text selectable and
While any shader can be used with it, I used one that partially scrambles the appearance of the target node as a visual metaphor for the difficulty surrounding discussions of depression and suicide.
Too Many Webrings!
This project is a statically generated/hosted webring, inspired by Amy Cheng's Webring 2020, another static webring built with Glitch.
This implementation was designed to take advantage of the GitHub ecosystem, namely:
- Free GitHub Pages hosting
- Membership requests & approval are covered by Pull Requests
- Automatic rebuilds on merge
This is purely a design experiment that tickles my 2000s-era nostalgia.
Gluing The Web And WebAssembly Together
This presentation is a technical talk that describes how to add convenience code that makes running WebAssembly easier.
emscripten generate convenient glue code automagically, but because I distrust magic (ironic for a Ruby on Rails programmer) I had to figure how it really worked under the hood before I was willing to let a library do the heavy lifting.
OpenNI2 for Rust
OpenNI2 is a (now abandoned) library developed by PrimeSense to read video streams from devices like the Xbox Kinect, a camera that records both visual data and depth through an infrared sensor.
OpenNI2 for Rust is a safe wrapper around OpenNI2's C API.
This project will eventually combine with a NiTE2 for Rust library to recreate the SimpleOpenNI library for Processing.
The Great Line Art Swap
This Figment installation is an art exchange where visitors can color pre-drawn line art, or draw line art to leave for others.
The result is a constant flow of art between visitors.
Art gallery is currently being editedOHMYGOSH it's a legit use case for an under construction gif! 👷🏻♂️ 🚧 👷♀️
Ads Are Evil, But I'm Worse
This presentation describes a mysterious ad which I discovered after it tried to cover its tracks a little too conspicuously.
I don't recommend the procedure to anyone, but then I also don't recommend running dozens of video ads ten-at-a-time hidden behind a static image to rack up fraudulent video ad impressions until the user's browser tab crashes. What? I'm not mad. 🙃
(Also named Glitch for its accidental development.) Utilizes an Asus Xtion Pro Live (basically an XBox Kinect) to mirror visitors' bodies in strobing color.
I tried making a toy visualization that "red shifted" people as they moved toward or away from the camera. Several wrong calculations and integer overflows later, I ended up with a flickering grayscale mess, pictured.
I eventually fixed the math errors, and discovered it wasn't nearly as fun as my glitched-out art, so I took my piece in that direction instead.
I installed it on Governor's Island in the basement of Fort Jay, a cavernous pitch-black bunker perfect for projecting a light show.
I learned Ruby so I could stop making so many typos when writing MUD areas.
From 2002 to ~2015 I played a Merc-derived MUD called AVATAR. A rare area building contest was hosted by the Immortal staff, and after writing a tiny newbie area filled with sleepy ents and one angry warlock, I was offered the privilege of writing areas regularly.
AVATAR's codebase hails all the way from 1990's DikuMUD, and its area file format grew harder to manually read and write with each new feature added to its syntax. AvVerify was my first ever Ruby program—I learned as I went—built to parse area files and report possible errors.
MUD areas contain the entirety of the game's lore, and with enough contributors it sort of becomes a shared fanfiction of itself. I spent countless hours researching in-game lore to find interesting story lines to pick up, and concoct mysteries that I hoped other writers would investigate and embellish on their own.
I should emphasize that area building was one of the most rewarding creative pursuits of my youth (and young adulthood). In retrospect, I wish I hadn't stopped, but a combination of d̻e̠͉͔p̟̟̰ͅr̘̦e̩̫̗̟̜s̗͍s̻̝i̞͖o͉̻̪̩n͚̰ ̞͈̻̬͔a̝͖͉̳̻̰͈n̦̝̘͓̞d s̤̙o̻̘̱m̞̦e͉ l̩̯͎̼̦̣o̶̶͍̬o̯̙̙̱͚̻̙ͫ̆ͦ͋m̧͍̻͜i̧͓̩̲͚̹͕̺͘n̴͇͔̱̩͉̠͝ͅg̝̦͇̦͟͝ͅ i̛͏̨̛̯͚̥̺̟̪̫̙̗s̷̢̛̛̰͇̻͖͈͉̙̮͍͙̪͓̥̤͔̳͝sͦ̍͑̄̅̌͏͇̭̜͔̺̹̖ͅų̣̘̜̳̲̘̘̣̣̰̦͘̕ȩ̢̱͙͉̤̮̬̹͖s̢͏̢͔̹̯͙̣̺̹̩̥̥͕̠̙̠̦̬̠ kept me from keeping up contact with my peers. 😶
Spamusement Pop Quiz!
A lot of people my age cut their teeth on web development through Neopets. For me, the first software I wrote outside of a school setting was a quiz based on Spamusement! fan comics.
From 2004 to 2007, Steven Frank created Spamusement! which he accurately described as "Poorly-drawn cartoons inspired by actual spam subject lines!"
A lively fan following grew on its forums, the central focus being the Spamuser Comics section, where members drew their own art to email subject lines that landed in their inboxes. (For the young'uns reading this, there was a time when email spam was truly surreal, rather than bland hyper-targeted product offers.)
After a few years, the Spamusers forums contained quite the body of work, and for fun I made a quiz to test forum regulars' spam-instincts. It was monstrously bad, as first attempts at web dev usually are, and it still has a special place in my heart.
The Spamusers fan comics collection has been decimated in the decade(s) following its heyday, by purges from the likes of ImageShack, policy changes to Photobucket, etc. I wish I could have saved more comics before they were lost, but I'm glad I could keep this little slice of internet art safe and sound.
Love you guys. 💛