Difference between revisions of "User:Beadsland/Writing"

From Hack Manhattan Wiki
Jump to: navigation, search
(Marketing/Program Development)
(Marketing/Program Development)
Line 67: Line 67:
 
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.
 
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.
  
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.
+
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.
  
 
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.
 
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.

Revision as of 05:13, 8 September 2019

Writing

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:

Maintenance

  • explore migration of chromecast client to pi dongle to enable CEC input channel control (spearheaded by mz)

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).

Code Cleanup

  • import common name method rather than wrapping it
  • recast all shortnames with bindsight prefix
  • investigate doing per-connection idle timeouts

Refactoring

  • better use of use macro in mintjulep
  • refactor side-by-side concatenation recursion to bulk joins
  • rebalance chunk load to other genstages
  • chunk: clean up handle_data pipe chain
  • digest: refactor and clean up

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

Validation

  • 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
  • provide for timeout watermarking

Advanced

  • 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

Robustness

  • 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

Wrap-up

  • 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

Pishop Issues

  • assassin process to kill and restart chrome when load begins to climb (if not already addressed as part of CEC migration)

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

Server

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

Documentation

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

Retire IFFF Wiki Updates

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

Calendars

Incorporate additional calculated and externally sourced calendar events.

Calculation

  • move HM anniversary dates to special .cal that takes precedence on HM calendar (and also appears on NYC)
  • 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 forward)

Integration

  • almanac alt for almanac events
  • 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) to Community Calendar
  • also add grow with google (if still in NYC), blick, michaels, local library branches, makerish meetup events

Advanced

  • 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 ^

Cleanup

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

Upgrades

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

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.

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.

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.

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

Housekeeping

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

Utility

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

Development

  • 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

Aspirational

  • 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