Difference between revisions of "User:Beadsland/Writing"

From Hack Manhattan Wiki
Jump to: navigation, search
(Marketing/Program Development)
(Marketing/Program Development)
Line 63: Line 63:
== Writing as Writing ==
== Writing as Writing ==
===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. In the meantime, I'm continuing to refine handbills/flyers absent a finished toolchain. Also, want to develop a way to streamline cross-posting HM's Meetup events to Spingo — the backend for the community calendar used by local newspapers and other media entities.
Various initiatives:
Related to this, am wanting at some point to put together a Maker-themed museum exhibit/convention event series to draw out those on our Meetup mailing list who, while interested in the IDEA of making, haven't yet been inclined to get move involved in the Hack Manhattan community absent the sort of go-someplace-and-do-a-thing cultural activities more commonly seen on Meetup groups. Oh, and I still want to brainstorm a proposal for HM to apply to the next eWaste residency offered by the LES Ecology Center. Also on the list: Organizing some Design Studio Pro workshops.
* 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
On a related note: want to research more of the history of the hackerspace, makerspace and DIY movements and see about organizing workshops and lectures related thereto.
====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===
===Mashup RPG Sourcebook===

Latest revision as of 02:42, 9 September 2019


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