From Hack Manhattan Wiki
Revision as of 23:03, 5 April 2019 by Beadsland (Talk | contribs)

Jump to: navigation, search
Beads Land-Trujillo
Twitter dead
📢A Maker Manifesto

Hack Manhattan Gear Logo.png Projects: Bricodash

Programmer since childhood and advocate of learning an 8-bit machine language (6502 is my preference) as the phonics of higher level languages. One-time dial-up MUD wizard using ed, now equally disenchanted with both vi and emacs. Did my stint as a Web developer in the 90s, now do my own things. Favorite languages: Elixir/Erlang, Lua, PostScript, LPC. Perl is my old standby, but Python is growing on me.

Academic background in psychology and anthropology. Philosophically, think Grace Hopper meets Jane Jacobs meets Annemarie Mol.

Co-host a monthly community crafts event for my housing co-op. Full of ideas, and love a good brainstorming session. Enjoy sharing a space where creative folk are doing creative things. I tend to go incommunicado to hibernate 🐻💤 when the days are short, only to pull frequent all-nighters 🌇🌆🌃🏙️ working on projects at the space throughout the rest of the year.



Collapsed by default.



Working on projects in three different general categories, described below, with projects listed roughly in order of priority within each category.


Various DIY/smarthome and other projects about (or related to) the domicile.


There's been some discussion of pursuing more active outreach and membership development for the space, including:

Scannable Code for Donations Flyer

Want to redo the donations notice at the space to include a QR Code or two to allow folk to quickly make donations from their mobile device if so inclined.

Creating a More Comfortable Environment

First step we're considering tackling is the kegerator/dishrack area. Ideas on the table:

Installing trays within the kegerator to store bottled beverages. There has been standing water at the bottom of the kegerator at times (whether due to a leak in the water keg or condensation), so trays would make things a bit less unpleasantly damp on retrieval. Related to this, we ought to have some sort of signage that makes clear what is on offer for the sake of visitors at such time as informed members are not present to explain what's what.

We're also examining options for rehanging or replacing the bathroom door to free up space on the bathroom wall now behind the swing of the door. The idea would be to install shelving on that wall for drying racks and dish storage.

Tag-Team Community Cross-Pollination

Going to conduct a survey to identify progressive-adjacent Meetup groups and other local orgs that we might want to develop ties with. The goal would be to find likeminded subject domain experts who might be interested in sharing knowledge and expertise within the HM community—fostering such relationships may also serve to bring new members to HM who might otherwise not have found us absent such outreach. Several members have expressed an interest in helping with this initiative.

Relatedly, am wanting to tap the broader (even global) hackerspace/makerspace community to bring in folk to offer talks or presentations on the history of the hacker, maker and DIY movements.


Crafts Event Prep

Flyers for October and November are due. Craft ideas research: mask making (for October); doll making (to find a use for many dozens of knitted dolly caps). Need to do an audit of our craft supplies and prepare orders to restock.

Paperwork Backlog

Have been sorely derelict on a heap of household and client bookkeeping and filing, while immersed in other recent making projects. This includes scheduling of long-overdue appointments and restocking our household pantry. Made some significant headway on this, might as well keep ball rolling.

Roomba Repair

Cliff sensors have been successfully disabled, and original left wheel reinstalled. Still unhappy with side brush performance—and will return to this eventually—but presently just glad to have this robot back in service.

Darn Socks

They're actually quite nice socks, but yeah, they've got holes. Quite a few of them do, darnit.


Astronomical Device

One of our members has a telescope rig powered by a Raspberry Pi, but wants to tweak the UI running on the Raspbian desktop. Have promised to help them figure out what needs reconfiguring next time we're both in the space.

Office Chair Repair

Having already repaired three other office chairs of various designs and defects, another chair presents itself for fixing. This time, it's an old brown chair that is already an heirloom hack. A some time in the past, the bottom of the seat has been replaced/augmented with a wooden construction that appears to secure the seat cushion to the caster-base column. Since that time, the bolts holding this wooden bottom to the cushion have come loose on the front corners. A user who naively reached under the front of the chair to lift and move it, can accidentally catch their hand between the cushion and the wooden bottom.

The chair currently has the word "NO" inscribed in blue tape across the top of the cushion seat, to warn users, if not that they might get bitten by the chair, then at least that they ought to exercise caution.

On best examination, it appears the repair will involve removing the wooden bottom from the cushion, and then resecuring or replacing nuts that had previously held the wooden base bolted to the cushion seat.

Steelcase Leap Chair

The cylinder button began getting depressed unintentionally again. PLA+ failed in about 30 days—the straddle legs snapped off rather than the washer ring failing due to compression. Dug out the old spacer and replaced with another 70% infill PLA, pending the creation of a molded graphite replacement. Rising is a bit stiff and requires multiple pulls on lever, but does then stay up until released. Will monitor. (as of 10/11/19)

Member Storage Audit

Planning to go through our member storage shelves, identifying left-overs from former members, and moving less actively used bins to higher shelves, to better facilitate storage needs of new members in the future.

Roommmate Tech/Organizing Consult

  • electronic birthday calendaring
  • charitable giving analysis
  • pruning their electronic task list
  • research piano instruction apps for android
  • getting them up and running to learn the ins and outs of using video conferencing tools
  • organizing teaching materials filing system
  • substitute teaching go pack strategy
  • prepping unique favor packs for Halloweens
  • consulting with local social services non-profit on medical escort smart phone app


Dashboard Door Buzzer Integration

Wanting to wire a single-board device in to the building intercom system to detect the door buzzer. This will allow us to use the dashboard real-estate for other displays than the door camera, while still switching back to the camera swiftly when someone is buzzing for entry.

Household Repairs

Various small and large projects have been waiting in the wings, including:

  • Appliances
    • rebuild/redesign Lego water fountain
    • repair of a glitchy flat-screen monitor
    • replacing broken window blinds
    • retouching nylon on dishwasher racks
  • Space
    • repairing vinyl floor in kitchen
    • securing a set of shoe holder mounts
    • refurbishing an old hammer drill
    • ceiling hook over bed
  • Sewing
    • replace wrights on lampshade of a standing lamp
    • darning/patching bedsheets
    • hem favorite scarf

Installing Storage

Once repairs are out of the way, a number of household storage projects are on the agenda, including: a corner bar for hanging clothes and installing rack shelving in our kitchen

Completed: Bathroom storage tower has been cut to accommodate shut off valves, urethane and fresh paint applied, and installed in its new home.

Custom Craft Material Dollies

Our community crafts group has accumulated more donations than could every easily fit in our existing carts. We've resorted to lugging surplus around in oversize retail shopping bags. Moreover, the carts we do have aren't for outdoors use. They're fine for moving materials from our apartment to the community room the same building, but if we want (or need) to set up for an event in another building, the casters are not equipped for even well-maintained sidewalks, and we tend to see drawers slide open or and containers slide off shelves and topple to the ground as we trundle along on sloped grades. Finally, we've got some craft materials, namely yarn, fabrics and collage materials, that really need to be in larger containers that display their contents in an inviting way without having to unpack and repack those materials for each session.

Thus, there are three goals. First, to design a pair of dollies with custom, quick-assemble cage frameworks. The idea is that our existing craft carts could be lifted onto the dollies, providing heavy duty casters to get around outdoors, and then hemmed in by bars or slats that would keep drawers and shelf contents secure pending arrival at a destination. Providing for cover against rain or other weather would be a bonus. Second, to design a similar dolly for stacking larger containers than we currently aren't using, but would serve for bulk craft materials. Third, to design containers for bulk craft materials that quickly deploy as inviting displays of those same materials on site.


Data Processing Tower

The Tellurium project is proving very CPU-intensive. Generating a batch of 99 one-of-a-kind bespoke handbills easily takes six hours for my current computer to generate, plus another hour of post-processing, and then two hours of printer time. Further, the new toolchain (once gdp spelunking resolves current segfaults) will rely heavily on NLP processing, where parsing for word counts is already proving computation intensive.

Going to explore building out a custom box to handle chugging through these processes. In addition to building the toolchain to leverage multi-threading and multi-process techniques, as appropriate, am also considering the possibility of pushing some computations to GPU. The actual assembly of each word cloud (placing objects on a two-dimensional field) seems especially suited to GPU-based computation. This, of course, would require learning something about GPU-based solutions and figuring out what libraries exist or could be rewritten for GPU before specing out the new machine build.

Network Management

The various electronic components on the table-level of my IKEA-built standing desk have become an unmanageable tangle. The plan is to build a pair of LackRack component mounts under the standing desk and transfer various Ethernet and power connected devices thereto. As part of this process, will build out a heat ducting system to channel air from below the desk to the intake vent of the convector a few feet away — taking advantage of the chiller cooled pipes that feed the convector in the summer.

Also want to run Ethernet to the back of our apartment, rather than rely on spotty performance of EoP extender currently in use. This will support the development of audio notification relays planned throughout the apartment for telephony and other applications listed below. Also, gonna set up a Pi as a wifi router for our wifi-only printer, as it has become a nuisance rebooting the main router every time the printer loses connectivity with the network.

Sleep-Hygenic Lighting

Intending to replace current lighting fixtures with programmable smart bulbs and a custom driver that will adjust the level of blue light throughout the day, in accordance with my 2nd/graveyard-shift work cycle. This includes the appliance bulb in the refrigerator, so that one isn't treated to a blast of bright white light when scrounging a "midnight" snack. Also part of this project will be running motion-detector activated red LEDs along the hallways, to allow my roommate to get around early morning without disturbing my sleep by flipping on room lighting.

The first step will be to set up a dedicated console-cable managed wifi router and management hub that will allow for control of smart bulbs without exposing those devices to the Internet.

Audio Computing


  • integrated caller ID announcer
  • mode-switchable caller ID blacklist/whitelist


  • whistle-activated battery-powered nebulizer
  • whistle/tone detector/alterter network for hearing impaired
  • rice cooker setup detector
  • no-brainer portable stereo media player


  • multi-output audio stream relay
  • nighttime noise machine lashup
  • research hearing loop tech


  • mezzanine rack for a compact dishwasher
  • DIY kitchen counter LED hydroponics enclosure
  • intensive file cabinet purge
  • paint apartment
  • empty storage unit
  • guinea pig hutch with integrated hydroponic garden
  • learn to bake
  • learn to ride a bike
  • learn ASL


Various writing projects: prose, copyediting and programming — together with related technical tasks.

Makerspace Dashboard

The build-out of Bricodash is nearing completion. (When I wrote the preceding sentence, there were maybe half a dozen items on the pending tasks list for this project. Every time I think it's near being whittled to completion, new issues and opportunities arise, and the list enters hydra mode.)

An upgrade and expansion to the old defaultcast implementation—originally created by Michael—Bricodash will, when complete, combine data feeds from some dozen different APIs. Built on a polling architecture, the Javascript-light Web front-end pulls in various panels of regularly-updated content, while leaving heavy-lifting to a cron-triggered python back-end. This has proven essential for serving actively dynamic content to such low-powered devices as a Chromecast and a first-generation Raspberry Pi, both of which have demonstrated a tendency to freeze when asked to process too much client-side Javascript.

Development tasks outstanding are as follows:

Performance and Maintenance


  • fix early voting -- comma not second plus sign
  • resolve v3/events/search failure (email reply from Eventbrite API team 22 Oct: solution being explored)
  • explore having bricodash spawn in new tab then close old tab -- to force GC of JS code snippets


  • recreate repository as non-fork
  • readme link to defaultcast
  • research and select a code of conduct
  • flesh out issues linking to project plan

Long Overdue Calendarical Overhaul

Reverse Engineer FCNA/ECFR Calculations

  • relearn trigonometry
  • refactor astronomical month calculations to new repository
  • see if we can solve sunrise (sunset) equation for pair(?) of latitudes on a given meridian (at a given datetime)
  • see if any altitude delta patterns are apparent with coarse (non-continuous) iteration over enlongation-bounded datetime range
  • work out if we can iteratively narrow down latitude pairs to solve for altitude deltas within intersecting sunsets
  • determine how elevation complicates all of this (i.e., intersecting sunset clusters rather than intersecting sunsets)
  • examine if there's a solution for westward obstructions (e.g. mountain ranges) in determining sunsets
  • explore performance gains of reimplementing search traversal via elixir calls to python calculations

Islamic Calendar

  • refactor islamic calendarical library to new repository
  • incorporate for astronomical calculation as used by some in North America
  • confirm safe astimezone use (not erroneously masking local time as UTC)
  • refactor to combine observational and astronomical date sets
  • add Eid al-Adha to calendar

Hindu Calendar

  • refactor hindu calendrical library to new repository
  • new module to calculate enumerations of tithi for a given month
  • new module to calculate enumerations of months for a given year (rather than lisp ordinal month)
  • reimplement lisp functions for hindu calendar in python3

Calendrical Umbrella

  • spin off jewish calendarical library as dedicated project
  • spin off master festivals project for drawing together specific calendars

BindSight :2020

See also: BindSight project page

Concurrent, extensible, frame-scrubbing webcam gateway.

Web API service to stream doorcam and spacecam to Bricodash and public gateway, respectively, while tracking activity and performance of these and other webcams at the space. Will be more efficient and reliable than spawning PHP and Python processes on an as-they-come basis.

Written in Elixir, will be taking advantage of various new features of the language, building on the strengths of Erlang/OTP, including Mint (web client), GenStage (backpressure event pipelines) and ultimately mix release (build-time deployment packaging).

Fault Tolerance

  • refactor spigot as behaviour
  • insert exit monitor into children
  • exit monitor crashes on exit received; supervisor strategy of rest_on_one
  • webapi exit monitor reconnects to new spew and keeps running


  • no reason to split on doubledash
  • reconfigure profile to run when profile_seconds > 0
  • refactor adhere/hold to own Adhere genstage
  • rebalance chunk load to other genstages
  • digest: refactor handle_events/3 case statement to function clauses
  • digest: drop EOL determination
  • digest: refactor further if possible

Error Recovery

  • deferred spigot spinup in event camera offline at startlink
  • fix EOL check to verify in case of dropped bytes
  • test logging on down camera
  • don't nag when connection down (periodic warn)
  • ensure recovery when source stream fails


  • review whether batch requires task
  • consumer-producer in spew to filter out :corrupt/:greytoss/fail messages
  • retool Validate stage to send tuple {:ok, binary} or {_status, binary}
  • retool Digest stage to sent tuple {:ok, binary} or {:fail, error}
  • retool polling functions to send tuple {:fail, error} when such occur
  • consumer-producer in slurp to introduce :corrupt/:greytoss on :test stream

Deep Validation

  • implement greytoss checking
  • replace async batching with task/agent batching, for JIT evaluation
  • watermark with source timestamp
  • configurable agpl watermark
  • provide for timeout watermarking


  • review supervision tree for batch tasks & agents
  • review memory usage to mitigate ProcBin leaks
  • integrate certificate used by Apache
  • configure to launch as daemon
  • bootstrap to obtain dependencies and compile cold


  • type guards on get_env
  • @impl on all OTP callbacks
  • type guards all public functions
  • type checks on unstructured opts
  • typespecs and dialyze throughout

Subsystem Integration

  • slurp snoop to track performance on each camera
  • slurp snoop to webhook on corruption/timeouts
  • spew snoop to swap out CGI for upt/chk touch points
  • spew snoop to track client fps performance

Sousveillance Integration

  • spew snoop to swap out PHP for sous veil touch points
  • distributed sous veil client for cross-platform data exchange
  • integration with sousveillance watch-back system


  • add robots.txt route
  • configure public ipcam as :test
  • flesh out documentation
  • investigate periodic multi-hit events: server severing connections prematurely? badly behaved client device?
  • investigate specific issue of pishop launch causing multi-hit failures on all other clients
  • stress test
  • explore sobelow security checking

Webhook Notifications

Javascript client-side triggers to deliver messages to our Slack channels to provide alerts when the camera feed or client devices stall.

  • migrate sleep macro to general purpose library
  • migrate from webhooks integration to webhooks feature of bricodash app (and update notice)
  • server-side webhook on stall of any given device
  • when wonkiness addressed: downthrottle chromecast reboots to 1x per day; stream swap-in to never


Standardize Web server setup and fully integrate BindSight.

  • migrate to standard web port (now that relayd installed on router)
  • configure X-Forwarded-For logging in apache
  • enable SSL for camera feeds (requested for full conversion to new sous veil system)
  • enable SSL directly via daemon's listening port (i.e., elixir rather than apache)
  • transfer slackbot snapshots to bricolage gateway


Flesh out project documentation—after fixing existing problems with our Mediawiki server.

  • recent edits monitor to trigger cache purge on transcluded Bricodash documentation updates
  • help get mediawiki server 504 issues resolved (currently an obstacle to Bricodash documentation)
  • broach discussion of absent Copyrights page on Wiki -- do we want to adopt a license??
  • redraft lists in calendar sections as tables
  • flesh out Bricodash Future Ideas, explaining known requirements for each

Cloud Log

Incorporate remaining sources into rolling update log shown in lower left-hand corner.

User Repositories

  • refactor cloud/github to abstract away github/gitlab/etc
  • allow more than most recent pushed repository to be shown
  • add boxrs-based git repositories to Cloud Log panel

Other Cloud Services

  • Mediawiki — pending new account requests
  • Zendesk — count of unread/open inquiries
  • Status updates on donations: Patreon, Paypal, Amazon Smile...
  • write up requirements for Instagram Integration
  • write up requirements for Twitter Integration

Retire IFFF Wiki Updates

  • bot to post daily cloud log update to #general on our slack


Incorporate additional calculated and externally sourced calendar events.


  • almanac alt for almanac events
  • add enum of event sources for sorting priority (when same start time)
  • move HM anniversary dates to special .cal that takes precedence on HM calendar (and also appears on NYC)
  • swap out icalendar (buggy repetition exception handling) in favor of true API


  • new module to calculate hindu lunar tithi => closing muhurat => solar day
  • revise diwali/deepawali calculation using tithi rather than lisp library approximations
  • correctly calculate dates of International Astronomy Day (email out to Astronomical League for better calculation rules)
  • calculate dates of Manhattanhenge (email out to library of American Museum of Natural History for formula)
  • add eclipses and other significant astronomical events to holidays
  • finish fleshing out remainder of movable feasts for Community Calendar (June 2019 forward)


  • use google search to find Offside Tavern Meetup events
  • add placeholder events for non-Meetup Offside Tavern events
  • refactor brite search by location routine to common library
  • add nyc mesh, nyc resistor, fat cat fab lab, makerbar, makerspace nyc (SI), futureworks (BK/SI), genspace to Community Calendar
  • also add grow with google (if still in NYC), 2600, Off the Hook (if still broadcasting), blick, michaels, local library branches, makerish meetup events, NYC street fairs
  • bot to post RSVPs for upcoming events to Slack


  • revise #thehaps formatting to provide headers per day
  • embed hotlinks in #thehaps channel event listings
  • concise calendar response for interactive slackbot
  • auto-capture of #thehaps posted events to Bricodash/Extra:Calendar
  • automation/streamlining tools for cross-posting HM Meetup events to Spingo
  • enable toggling between Welcome header and holiday greetings ^


Remaining features and code maintenance before calling it a major release.

  • integrate citymapper API for local subway stations
  • refactor source files from initial launch
  • find owners to adopt data sourcing projects that require more than passive API calls (see sections below)
  • squish and push fork to upstream


Once built, streamline and rewrite as a truly beautiful application.

  • migrate from bricolage to less power-hungry hardware
  • combined community slack calendar to wiki page (requires privacy policy under brite license)
  • reimplement bricolage to run as embedded system under elixir/scenic/nerves

Just For Fun / Crafts Flyers

I co-host a monthly intergenerational unstructured crafts activity at my housing coop. For each event I prepare a custom designed flyer taking inspiration from holidays and notable events occurring that month. Recently, we've also started experimenting with quarter-page reminder cards providing the dates and times of the next two scheduled events. (Events alternate between Saturday mornings and Sunday afternoons to allow more participants to take advantage.) These reminder cards draw on the graphical treatments from their events flyers.

All of this is a reasonable amount of work to put together, and too often flyers have been designed and distributed last minute because I've had so many other things on my plate. Therefore, I've decided to design a full year's batch of flyers en masse, rather than do one each month.

Integrated Crafts / Space Booklets

Planning to create a quarter-pagish-folded HM wallet with inner slots for inserting a slightly smaller version of the JFF quarter-page reminder card, on one side, and a refreshable calendar of upcoming HM events, on the other, to streamline promotion of my two favorite making venues.

These promotional wallets will likely incorporate some variation of A Maker Manifesto.

Utility Programming

Mediawiki Cache Purge Triggers

My pages on our wiki are becoming increasingly dependent on nested transclusions. However, default behavior for mediawiki is to cache page hits pending an edit. Since transcluded content is not actually on the page it is transcluded to, edits don't trigger updates to transcluding pages. This has necessitated triggering cache purges manually. At some point, I want to set up some webhook triggers to automatically purge all my transcluding pages whenever I issue an edit to the wiki.

Okcupid Cluster Analysis

On a lark, I've been toying around with doing cluster analyses on the text of profiles returned by the OkCupid matching algorithm. The objective is to rank each cluster by the average of my pass and like activity for profiles assigned to each. Ideally, if there's enough differentiation between clusters, one could imagine discarding the cluster with the highest pass rate, and re-clustering around the profiles that remain. Repetition of this process would, theoretically, result in the profiles most likely not to be passed (that is, warranting an introductory message) floating to the top.

Unfortunately, differentiation between clusters seems to be rather narrow, and I'm running up against my utter cluelessness about TFIDF vectoring when trying to tweak parameters in an effort to get wider differentiation.

This project is now finished, and just needs to be written up and committed to a repository.

Service Company Routing Engine

After hearing a friend describe a project they were working on where they had to deal with assignment of tasks that have (i) time frames for completion rather than fixed due dates and (ii) numerous contingencies that subject to change, I realized that what was being described sounded very similar to the sort of problems I'm hoping to solve through design of a reactive programming language. That said, the problem domain here is narrow enough that an agent-based solution would probably suffice. I've decided to do some prototyping to see how far a working system can be modeled drawing on reactive principles but using existing tools.

Device Solutions

Media Library Consolidation

Have mostly finished migration of a 2 terabyte podcast media library to a dedicated RAID. Still need to fully restore broken file links in the iTunes database, and set up some automation to auto-provision the Windows 7 virtual machine.

An Orange Pi Zero is running as usbip host. Next steps will be to finish a usbmon script that displays an indicator of two way traffic. This is currently being printed to console, but will eventually drive an LED array. Progress continues on libgpod script to post-process the iPod database, after each sync, adding a custom playlist that collates and staggers tracks from existing playlists.

Also, want to add some podcasts to the library:

  • Elixir Outlaws (errored out previously -- check again if working)

Tellurium Toolchain

Tellurium is the name of the project for generation of the bespoke, each-one-of-a-kind, design-masked word clouds used in current Hack Manhattan handbills and tear-off-ticket flyers, and also the name given to the bramble hosting the tools for same. Currently a lash-up of perl, python and bash scripts, and involving a lot manual steps from cloud sculpting to proper alignment for paper-cutter-ready double-sided printing, the process of creating these materials had become profoundly time and resource intensive.

I've been retooling the production process to provide a screen-able console application for crawling and intelligently caching the cloud crawl process and to automate the assembly of properly-aligned PDF files for printing. However, my decision to use ncurses for the console (simply because I've never developed an ncurses application before) has hit a bit of a snag: Python is now segfaulting on refresh (or, more properly, noutrefresh) calls after a SIGWINCH. Gonna have to do some gdb spelunking to figure out why.

Writing as Writing


Various initiatives:

  • streamline/automate cross-posting HM Meetup events to Spingo
  • Design Studio Pro workshops
  • maker-themed exhibit/convention event series
  • eWaste residency at LES Ecology Center
  • workshops/lectures re history of hackerspace/makerspace/DIY movements
  • computing workshops for kids at Penn South

Marketing/Program Development

Have been promising a full marketing analysis of Hack Manhattan, including a membership recruitment strategy proposal, since late last year. Tellurium was meant to be low-hanging fruit, but it's really become a major diversion, so the more esoteric tasks of founder interviews and SWOT analyses are on indefinite hold, for now.

Mashup RPG Sourcebook

My favorite of all time tabletop RPG is a Heideggerian-thrownness of a genre-mashup called TORG. The game was recently updated and released with a new streamlined ruleset following a successful Kickstarter campaign. At some point, other projects allowing, I may even organize a group of dedicated gamers to play a camapaign or two of TORG.

However, having spent some time playing both World of Darkness systems in my younger years, I've also become fascinated with a cross-over between the two systems, and so have started drafting a sourcebook that would allow for crossover campaigns. My intention is to provide a meta-framework that will allow Storyteller-Gamemasters to mix and match the rule sets and settings of both games during the course of a campaign or even a single gaming session.

This is where my task list for this project currently stands:

  • design some 3d-printed card holder insets
  • custom Torg USB stick (also reader??)
  • machine running new version of Scriviner
  • dice probabilities for multiple success conditions (sourcebook)
  • glossary and gazetteer sections of sourcebook
  • sourcebook for a nWoD/Torg mashup (i.e., everything else)

More Programming


  • recreate printable map utility
  • multi-edit aware wiki->slack notifier
  • existing utility scripts to repository


  • project line count daemon
  • hackable PS1 framework
  • custom cross-platform vulgar incrementor widget
  • user-defined diet diary app


  • Elixir emulation in Lua
  • PL with EC data structures as first class citizens (brainstorm) — i.e., a push-pull reactive programming language

First-class EC Projects

  • percolating task dashboard (concept)
  • savvylist media manager
  • social propinquity platform
  • community event aggregation infrastructure
  • local governance policy sandbox platform
  • distributed MUD VM

Social Propinquity Architecture

  • thick-client access-mitigation for activitypub
  • mood and sensitivity oriented back-end reach-tuning
  • side-channel media and scrobbling feeds
  • folksonomic threading component

Federated Social Propinquity

  • post-activitypub integrated infrastructure
  • distributed trust protocol for messaging contracts
  • comment section management integration
  • patron-access local and special interest journalism
  • non-dyadic courtship platform


  • learn to knit (as pedagogical reference)
  • writing-oriented intro to computer programming
  • printing daemon alternative to printer drivers
  • triptypchglyph signing dictionary (for ASL)
  • applied evolutionary phenomenology research


Stuff I want to do with 3d printing and other miscellaneous hands-on making.

iPod Classic Rebuild

Am refurbishing an iPod Classic to use SD cards in place of HDD. At some point, may also print an oversize custom chassis for the Classic, incorporating a speaker as alternative to headphone listening.

First step is to crack the case on a knock-off 160 Gb iPod Classic to extract the control board. Apple released two versions of the last (thin) model board, both with the exact same model number, but only one of which supports data storage greater than 128 Gb. Will need to get at the larger capacity board in order to upgrade to larger capacity SD cards. Unfortunately, the knock-off appears to be glued shut—simply trying to spurge the case open is thus not an option.

3d Printing

Learning the ins and outs of 3d modeling in OpenSCAD, and getting familiar with the mechanical properties of PLA and the annealing process.

Documenting Projects to Date

Setting up a generic repository for design projects to date, together with basic documentation of each project. Along with this, should probably update the space's 3D Printing page, which is significantly out of date.

Recent models printed include:

  • a wallet-card size coin holder
  • anti-fatigue-mat-safe shoes for a kitchen foot stool
  • a bobbin cover plate for the HM Singer*
  • a tension rod wall sconce
  • a socket-and-trough mounted placard-holder

*Found recently that someone had cellophane-taped the bobbin cover plate into place. Still needs to be a smidgen longer.

New 3d Print Designs

Some off the shelf thingiverse designs:

  • better amazon dot amplifier (first one tried was structurally unsound)

Planned simple models include:

  • blue-LED shield for desktop tower
  • plastic covering of broken arm on eyeglasses
  • replacement drawer handles
  • snap-on rod-shelving side-caddy (nylon filament)
  • replica walker cable clips (nylon filament)
  • toe-space spoiling bumper replacement for Roomba

CR-10 Modifications

Current prototype of Tecknet USB camera mount needs some work. Using smooth surfaces to indicate proper alignment is useful, but need a way to lock in place once oriented.

Also want to do some performance tuning on the Pi currently serving OctoPrint. In particular, trying to identify and resolve the system's habit of hanging on cancelling a job, necessitating reboot of both the CR-10 and the Pi.

Classic Ipod Relay Dock

As part of consolidating my podcast media library, am designing a custom case for the Orange Pi Zero that will be acting as a usbip host and libgpod service. The case will include a dock that will fit my iPod Classic snuggly while in its case and an LED panel to indicate USB traffic.

I may also want to incorporate a speaker into the design, but I'm not sure about that yet.

Replica Hose Cock Key

A hose cock is a faucet found on the exterior of a building. Rather than a handle, the cock is keyed so that it can't readily be turned on by any passing stranger. Currently exploring replicating such a key to provide a backup. Have printed a version in PLA which I intend to anneal. (Need to calibrate the toaster oven at home first.) Plan to explore other filament materials and/or on-demand fab options once I've exhausted the possibilities of annealing.

Brochure Holder

Our current brochure holder is a Thingiverse design. The companion sticker holder and tear-off ticket holder are both scaled versions of same, and suffer from the fact that the original design wasn't meant to shrink. My plan is to develop a custom brochure holder with a two-color stencil-inset of the Hack Manhattan tower logo for its back, together with an integrated sticker holder. Beyond this, the final design will be wind-proof (so that handbills won't go walkabout when displayed at outdoor fairs/festivals) and provide some modicum of rain protection (will likely incorporate some transparent PLA), in addition to providing for an optional tripod mount.

The first step will be to develop the stencil-inset component and figure out a snap-in-place mechanism for loading a stencil-inset back into the brochure holder assembly. Planning to refine the stencil inset process by creating some custom curb-your-dogs signage for a client's sidewalk tree-pit.

Kiosk Tablets

The idea is simple: use a handful of cheap 7" tablets to present basic information about Hack Manhattan, a RatPark tenants' event calendar, demonstration of the HM camera, quick sign-up for the Slack and Blabber, and even an interests questionnaire that would serve to introduce visitors to the breadth of possibilities that Hack Manhattan has to offer, as a space and as a community.

The first task: making it easy to charge and store these tablets, such that no one has to fiddle with USB connectors every time the devices are picked up and put down. For this, planning on using inductive charging loops and creating a simple case and docking cradle arrangement to ensure proper alignment. The cradle will also allow for wall mounting tablets so that they are out of the way yet readily accessible, serving as digital picture-frame style slideshow when not in use.

Going to first get my feet wet with inductive power and custom case design fashioning a recharging dock arrangement for a pair of bluetooth earbuds.

Miscellaneous Crafts

A few minor projects to be tackled:

  • binders for organizing collage clippings
  • swatch books for donated fabrics
  • mixing up a big batch of mod podge for monthly community crafts group
  • repairing a favorite necklace that broke earlier this year
  • improving upon my roommate's bling of my felt laptop case

Raspi Terminal Hub

My dream is to have a hip-mounted Raspberry Pi with an Adafruit-design HUD and a chording keyboard for terminal and input, respectively. The goal being to do much of my writing/programming while walking Hudson River Park, rather than sitting at a table or shifting my weight from foot to foot at my standing desk at home.

The first task is to learn to use a chording keyboard. Practicing on a Twiddler model last year, was up to about 40 wpm on 6 letters (~30 wpm with seventh letter) before setting this aside for a time to dive into other projects. Am wanting also to improve on the Twiddler strap (currently a velcro strip that is serviceable but not ideal) and doing something about how noisily clicky the keyboard keys are.

Related to this, want to set up a Rasbian image distribution mirror, if only so I don't have to wait for downloads for my own projects.

Other Design Projects


  • better fruit fly trap
  • ketchup pack piercing funnel/bottle filler
  • wax-cylinder style media and player


  • AV-cart rig for home-bound video-conferencing
  • collapsible laptop standing desk
  • textured bedsheet design
  • explore soundproofing for HM if not done already
  • ergonomic walker-handle attachment for wire shopping carts (poss. mobility unlimited challenge)


  • precision autoleveling scissor-lift print bed
  • my own jacquard loom
  • keypunch stamper
  • learn puppet making


  • learn electronics
  • paneled eink display
  • nighttime text tablet
  • gyroscopic posture-retraining monitor
  • many heretofore unimagined projects
  • electronic toy machine language building blocks
  • store-and-forward powerline networking