Dev Diary
A running log of what I build day to day across my projects. Each day gets a sentence or two and a Small / Medium / Large impact rating.
2026
May
Built a Dev Diary for the site — a daily one-liner with an S/M/L impact rating, rendered as a single-row GitHub-style contribution grid over a grouped long-form journal — backfilled it from seven years of git history, and added a bin/devdiary collector to keep it current. Also added XY pad mapping and axis color backgrounds to knobbler-native, fixed the Level Meters toggle and mapping-source pulse, and reworked slot-swap behavior and frozen v62 devices in m4l-Knobbler4. (in progress as of 11:29)
Released build 217 and Knobbler4 v62 with knobbler↔knobbler slot swap/move, two-phase mapping UI with color cues, StoreKit simulator support, and OSC API documentation corrections.
Enormous refactor day (38 commits): completed the single-[v8] architecture, migrated settings and shortcuts carry-forward, added a new m4l-js-vs-v8 benchmark repo, released v61, and patched 8 dependabot alerts.
Major architectural consolidation in M4L Knobbler4: folded all separate [js] modules into a single [v8 knobbler] entry object, released v60, and added a Mapping Mode docs page.
Phone layout overhaul with page peek, tighter clips/strips, and polish across 26 commits; updated the Knobbler blog post with community corrections; streamed plugin category zips to fix OOM.
Large feature day across three repos: added mixer-to-knobbler mapping flow, page tabs top/bottom option, Bluhand map-source overlay, and published a blog post about the Max symbol table and v8 migration.
Added Full Screen setting to hide the status bar, fixed page nav baseline alignment, and released build 208/209.
Major M4L Knobbler4 performance refactor: migrated all 11 [js] modules to [v8] and routed all OSC emissions through utils.osc() to avoid Max symbol-table bloat.
Released M4L Knobbler4 v59, improved animated sidebar slide-in on tablet, switched tablet to conditional page rendering, and added extensive Device Port documentation for multi-instance use.
Released builds 202–204 with Android sends modal fix, trailing-edge render coalesce, fixed sidebar width animations, and scene overview polish; also modernized the plugins site tile design.
Added a /knobbler microsite to the plugins site and updated Android Play Store URL.
Released build 201 with re-introduced trial extension (cutoff-date model), instant page-nav on press-down, all pages kept mounted for fast switching, and a renderTick external store optimization.
Added 2026.5.5 release notes and fixed Tappable onPress to fire on tap end to avoid swallowing parent drags.
Released build 200, tweaked Nobody Home text, and switched spring OSC sends to requestAnimationFrame.
Added Push 3 Standalone documentation page with inline imagery and fixed single-item send batching.
Updated P3SA connection instructions and fixed single-item OSC batch handling in device and app.
Added Push 3 Standalone connection helper with default port, Copy URL button, and improved connection status reset flow.
Apr
Extracted shared hooks/components, fixed fader rendering on scroll, and deferred /mixerView send until scroll settles.
Released M4L Knobbler4 v57 (unified OSC coalescing and chunking) and v58, launched a new M4L PlayBreak plugin with initial commit, and added it to the plugins site.
Released knobbler-native build 199 and added substantial photodirs features: per-photo location with geocoding, EXIF write, admin rotate buttons, and location copy from siblings.
Batched animation OSC sends per tick, improved ghost hit-testing and overlay controls in knobbler-native, and added EXIF date tools and date filter persistence to photodirs.
Added draggable ghost for mid-flight spring retargeting, store-owned release animations with manual spring physics, and photodirs drag-to- desktop save.
Reverted react-native-screens, restored conditional page rendering for performance, memoized page contents individually, and extracted shared SliderLabels component.
Added theme-aware PRIMARY color, light mode polish, OSC throttle improvements, and animation indicator to knobbler-native.
Released M4L Knobbler4 v56 with a new zip-based release script, and shipped build 198 with spring physics gating, ghost indicator polish, and light mode fixes.
Added three release modes (time/easing, rubber band, gravity), improved spring overlay UX, fixed connection test hang, refined compact mixer for the session page, and released v56 device notes.
Overhauled the animation system: migrated all sliders to Reanimated worklets with rAF sampling, added user-adjustable spring duration, coalesced OSC sends, and shipped build 196/197.
Migrated Knobbler4 device param banks to YAML with build-time codegen, added many missing device bank definitions, and added Spring mode docs.
Added Spring momentary mode (sliders return to touch-start value on release), released build 193/195, and fixed stale toolbar dependency tracking.
Fixed a crash caused by an invalid color string "#000NaN" in colorToString.
Removed automatic trial extension for expired trials.
Released build 192 with an ios-archive Makefile target, minor text style fix, and v55 device release notes.
Major typography and layout cleanup: unified named text styles app-wide, extracted ModalCard and TransportButtons components, and added Makefile install targets.
Added sidebar fade animations, improved setup page navigation, fixed light mode button theming, and added Bonjour-based auto port assignment in the M4L device.
Upgraded to Expo SDK 55, fixed Android multitouch and network permission issues, added rubber band overscroll, replaced hardcoded theme colors throughout, and shipped build 190.
Enabled TypeScript strict mode and fixed all 138 errors across 38 files, added What's New modal, refined the feedback section, and added prop- type interfaces to slider components.
Replaced all TouchableOpacity/TouchableHighlight with a Gesture.Tap- based Tappable component, added a Feedback/Review page, and bumped to build 189.
Added a Leave a Review button for long-time users and a troubleshooting note for the Audio Engine setting.
Large refactor and polish day: added auto/light/dark appearance mode, replaced Switch with a custom Toggle, migrated the M4L device from [js] to [v8], fixed TypeScript errors, and added a CI wait fix to plugins.
Added a Testimonials page and photo gallery to the Knobbler4 docs, replaced the hero image, and fixed a group clip launch bug.
Added a light mode theme with runtime toggle, fixed modal dismiss behavior, and cleaned up scene column styling.
Mar
Systemized color constants app-wide, added page persistence across restarts, built a Tips page in both app and device docs, and released build 186.
Fixed a stale-ref nav width bug on iPad resize and added a unit test suite to the M4L Knobbler4 device using vitest.
Huge day: built a new combined Session page (clips + mixer with shared horizontal scroll), fixed cross-device purchase flow with RevenueCat, extracted shared debug/setup components, and shipped builds 183–185.
Added debouncing to track/device change handlers to handle rapid arrow- key navigation in the M4L device.
Released build 182, fixed a falsy-zero bug in bOnOff, added stop buttons for empty clip slots, and updated Knobbler4 OSC and setup documentation.
Migrated the photodirs app from JavaScript to TypeScript (front and back), fixed the production build, and polished thumbnail display; also worked on platform-specific clips grid in knobbler-native.
Released build 180 with GPU-accelerated clip grid, pan-driven 2D clips grid, auto-discovery sort, and a build error fix for newer Xcode.
Released build 179 after a large day: added pinch-to-zoom on clips grid, unified touch target heights, standardized setup connection cards, and built a UI scale system.
Switched to device unique ID for RevenueCat, fixed nav track tap behavior, and added long-press-pan to display modal.
Unified phone and tablet pages under CommonScreen, fixed scroll-to- selected-track, added SSL and a CI pipeline to the plugins site.
Major refactor day: extracted nav builder with tests, filterable OSC data table, ClearButton component, fixed LiveAPI .id string comparison bug, DRY'd mixer modules, and added restore purchases to debug.
Deduplication refactor: extracted shared OscLog and trackColumnLayers components, unified toolbar buttons, and fixed phone layout spacing.
The biggest clips/mixer polish day: 28 commits covering correct Ableton color palette, swipeable mixer sidebar, scene/clip edit dialogs with color picker, documentation overhaul, and new OSC endpoints.
Added multiplexed slider refs, beat-pulsing clip borders, chunked scenes protocol, stop-button support, and overview toggle across 11 commits.
Broad phone layout pass and scene overview bar addition, with viewport indicator, tap/pan gestures, safe area fixes, and short tab titles for phone across 17 commits.
Heavy polish day: added a Debug tab with OSC log, sends modal on long press, standardized modal styling, refactored opacity constants, and fixed multiple clip and meter display issues.
Added live track name/color observers and group track clip slot support with diagonal stripes and playing-status indicators for the clips page.
Major clips page expansion: custom edit modal, clip rename/delete, chunked protocol, Ableton-style meter gradient, scene data, and group track support across 17 commits in both app and device.
Built a new Clips page in knobbler-native and the corresponding clip view module in Knobbler4 with grid state, scene info, and clip actions.
Added haptic toggle, sent current param on page change, and updated documentation for current param and multi-mixer features.
Added current-param lock/show/hide, sync'd param state on refresh and foreground, added an App Port input, and synced mixer send scroll positions; also added v12 of M4L Modulation-Math with min/avg/max.
Added a deploy target to the plugins Makefile, removed the Contribute button, and improved page centering.
Minor guard and caption fixes across knobbler-native and steinkamp.us blog content edits.
Several small mixer and RevenueCat debug improvements in knobbler- native, builds 173–176.
Published a trail work blog post, updated the About page bio, and overhauled the resume on steinkamp.us, while also polishing the mixer overview bar in knobbler-native.
Intensive day with 20 commits: redesigned mixer channel strip headers, added crossfader controls, fixed send/main track display issues, and guarded device-side observers, releasing builds 167–171.
Feb
Small polish pass: raised overview bar threshold, added animated scroll indicator for knobbler page nav, and increased two-finger precision factor.
Released knobbler-native build 166 and M4L Knobbler4 v52 after a very large day of OSC batching, compact phone mixer layout, buffering fixes, and strip state consolidation.
Added two-finger precision mode, volume automation state indicators, track overview toggle, and numerous mixer reliability and state-sync fixes across 16 commits.
Added a draggable track overview bar with group indicators, dB gradation haptics, and mixer toolbar meter toggle across 17 commits spanning app and device.
A very heavy day with 23 commits: major performance work (memoization, reduced allocations), OSC throttling, slider resolution increase, Android free trial, and animated page transitions across both the app and device.
Fixed Android OSC address matching in expo-osc and resolved Android/small-screen layout issues in knobbler-native.
Fixed meter index handling and muted track display, released a new build, and improved batched meter sends with page-aware gating in the device.
Major work across four repos: implemented a batched meter protocol, built out expo-osc resilience, hardened SwiftOsc, and added haptic feedback and styling to the mixer page.
Performance improvements and scroll offset fix for the mixer page.
Built out a full multi-track mixer page in knobbler-native and a corresponding multi-mixer module in Knobbler4 with volume meters, track strips, and windowed observation.
Added images and documentation for the X-Y pad feature, and updated Discord links across the plugins site.
Massive feature day: shipped named Knobbler pages, X-Y pad join/split, a capability-based chunked nav protocol for large track/device lists, and dynamic page management across both knobbler-native (build 163) and M4L Knobbler4 v51.
Started work on an X-Y pad feature in knobbler-native, and launched an audio version of the M4L MIDI CC Bridge plugin.
Added ingredients and portion content to the steinkamp.us site.
Added null/undefined reference guards to knobbler-native to prevent crashes.
Added a comprehensive test suite for knobbler-native library code with large net-new coverage.
Big day across four repos: added undo/redo to Knobbler (v50 device + build 162 app), launched the new M4L NoteLimiter plugin, and updated the plugins site with multiple polish passes.
Fixed Android key issues, integrated Sentry error tracking, and cleaned up icons and emojis in knobbler-native build.
Jan
Released M4L Knobbler4 v49 with Bonjour discovery and /playCuePoint OSC support, and made significant plugin site improvements.
Released knobbler-native build 159 with support for playing cue point buttons via a hardware device.
Minor copy and touchup updates across Knobbler4 and the plugins site.
Launched a new M4L Chord Filter plugin with initial commit, added promotional content, and fixed a CPU hog in Knobbler4.
Restored the Chiastic Solo plugin to the Utilities category on the plugins site.
Launched a new M4L plugin, USB Scrubber, with initial commit, promotional image, and video link, and added it to the plugins site.
Worked on iOS improvements and landed a significant 16kb page success milestone, releasing build 158 of knobbler-native.
Removed two plugins (Chiastic Solo and Quantize MIDI) from the plugins listing.
Released knobbler-native version 156 with a zeroconf update, and updated Discord links across the plugins site.
Major churn day on knobbler-native with large file additions and removals, bumping to build 155 and reworking the package configuration.
Added a Knobbler video reference to the M4L device.
Small ordering tweak in the M4L Knobbler4 device.
Added a Knobbler-Mini TouchOSC template for read-only use in vocal booths and updated plugin images.
Minor housekeeping commit to the M4L Knobbler4 device.
2025
Dec
Fixed the debug panel and released knobbler-native v2025.12.27 / build 152-153. Made Bluhand title hit targets bigger per community request.
Fixed a tempo edit bug in knobbler-native and updated the Hermes engine. Added Discord community buttons and blurb to the plugins site.
Released m4l-TapPanZeit v13 fixing the pan display in Live 12.3, based on a community bug report.
Released knobbler-native v2025.12.12 / build 151 with cue point display time, default shortcuts visibility fix, and an audit fix. Released m4l-Knobbler4 v48 sending locator display time and cue point display strings.
Updated Knobbler image on the plugins site.
Modernized and fixed the plugins site codebase with significant refactoring.
Documentation word updates to m4l-ChiasticSlide and m4l-Knobbler4.
Added Windows Bonjour/ad-hoc documentation to m4l-Knobbler4 based on a community contribution.
Fixed several photodirs UI issues: admin video icon, album sorting, mobile bottom switcher, and font size.
Updated m4l-ChiasticSlide readme and plugins site text.
Added a Knobbler promotional section to the plugins site.
Nov
Added a promotional update to m4l-Knobbler4.
Minor switch-case refactor in knobbler-native.
Oct
Added v12 images to m4l-ChiasticSlide.
Released m4l-ChiasticSlide v12 with post-audio-render bug fix, animated ball size, and periodic path-change detection to handle being moved in a rack.
Fixed a spelling error on steinkamp.us.
Published a chai tiffin recipe post on steinkamp.us.
Removed a session notification from the plugins site.
Improved a connection message in knobbler-native. Added a workshop promo to the plugins site.
Released m4l-Knobbler4 v47 with cue point sending. Updated knobbler- native with phone layout improvements (v2025.10.22 / build 150).
Fixed backward-compatibility in multi-button quant check in knobbler- native (build 149).
Released m4l-Knobbler4 v46 with quantItems for multiple-button parameter display. Added working multi-button UI to knobbler-native (v2025.10.7 / build 148). Published a blog post on steinkamp.us.
Released knobbler-native build 147 with version bump.
Released m4l-Knobbler4 v45 sending quantization state info to the app so parameters with only 2 states render as toggle buttons in knobbler- native.
Massive update day: shipped version bumps and update-checker improvements across 20 separate Max for Live devices, and fixed a bipolar modulation bug across the entire modulation device family.
Sep
Added a debug modal and RC paywall display to knobbler-native (v2025.9.29 / build 144-146).
Released m4l-CrossfaderNote v1 with docs and images. Added it to the plugins site. Updated knobbler-native for RevenueCat customer info updates (v2025.9.25 / build 143).
Released m4l-ChiasticSlide v11. Created and published a brand-new device, m4l-CrossfaderNote, with initial commit and documentation.
Released m4l-WavScope v4 with sidechain support and credits. Added a contribute redirect to the plugins site.
Released m4l-ChiasticSolo v3 fixing a bug that prevented racking or automating the Selector dial (community bug report).
Released m4l-Knobbler4 v44 reverting a v42 change that was dropping the last VST parameter (community bug report). Released knobbler-native v2025.9.10 / build 142.
Created a new rack preset, zs-Delay-Filter-Roar-Rack, with initial commit. Updated m4l-Knobbler4 port docs and added it to the plugins site.
Minor always-show fix on the plugins site.
Simplified purchase logic in knobbler-native and updated m4l-Knobbler4 creator credits. Switched plugins site payment to Stripe link and added Google Analytics.
Version bump and Android exception fix in knobbler-native.
Updated data deletion details in m4l-Knobbler4.
Added data deletion information to m4l-Knobbler4.
Released m4l-Knobbler4 v43 adding a record observer. Fixed parent ID protection in knobbler-native.
Released m4l-Knobbler4 v42 with VST debouncing and parent object ID in device payloads. Added a collapsible nav panel to knobbler-native with Android always-paid in production (v2025.9.3).
Released m4l-ClearSends v2 with a mappable button. Added tablet stand documentation to m4l-Knobbler4. Started work on the photodirs project with content hashing and proper image regeneration. Added ClearSends to the plugins site.
Created and released a brand-new Max for Live device, m4l-ClearSends, with the initial check-in of over 8000 lines.
Aug
Implemented Android IAP and refreshed the setup page in knobbler-native.
Fixed a hostname trailing-period bug in m4l-Knobbler4 (community- diagnosed). Improved plugins site with Tailwind styling.
Released m4l-Modulation-Math v9 with clip modes (thanks to community report) and v10 reimplementing fold/wrap in native Max for better performance. Overhauled the plugins site with candy-like buttons, improved rack info and color styling.
Fixed dumb bugs and bumped version in knobbler-native.
Version code and build number cleanup in knobbler-native (v2025.8.24).
Added an apology/note to m4l-Knobbler4.
Added phone debug info and synced purchases on app start in knobbler- native (v2025.8.21).
Submitted knobbler-native for review with minor IAP sandbox and purchase flow tweaks.
Added StoreKit support, a PurchaseModule component, and set Android as a paid app in knobbler-native (v2025.8.15).
Reached a solid IAP integration checkpoint in knobbler-native with RevenueCat.
Continued IAP integration in knobbler-native, removing hand-rolled implementation and iterating through RevenueCat setup checkpoints.
Started integrating in-app purchases into knobbler-native, exploring both expo-iap and RevenueCat libraries.
Minor license update in m4l-Quantize-MIDI.
Started an audio version of m4l-VariationOctave as a work-in-progress.
Fixed nav width resize bug in knobbler-native.
Released m4l-Knobbler4 v41 adding optional automated page change, per a feature request from Jamie Lidell.
Jul
Added good resizing support to knobbler-native. Refined PitchPath and multi-device documentation on the plugins site.
Minor fix on steinkamp.us.
Created and published a brand-new Max for Live device, m4l-Modulation- Deviation, with assets, GIF, and initial release. Added it to the plugins site.
Fine-tuned padding in knobbler-native.
Released m4l-Knobbler4 v39 and v40 adding /toggleGroup support for expanding/collapsing group tracks via long press, and chain color support on Bluhand and current param slider. Updated knobbler-native with larger toolbar buttons on tablets and long-press group toggle.
Updated Node.js version on dick.steinkamp.us.
Released m4l-Knobbler4 v38 with a reworked device discovery mechanism and updated documentation.
Released m4l-Knobbler4 v37 with ping/pong keepalive protocol to maintain reliable connections. Updated knobbler-native with margin tuning and deviceVersion fingerprinting. Added a volunteer post to steinkamp.us.
Minor plugins site update (restart).
Updated multiple tablets documentation in m4l-Knobbler4.
Added ping/heartbeat support and removed immediate transport send in knobbler-native.
Added cost information to m4l-Knobbler4 docs.
Bumped Android version codes and target SDK for knobbler-native.
Jun
Completed and released knobbler-native with Current Param support (v36 companion), achieving consistent styling for phone and tablet. Released m4l-Knobbler4 v36 with the new current param feature.
Fixed a mixer tablet layout bug in knobbler-native and continued refining the Current Param feature.
Continued building out the Current Param feature across knobbler-native (phone layout, param display, nav integration) and m4l-Knobbler4 (nav page, default fixes).
Started adding a Current Param display feature to knobbler-native with initial cuts for tablet and phone layouts. Added current param support to m4l-Knobbler4.
Updated m4l-Knobbler4 with instructions for audio device setup and Max 9 transition notes.
Added MIDI CC Bridge reference to m4l-Knobbler4 docs.
Created and released a brand-new Max for Live device, m4l-MIDI-CC- Bridge, with initial frozen files, and added it to the plugins site.
Added a money/donation page to steinkamp.us.
May
Released m4l-Knobbler4 v35 adding support for multiple tablets connecting simultaneously, with configurable listen port and various bug fixes for Android compatibility and init reliability.
Fixed RSS feed and a 404 on steinkamp.us (thanks to community report).
Made small word and formatting updates to dick.steinkamp.us.
Added single-instance enforcement to m4l-Knobbler4.
Released m4l-KeyStepper v8 as a polished working state with updated docs, and continued toward scale awareness.
Started building a new m4l-KeyStepper device with initial checkpoint commits exploring scale-aware step sequencing.
Updated an image in m4l-Knobbler4 docs.
Prepared m4l-Knobbler4 v35 pre-release and fixed variation selection after saving.
Removed patronizing language from a steinkamp.us post.
Tweaked Variations display in m4l-Knobbler4.
Apr
Published a new versions blog post and other articles on steinkamp.us. Minor Android and spacing fixes for m4l-Knobbler4.
Released m4l-Knobbler4 v34 removing Clips feature and simplifying the approach. Updated knobbler-native accordingly with fixed scene column width. Updated m4l-TapPanZeit headers and the plugins site.
Made recording clips show in red in knobbler-native. Limited m4l-Knobbler4 to 25 tracks and 25 scenes for performance.
Minor rework and pre-FlatList refactoring checkpoint in knobbler-native.
Minor documentation touchups for m4l-Knobbler4.
Refactored knobbler-native to use animated style only for strobe and broke out each track slot to its own component for cleaner rendering.
Released knobbler-native with Clips feature (v2025.4.20) and m4l-Knobbler4 v33 with Clips support. Fixed clip rename cache issue, tempo on Android, and improved animation and velocity adjustment.
Continued performance and styling work in knobbler-native: scene selection, consistent button styles, and moved strobe to animated style. Minor m4l-Knobbler4 clips comment.
Prevented unnecessary re-renders in knobbler-native when only a slider value updates.
Added clip/scene renaming, capture scene button, and pulsing playing button to knobbler-native. Implemented rename clip/scene and capture- insert in m4l-Knobbler4, and fixed a variations bug.
Major performance improvements to knobbler-native: added JSON parse caching, key fingerprint caching, and identified border animation as a performance bottleneck. Added strobe support to m4l-Knobbler4.
Released m4l-Knobbler4 v33 with minor adjustments.
Intensive performance optimization day for knobbler-native: memoized track slot clips, broke clips into components, fixed CPU-hogging animation, refined gesture handling, and improved overall touch responsiveness.
Improved render performance in knobbler-native with pan gesture replacing double ScrollView and various scroll and shadow refinements.
Polished clip/scene UI in knobbler-native with cool page nav, group lines, and clip goto. Fixed double-tap in volume slider. m4l-Knobbler4 reached a group lines checkpoint too.
Added refresh button, recording flag awareness, and clip slots integration to knobbler-native. Implemented scenes, clip slot refresh on arm, and play icons for group slots in m4l-Knobbler4.
Worked on layout and animation in knobbler-native with pinch-only gesture for width control, scroll checkpoints, pulsating elements, and FPS optimization.
Explored bottom bar positioning and pinch gesture for knobbler-native width control. Started a clips checkpoint in m4l-Knobbler4.
Fixed a note bug in m4l-VariationOctave. Improved the plugins site with friendlier nav, centered layout, and unified layout code with mono integration.
Created and released a brand-new Max for Live device, m4l-VariationOctave, with initial commit and v1 frozen files, and added it to the plugins site.
Added Ableton Live Variations support to both knobbler-native and m4l-Knobbler4 (v32), allowing the current variation to be displayed and selected from the app. Also linked m4l-CurrentParamKnob USB knob support.
Mar
Released m4l-CurrentParamKnob v2 with USB control support and debug tooling. Added it to the plugins site.
Added version display to the plugins site.
Released m4l-TriggerSeq v4 with bug fixes, polish, and updated readme and frozen files.
Switched m4l-TriggerSeq to static live.banks to avoid crashes and reached a stable checkpoint.
Fixed About page and Patreon link issues on the plugins site.
Added a Patreon button to the plugins site and fixed some page/description issues. Added a first commit to m4l-zs-Faderboard3.
Released m4l-TriggerSeq v3 with hold mode and wider swing range, plus poly/choke fixes. Added double-tap restore and Android build targets to knobbler-native.
Major m4l-TriggerSeq update: released v2 with chord support (8 voices), tie mode, color improvements, presets, and crash fixes.
Fixed SVG files in m4l-TriggerSeq and added random step generation. Added a video thumbnail to m4l-ScratchBacker.
Polished and completed m4l-TriggerSeq with readme, images, code cleanup, and better step placement — added it to the plugins site.
Released m4l-PitchPath v5 with transport lock and a timing bug fix. Released m4l-Knobbler4 v31 simplifying device names on Bluhand. Multiple knobbler-native improvements including single-tap value sending for consistent mapping and track tap fixes.
Added a video and fixed an SVG to m4l-PitchPath. Minor border tweak in m4l-Knobbler4 and a backtick rendering fix in the plugins site.
Released m4l-PitchPath v3 and v4 adding Phase controls, transport sync, presets, instructions, and fixing a timing bug. Updated plugins site with a MIDI Effects category and better formatting.
Released m4l-Knobbler4 v31 making it resilient to non-compliant MIDI devices. Removed zs-kick-2 from the plugins site listing.
Updated an ingredients list on steinkamp.us.
Refined m4l-TriggerSeq with a scale quantization bug fix, layout moves, and parameter name cleanup.
Continued building m4l-TriggerSeq with banks, swing, and dial controls across six checkpoint commits.
Renamed parameters in m4l-TriggerSeq and added a resource post to steinkamp.us.
Started working on a new m4l-TriggerSeq device with an initial checkpoint commit covering significant new code.
Fixed a crash in expo-osc when client/server were nil, bumped knobbler- native for the fix, and polished steinkamp.us.
Minor version bumps and iOS push notification warning fix in knobbler- native. Small updates to m4l-Knobbler4 docs and steinkamp.us.
Updated m4l-Knobbler4 docs with port info. Improved the plugins site with responsive layout, better nav, and yellow hover links. Released Android version of knobbler-native.
Released m4l-Knobbler4 v30 with auto-collapse of racks, bidirectional OSC page automation, and track children toggling. Also launched a new device, zs-kick-2, and added it to the plugins site. Fixed several knobbler-native bugs and improved its OSC reliability.
Fixed a stale value bug in knobbler-native (v6), enforced tablet-only mode, optimized Android rendering with useMemo cutting render time from 30ms to 8-10ms, and improved Android gestures.
Cosmetic code cleanup in knobbler-native and minor plugins site link color and ChiasticSlide fixes.
Released m4l-Knobbler4 v29 removing the control surface requirement (major usability improvement) with more reliable nav display. Published a Knobbler article on steinkamp.us and added plugins site updates.
Feb
Bumped the Android version in knobbler-native.
Improved gesture handling in vertical sliders for Android in knobbler- native and attempted to hide the Android navigation bar. Minor updates to m4l-ChiasticSlide and m4l-Knobbler4 app store images.
Added Android support fixes to expo-osc and corresponding Android build/gesture changes to knobbler-native.
Released m4l-Knobbler4 v28 fixing a bug where grouped tracks appeared at the end of the track list rather than within their group.
Added video links to m4l-Knobbler4 documentation.
Released m4l-Knobbler4 v27 fixing a crash bug for tracks with no devices. Added credits and attempted video embedding. Also added an embedded video to the plugins site.
Expanded the m4l-Knobbler4 OSC API documentation, added slider/knob state descriptions, TOC, and download section. Improved plugins site navigation with TOC and separator support.
Improved the m4l-Knobbler4 setup docs with Windows firewall images and better control surface wording. Added TypeScript fixes, docs sidebar, and a privacy policy to the plugins site.
Shipped m4l-Knobbler4 v25 and v26 fixing VST param bugs, and completed comprehensive documentation with USB images and full content. Built out the plugins site with docs support, download buttons, styling, and nginx image serving.
Completed substantial documentation for m4l-Knobbler4 with overview images, reordered content, and released v24 fixing mixer control enablement based on has_output. Added docs to the plugins site.
Started writing documentation for m4l-Knobbler4 with overview images and initial doc structure.
Released m4l-Knobbler4 v23 with control surface detection warnings, a revamped snappier refresh system, and exclusive arm bug fixes. Added device version warning UI to knobbler-native.
Improved knobbler-native navigation with a custom nav component shared across screens, and added app version enforcement. Updated m4l-Knobbler4 to send version on refresh and refine control surface messaging.
Added control surface detection with warnings to both knobbler-native and m4l-Knobbler4. Released m4l-Knobbler4 v22 with proper exclusive arm/solo handling and decoupled input enable from record arm.
Released m4l-Knobbler4 v21 with a full channel mixer, direct Bluhand-to- Knobbler mapping, and stock device bank imports. Fixed a horizontal slider width calculation bug in knobbler-native.
Reached a working checkpoint for track output (actual params) in m4l-Knobbler4 with deduped output and freepeer task cancellation. Fixed device highlighting bugs in knobbler-native. Also continued ChiasticSlide ring work.
Made significant progress on track output support in m4l-Knobbler4 in an in-progress working checkpoint.
Added toggleable device children display, switched Bluhand mapping from long-press to tap, and removed redundant color constants in knobbler- native. Applied polish to m4l-Knobbler4 as well.
Improved device on/off handling and simplified the record toggle in knobbler-native. Fixed record arm switches behavior in m4l-Knobbler4.
Polished knobbler-native animations, mapping UI, and sent Ableton track colors to the app. Added seamless Bluhand-to-Knobbler direct mapping in m4l-Knobbler4.
Fine-tuned spacing, color, and UX in knobbler-native including a crossfader control. Added crossfader and sends initialization to m4l-Knobbler4, and group track pass-through.
Introduced swipe-based navigation in knobbler-native and added a toggle- able always-present nav bar. Improved m4l-Knobbler4 utility parameter handling for mid/side mode and cleaned up param name bugs.
Released m4l-Knobbler4 v20 with collapsed track handling, stability improvements, and /initMenu support. Released m4l-PitchPath v2 fixing relative mode note lag. Touched m4l-TapPanZeit and m4l-ChiasticSlide too.
Improved dropdown scroll interaction and button styling in knobbler- native. Enhanced m4l-Knobbler4 stability by removing the periodic task suspected of causing crashes and using visible_tracks vs tracks for collapsed group navigation.
Released m4l-Knobbler4 v19 with device on/off support and performance improvements. Refined knobbler-native button styles and fixed several small bugs including key errors and menu flash behavior.
Polished knobbler-native with a unified dropdown, device on/off support, and color/spacing fixes. Updated m4l-Knobbler4 with name lookup caching, track on/off support, and color caching.
Released m4l-Knobbler4 v18 with automation/enabled state, macro knob layout improvements, and consistent device/track payloads for the hierarchical browser. Refactored knobbler-native with better state management, device shortcuts on knobbler pages, and disabled parameter handling.
Jan
Major quality day: improved knobbler-native dropdown scroll behavior, automation state display, and UI styling. Updated m4l-Knobbler4 with automation state, track/device types, and performance improvements. Also added expo-osc restartServer support and published a new music article on steinkamp.us.
Cleaned up hierarchical track/device structure handling in both knobbler-native and m4l-Knobbler4, and added more documentation to m4l-PitchPath.
Added session record button to knobbler-native along with improved flex layout for sliders. Released m4l-Knobbler4 v17 with session record and main channel support.
Swapped a static image for an animated GIF in the plugins site.
Completed and released m4l-PitchPath v1 with relative mode, renaming from LineSeq, frozen files, readme, images, and observer improvements. Added main track support to both knobbler-native and m4l-Knobbler4, and added PitchPath to the plugins site.
Released m4l-Knobbler4 v16 (track/device browsing, tempo controls, macro knob limits). Continued developing m4l-PitchPath with preset support and visual polish. Also cleaned up knobbler-native UI.
Heavy UI work on knobbler-native: added dropdowns for track and device selection, icon improvements, tempo display, and layout refinements. Fixed two community-reported bugs in m4l-Knobbler4 (page layout and off- by-one in slot display).
Started a brand-new Max for Live device, m4l-PitchPath, with nearly 2000 lines in the initial commit — a strong first working checkpoint.
Added more action buttons to knobbler-native. Released m4l-Knobbler4 v15 with extensive iPad app support: transport controls, Capture MIDI, loop, status indicators for play/record/automation states, and marker navigation.
Added transport controls with icons to knobbler-native and improved font handling. Released m4l-Knobbler4 v14 with transport support, better navigation, and a mapping bug fix.
Added track and device navigation buttons with Ableton-style colors to knobbler-native. Released m4l-Knobbler4 v13 with bank buttons, track/device navigation, bank name payloads, and random bank access.
Improved font state handling in knobbler-native and laid groundwork for bank navigation buttons.
Minor layout improvement to knobbler-native.
Added a small TODO note to m4l-MoireArp about initial note state.
Launched a new Max for Live device, m4l-Crisco (a lookahead limiter), with its initial v1 release. Also shipped m4l-Knobbler4 v12 featuring a tabbed UI, Bluhand preset controls, live.banks support, and added Crisco to the plugins site.
Restored reliable Zeroconf re-advertising in knobbler-native by moving it back into its own component so the app re-advertises on wake. Fixed a shortcut button recall bug in m4l-Knobbler4 by validating the path on a 1-second interval after mapping.
Automated App Store compliance steps for knobbler-native and made minor UI refinements including active tab color and test button.
Intensive debugging session on expo-osc (32 commits) to fix mDNS/Bonjour server integration, trying many approaches to get OSC advertising working reliably. Consolidated knobbler-native Zeroconf into an autodiscovery component and set up build tooling.
Iterative debugging work on the expo-osc library (accessor experiments, null/nil handling) and minor knobbler-native OSC client improvements. Added better Wavetable params to m4l-Knobbler4.
Reorganized knobbler-native components and consolidated OSC listeners. Expanded m4l-Knobbler4 instrument support with Analog, Operator, Meld, Simpler, and Roar parameter banks, and fixed an accumulation/collision bug.
Major cleanup and reliability work on knobbler-native: fixed a CPU leak by creating the OSC server only once, removed a flawed OSC implementation, refined modals and splash screen. Updated m4l-Knobbler4 with new instrument banks (compressor, electric) and groundwork for custom Bluhand banks.
Fixed a critical bug in knobbler-native where only one Knobbler device showed up at a time, improved device-name-based discovery, and added a splash screen. Updated m4l-Knobbler4 OSC handling and documentation, and touched the plugins repo.
Big day across both projects: added Zeroconf/mDNS auto-discovery and positive connection feedback to knobbler-native, and shipped m4l-Knobbler4 v11 with a SYN/ACK handshake for reliable connection, bug fixes for Bluhand track names and frozen-device value sending, and updated frozen files.
Applied visual polish to knobbler-native including a black background, correct initial slider values on construction, and app name and icons.
Made small quality-of-life improvements to knobbler-native: formatted float values more nicely and optimized rendering with useMemo.
Spent the day polishing the knobbler-native app with modal UI, consolidated title options, cute icons, and connection management (host/port fetch, text input, and connection clearing). Also tweaked the m4l-Knobbler4 Bluhand slider colors.
2024
Dec
Added auto-discovery, a settings/setup screen, OSC switching, icon polish, and header styling to knobbler-native to close out the year.
Refactored knobbler-native into component files, added jump-to-track, centralized text colors, and visual polish.
Continued knobbler-native development, getting banks, shortcuts, Bluhand view, double-tap, and a second page working across 18 commits.
Made 18 commits to the new knobbler-native React Native app, building out the Slider component, color system, flow layout, and basic GUI infrastructure, adding 15,000+ lines.
Updated expo-osc README with string presence documentation.
Added device names to Knobbler4 documentation.
Added a Troubleshooting section to Knobbler4 README and fixed a relative link bug in the plugins site.
Released FractalNoteEcho v7 fixing an out-of-scale note bug, and added an about page with email to the plugins site.
Released Faderboard3 v7 with scale awareness across four commits, adding 10,000+ lines.
Released Knobbler4 v10 fixing Current Param Knob string value display, and started scale-awareness work on Faderboard3, adding 24,000+ lines.
Simplified scale display wording in FibonacciNoteEcho and FractalNoteEcho.
Released FibonacciNoteEcho v6 and FractalNoteEcho v6 with scale awareness, fixed an in-between note bug in MoireArp, and added category navigation and a better header to the plugins site, totaling 9,800+ lines.
Released MoireArp v2 with scale awareness and added recent-plugins display and dynamic layout to the plugins site.
Released ChiasticSlide v10 with automation buttons, updated README images in multiple M4L repos, and simplified the plugins site layout.
Heavily polished the plugins site with grid layout, favicon, better footer, category tiles, and MoireArp listing, across 20 commits, and migrated plugin content from steinkamp.us to the new plugins subdomain.
Made significant progress on the plugins site with a development checkpoint.
Made the initial commit of the new plugins site project and fixed telemetry version strings in ChiasticSlide and Faderboard3, adding 6,900 lines.
Released ChiasticSlide v9 with the endless toggle and accurate min/max viz, and published a "20 years" blog post on steinkamp.us.
Released Faderboard3 v6 with a default cleanup, and added an endless/fixed toggle and accurate min/max volume visualization to ChiasticSlide.
Reorganized layout and moved things around in Faderboard3.
Released ChiasticSlide v8 that detects and respects direction automation, and reverted a constant-power panning change in TapPanZeit due to volume issues.
Released Knobbler4 v9 with bugfixes, a JS router simplification, and a fix for button value display on sliders, with 32,000+ lines changed.
Checkpointed a significant file breakout refactor for Knobbler4.
Released Knobbler4 v8 fixing a bug with parameter path storage when devices or tracks are moved, adding 23,000+ lines.
Nov
Experimented with constant-power panning in ChiasticSlide, added a separate width arc ring, and released Knobbler4 v7 with chain color support.
Released m4l-ChiasticSlide v7 with an endless knob implementation using a sampling approach and updated images across 10 commits.
Released Knobbler4 v6 using rack chain names/colors instead of track names, and fixed a bug where duplicate fader mappings only updated one fader, adding 24,000+ lines.
Released m4l-MoireArp v1 and published it on steinkamp.us with 5,000+ lines added.
Made solid progress on m4l-MoireArp with floating-point correctness fixes across four development checkpoints.
Applied a Moire baseline styling update across CurrentParamStrip, TriggerSeq, TypeScript base, and MoireArp, with 27,000 lines of churn.
Minor README heading and terminology fixes in m4l-zs.mapper.
Explored and reverted zs.mapper integration into six modulation devices, then improved zs.mapper installation instructions and consistency across 26 commits.
Released TapPanZeit v11 with full stereo meters and a buffer-based architecture, added a Live 12 workaround to ChiasticSolo docs, totaling 9,000+ lines.
Added level meters to TapPanZeit, updated ChiasticSolo with a warning, and added indentation and warning content to steinkamp.us.
Released TapPanZeit v10 with small refinements from video prep obsession, adding 8,100 lines.
Fixed a bug and polished TapPanZeit in preparation for a "how it's made" video.
Released TapPanZeit v9 with 7,900+ new lines.
Refactored TapPanZeit to rename voice to tap, improved multi-instance safety, and polished the UI across 5 commits.
Released ScratchBacker v2 and added a video link, adding 7,800+ new lines.
Iterated on ScratchBacker with slot support, stats display, and a v2 candidate.
Completed and released m4l-ScratchBacker with README, images, instructions, and published it on steinkamp.us, adding 9,000+ lines.
Started building m4l-ScratchBacker, a new M4L device, reaching four iterative checkpoints with 7,000+ lines added.
Added an OSC reference to steinkamp.us.
Updated terms/wording on steinkamp.us.
Released WavScope v3 with split/join mode and a more compact layout.
Improved the default settings for m4l-WavScope.
Oct
Updated GPL license files across 28 repos in one coordinated sweep, improved osc-telemetry logging to track device base/version instead of IPs, and made content updates to steinkamp.us.
Enhanced the osc-telemetry server with country lookup and JSON output, fixed the Faderboard3 v5 volume fader responsiveness, and updated device images.
Built and launched the osc-telemetry server, then rolled out telemetry pings to 20 M4L devices in a single coordinated release day, adding 163,000+ lines across 29 repositories.
Released TapPanZeit v8 allowing greater-than-100% delay time and adding shape presets, with 9,000+ lines changed.
Refined Faderboard3 slider behavior and curated its parameter set.
Released TapPanZeit v7 (renamed from previous) with simplified and corrected delay math, SVG assets, and documentation, totaling 6,000+ lines changed.
Refactored TapPanZeit to remove feed-forward delay in favor of a feedback approach.
Shipped Knobbler4 v4 with device presets, 16 assignable shortcut buttons, and a frozen candidate, adding 25,000+ lines.
Launched WavScope (waveform oscilloscope) as a new M4L device, added banks and ignore support to ChordRipper, published CurrentParamKnob, and added .gitignore files to 15 repos, touching 24 commits across many projects.
Released bug-fix versions of KeyStepper v6, LenStepper v5, and TapPanZeit v6 (with presets), and shipped Faderboard3 v3 with an octaves mode, totaling 22,000+ lines changed across 13 commits.
Updated Faderboard3 with improved look and feel and fixed preset storage, plus published a comet observation post on steinkamp.us.
Released Knobbler4 v3 with improved current-param-knob responsiveness, bank reset on device change, and consolidated TouchOSC file with Bluhand, adding 21,000+ lines.
Published a shop light post on steinkamp.us.
Sep
Added iPad refresh support, improved title alignment, refined Bluhand color changes, and added a ports diagram to Knobbler4.
Added control surface setup documentation to Knobbler4.
Added SimulScrub video embeds to steinkamp.us.
Updated USB documentation in Knobbler4.
Fixed refresh crash issues in Knobbler4, added USB connection instructions, and updated the Knobbler4 post on steinkamp.us.
Added OSC API docs and playlist link to Knobbler4, and future-proofed download links on steinkamp.us.
Added jump-to-track documentation to Knobbler4 README.
Shipped Knobbler4 v2 with hot-tip images and supporting materials, adding 21,000+ lines.
Made touchup refinements to Knobbler4.
Successfully integrated Bluhand support and double-tap-for-default into Knobbler4, with 18,000+ lines of churn across two commits.
Checkpointed a major Knobbler4 refactor with 271 lines added and 300 removed.
Reached an abandon point on the Bluhand integration experiment in Knobbler4 and published a short blurb on steinkamp.us.
Made significant progress integrating Bluhand controller support into Knobbler4.
Migrated m4l-KeyStepper to TypeScript (v5), added jump-to-track and label overflow handling to Knobbler4, and fixed module import issues across MoireArp, TriggerSeq, and the TypeScript base, touching 14 repos.
Released ChiasticSlide v5 tracking children population/colors, released TempoToMs v5 in a smaller layout that works as an audio device, and fixed Knobbler4 double-tap default.
Added Knobbler images and fixed a category bug on steinkamp.us.
Added selected parameter display to Knobbler4, updated the Knobbler4 post on steinkamp.us, and fixed a few typos.
Shipped m4l-ChiasticSlide v4 with improved orientation, minmax support, and a frozen release, across 9 commits and 3,000+ lines.
Froze Knobbler4 v1 with polished docs, TouchOSC files, renamed prefix, and published the Knobbler4 page on steinkamp.us, totaling 27,000+ lines changed.
Fixed developer experience issues and shipped updates to Knobbler4 with 7,000+ lines changed.
Made the initial commit of the new m4l-Knobbler4 device with full evolution history and toggle-record support, and added zip-generation scripts to steinkamp.us, totaling 11,000+ lines.
Fixed YAML and content in a steinkamp.us post, adding an Amazon link.
Added tags support to the post template on steinkamp.us and removed a border in photodirs.
Published a magnetic monitor mount post on steinkamp.us.
Aug
Made a minor width adjustment in photodirs.
Added cross-references to the zs.mapper device in four modulation device READMEs and made minor steinkamp.us copy tweaks.
Created and published the m4l-Modulation-Inertia device with initial commit and README, adding 13,000+ lines.
Launched the m4l-Quantize-MIDI device with initial commit, README, and fixed download links, and promoted it on steinkamp.us, adding 5,000+ lines.
Added video links to four modulation device READMEs, updated zs.mapper media structure, and added plugin categories to steinkamp.us.
Made initial commits for the m4l-zs.mapper project (a new MIDI mapping utility) with extras support, totaling 22,000+ lines across two repos.
Added Live 12 modulation mode support to five modulation devices (Math v8, Lerp v3, Delay v4, Stepper v3, CorrelationModulation v2) with visual fixes, adding nearly 68,000 lines.
Massive refactor day: integrated prettier-eslint across all M4L TypeScript repos, launched a new CorrelationModulation device, and added three new modulation devices (Delay, Lerp, Stepper), totaling 49,000+ lines of churn across 12 repos.
Checkpointed progress on m4l-FractalNoteEcho.
Reached a great working state on both FibonacciNoteEcho and FractalNoteEcho with significant refinements.
Released m4l-KeyStepper v4 with presets and a phantom step fix, adding 2,200 lines.
Shipped m4l-LenStepper v4 with preset support and fixed bugs related to loading sets and changing presets, totaling nearly 4,000 lines changed.
Added presets support and prettified the codebase for m4l-KeyStepper.
Released m4l-zs-Faderboard3 v2 fixing high CPU usage, multi-instance bugs, and adding loop start/end swap with updated documentation, plus over 10,000 lines changed.
Jul
Shipped FibonacciNoteEcho v4 with per-step flash behavior and TypeScript migration, updated FractalNoteEcho to v4, and updated screenshots on the personal site, with nearly 15,000 lines of churn.
Massive day: made initial commits across six M4L device repos (Knobbler4, MoireArp, TriggerSeq, FractalNoteEcho, CurrentParamStrip, and the TypeScript base template) and launched CurrentParamStrip as a new device, totaling 60 commits and 11,000+ lines added.
Published a "run side of road" blog post on steinkamp.us with touchups and an image.
Jun
Published a JPL post on steinkamp.us and polished caption placement.
Added filename-based sorting, re-enabled the dev/ mount, and cleaned up logging in photodirs.
Fixed a path issue and noted VSCode devcontainer naming improvements on steinkamp.us.
Fixed the shuffle layout and removed shadows on steinkamp.us.
Fixed a bug and updated a resolution reference on steinkamp.us.
May
Published a new photo/content post and made several visual touchups to steinkamp.us.
Settled on Noto as the site font for steinkamp.us.
Added tags and experimented with fonts and spacing on steinkamp.us.
Made the initial commit of m4l-ChiasticSolo with a fixed automation bug, FAQ section, and GIF demo, and added it to the personal site.
Minor content update on steinkamp.us.
Published a retirement post and added a photo to steinkamp.us.
Updated video links in m4l-SimulScrub README.
Released m4l-SimulScrub v4 with decoupled speed and volume ramp controls, fixed bugs, and updated device images, totaling over 5,700 lines changed.
Iterated on de-clicking and audio quality improvements in m4l-SimulScrub across four commits.
Added a YouTube link to m4l-SimulScrub README.
Added mono file support to m4l-SimulScrub and fixed playback-on-load behavior.
Froze m4l-SimulScrub v3 and added an about section; updated steinkamp.us to mention group track support, with 3,000+ new lines.
Apr
Fixed playback direction in m4l-SimulScrub.
Shipped major updates to m4l-ChiasticSlide (new visualization, grouped track support) and fixed looping/stop-start bugs in m4l-SimulScrub v2, with over 9,000 lines changed.
Updated a driver reference on steinkamp.us.
Refined m4l-SimulScrub behavior.
Added a reverse toggle feature to m4l-SimulScrub.
Built and launched the m4l-SimulScrub device from initial commits through a polished release with README, GIF demo, and reverse toggle, across 10 commits and 3,000+ new lines.
Minor toolbox update on steinkamp.us.
Added toolbox links and updated the ToC heading limit defaults on steinkamp.us.
Updated the about/social links section and fixed layout issues on steinkamp.us, including a 2024 refresh with nearly 1,000 lines changed.
Added a Feynman quote or reference to steinkamp.us.
Mar
Added GitHub Publish Actions to musics and steinkamp.us, added a Docker web container to steinkamp.us, cleaned up prefix handling across all three projects, and added a Strava route to a blog post.
Continued wrestling with multi-platform Docker CI in photodirs across 19 commits, experimenting with matrix architecture builds and macOS ARM support, plus minor steinkamp.us tweaks.
Added a no-match message and contained the basic layout on steinkamp.us.
Added a Mission Ridge image and made minor layout fixes on steinkamp.us.
Spent a major day iterating on photodirs CI/CD — building multi- architecture Docker images with GitHub Actions, QEMU, and matrix builds — across 29 commits, while also moving ChiasticSlide releases to GitHub Releases.
Fixed cache volume deletion in photodirs.
Enhanced the Makefile and made small adjustments to the filesystem apps post on steinkamp.us.
Tweaked transition colors on steinkamp.us.
Minor hover color fix, CSS cleanup, and IntersectionObserver tuning on steinkamp.us.
Fixed explicit histogram colors and hid tags on small screens on steinkamp.us.
Overhauled steinkamp.us with tagging support for all posts, a session- storage- backed filter, hydration fixes, and Tailwind dark mode variable cleanup, touching over 6,700 lines; also improved photodirs API cache headers.
Added bins navigation to photodirs and simplified and fixed up a story post on steinkamp.us, with over 1,600 lines changed.
Extended the steinkamp.us blog listing with a timeline view, iframe markdoc tag, and mono code improvements, shipping over 1,500 new lines.
Added a text filter, year histogram with date sliders, and styled form elements on steinkamp.us; also set up proper multi-container devcontainer support for esstraba.
Added RSS/Atom feed support, a top link nav, a wave header element, and image consistency improvements to steinkamp.us.
Small responsive and layout improvements to the musics project.
Fixed multiple routing and rendering bugs in musics, updated the README and screenshots, improved sorting, and polished responsiveness across 23 commits.
Rebuilt the musics project on a Tailwind CSS foundation with responsive layout, dark mode theme switcher, and an about page, totaling nearly 3,000 lines changed.
Toned down copy, moved a screenshot, and fixed the mobile header on steinkamp.us.
Minor resume update and added spacing below posts on steinkamp.us.
Published a "filesystem apps" blog post on steinkamp.us with screenshots, simplified the ToC component, and updated photodirs images.
Refined photodirs animations and README diagrams, and continued tuning steinkamp.us shadow effects, heading numbers, and ToC alignment across 25 commits.
Spent the entire day deep in steinkamp.us ToC polish — adding IntersectionObserver highlighting, liquid animations, slug fixes, and Tailwind color theming across 30 commits.
Continued obsessive refinement of steinkamp.us CSS, color theming, and link rendering across 11 commits, plus a small photodirs cleanup.
Delivered a highly polished table of contents feature to steinkamp.us after 21 commits of intense iteration, and added a dark mode toggle to photodirs.
Feb
Improved steinkamp.us linting setup and header rendering, and updated the Fractal Note Echo README.
Completed a working responsive table of contents for steinkamp.us.
Started work on a table of contents component for steinkamp.us blog posts, landing in a functional but not yet great state.
Minor wording and font tweaks across steinkamp.us and a contrast adjustment in photodirs.
Published a YouTube post on steinkamp.us, made a small photodirs CSS fix, and corrected a typo.
Heavily iterated on both photodirs and steinkamp.us UI, refining title popups, EXIF display, thumbnail chooser, and responsive layout across 25 commits.
Spent the day polishing the photodirs UI with visual improvements, gradient text, and color tweaks, while also updating the personal site's lenticular post and adding a Makefile target for new posts.
Merged a substantial pull request adding admin support and a configurator feature to the photodirs project, with nearly 8,000 lines added.
Added a Giscus comments system to the personal blog and published a new life post on steinkamp.us.
Fixed a multi-instance bug in m4l-KeyStepper and shipped a major v2 update to m4l-Modulation-Lerp that restored hidden modulation destinations, with over 13,000 lines of churn.
Fixed a key bug in the musics project, improved layout consistency, and added album description support.
Jan
Improved the musics project with album support, visual polish, and a key helper, while also updating Prettier configuration on steinkamp.us.
Shipped Chiastic Slide v2 with a critical undo-buffer flood bug fixed, plus additional checkpointed development work totaling over 2,300 lines changed.
Made the initial commit of a brand-new Max for Live device, Chiastic Slide, and published a corresponding blog post on steinkamp.us.
Updated links on the personal website from HTTP to HTTPS, including YouTube embeds.
2023
Dec
Fixed a stray console log and added autoplay-next-song functionality to the musics project.
Updated the dcraw_emu binary location and added .Trashes to the ignore list in photodirs.
Overhauled m4l-CorrelationModulation with a real correlation calculation, and added a MIDI version to the m4l-Modulation-Math device across 4 commits with large binary changes.
Created and published a new m4l-CorrelationModulation Max for Live device with README, live.banks support, and added a post about it on steinkamp.us.
Renamed the esstraba dev directory to support VS Code devcontainer and fixed search input trimming.
Removed hard-coded heights from the musics project.
Nov
Published a new post about wielding authority to steinkamp.us.
Fixed a console log and resolved a playback bug in the musics project.
Released v3 of m4l-LenStepper with another substantial overhaul.
Released v2 of m4l-LenStepper, rewriting the timing approach after determining JavaScript timers are too unreliable for musical use, in a large commit.
Fixed a significant bug in m4l-LenStepper.
Created and published the m4l-LenStepper Max for Live device with an initial commit, and added a post about it on steinkamp.us.
Added OpenGraph metadata to the musics project.
Improved the musics player styling significantly and updated the steinkamp.us site with musics content and devex improvements across 7 commits.
Minor content tweak (star) on steinkamp.us.
Oct
Made small wording updates to steinkamp.us.
Added OpenGraph metadata support and published new therapy and personal content to steinkamp.us across 8 commits.
Released v2 of m4l-KeyStepper fixing an undo overflow bug in a large single commit.
Published a Dev Team Blueprint article with images and redirects, plus several other content and wording updates to steinkamp.us.
Updated the resume and added nginx redirect rules to steinkamp.us.
Added nginx redirects for old URLs on steinkamp.us.
Added a Feedback Matrix post to steinkamp.us.
Fixed a typo in esstraba.
Improved esstraba's map display, improved loading behavior, and fixed layout issues across 5 commits.
Added chart support and decimation to esstraba, published a blog post about esstraba on steinkamp.us, and made various display refinements.
Added a compass display and footer padding to esstraba.
Added Mapbox GL 3D map support to esstraba alongside a solid photo slider and continued UI polish across 4 commits.
Refined esstraba's photo slider, improved value/unit display, added max elevation, and made typography and layout refinements across 10 commits.
Big esstraba polish day — improved responsive layout, built a better slideshow, added keyboard hotkey navigation, improved the activity grid UI, and fixed calorie and data display across 16 commits.
Sep
Implemented React context for app state so back button works correctly, and added start/end map markers to esstraba.
Added automatic topo and corrected running pace display, plus a map icon in esstraba.
Added speed display, fixed distance rounding, and optimized some calculations in esstraba.
Added gzipped GPX support, a responsive Tailwind layout, a README screenshot, and various cleanup to esstraba.
Cleaned up the esstraba project substantially — fixed Tailwind config, improved fonts and date/time display, set up frontend ports, and added icon and title across 9 commits.
Added HTTPS topology configuration to the esstraba project.
Created a brand new esstraba project (Strava activity explorer) with initial checkin, Docker container setup, and over 30,000 lines of baseline code.
Fixed a broken Ohlone link on steinkamp.us.
Fixed a significant bug in m4l-KeyStepper in a single large commit that restructured the device.
Published initial commits for two new Max for Live devices — m4l-ChordRipper and m4l-KeyStepper — and added posts about both on steinkamp.us.
Aug
Fixed metadata handling in the musics project.
Improved the musics player with exclusive play (only one track plays at a time), cleaned up the UI to show only the newest version, and added a Makefile.
Fixed the back button behavior on steinkamp.us.
Updated the musics project to request the music list more frequently.
Added njs-acme documentation or configuration to steinkamp.us.
Jul
Made a small wordsmithing change on steinkamp.us.
Made minor wording and typography fixes on steinkamp.us, including stopping text from scaling with viewport width.
Published two new posts (salad and jury duty) to steinkamp.us.
Released v3 of m4l-FibonacciNoteEcho with a note-based time mode and updated screenshot, accompanied by a large binary bump.
Added note division mode to the m4l-FractalNoteEcho Max for Live device and updated its README, with a large binary change.
Added a fullscreen button to photodirs, fixed the Dockerfile, and updated the musics project to use NFS.
Jun
Added headings to a post on steinkamp.us.
Published new travel content for St. Lucia with photos and layout work on steinkamp.us across 7 commits.
Added timeline images and fixed sort order by project year on dick.steinkamp.us.
Added video support, external link handling, and general improvements to the dick.steinkamp.us timeline.
Renamed timeline YAML files for consistency on dick.steinkamp.us.
Moved the timeline to its own directory and added it to the main listing on dick.steinkamp.us.
May
Fixed a formatting issue on dick.steinkamp.us.
Fixed video pause/blur on navigation and worked around a Chrome smooth- scrolling bug in photodirs.
Added scrambler motorcycle content and a 1988 photo to dick.steinkamp.us, and tightened up the resume on steinkamp.us.
Ran Prettier across all steinkamp.us files for consistent formatting, fixed music tools, and resolved TypeScript issues across 6 commits touching both repos.
Improved timeline spacing and added text display to the dick.steinkamp.us timeline.
Added a timeline feature to dick.steinkamp.us with a sizeable new content commit.
Apr
Launched a new memorial site (dick.steinkamp.us) with initial commit, baseline content, and multiple pages, and updated steinkamp.us to link to it.
Added more photos to the steinkamp.us site.
Added a devcontainer.json configuration to steinkamp.us.
Added album links, YouTube thumbnails, and updated pop-related content and images on steinkamp.us.
Added first-image fallback for thumbnails and added Markdoc excerpt parsing to steinkamp.us.
Switched to a real thumbnail image on steinkamp.us.
Fixed back button behavior on steinkamp.us and removed preventScrollReset from photodirs.
Reworked steinkamp.us to be data-driven with directory metadata files, and experimented with scroll restoration across 7 commits.
Fixed date handling and sorting in photodirs, added date display on the photo page, and published significant new content to steinkamp.us including a crown jewel post across 24 commits in both repos.
Published multiple new posts and content to steinkamp.us including a Studeute post with images, a scrapbook, and layout fixes across 9 commits.
Added a new pop-related post to steinkamp.us and fixed mobile layout and link color transitions.
Improved the Modulation Lerp animation and added a video and post about it to steinkamp.us.
Created and published the m4l-Modulation-Lerp Max for Live device with initial commit and GIF, and added a post about it on steinkamp.us with audio tag support.
Launched a new musics project and significantly expanded steinkamp.us with music page layout improvements, dark mode, a better hamburger menu, and various UI polish across 14 commits touching both repos.
Updated the README and added a Makefile to steinkamp.us.
Added a hamburger menu for mobile, fixed YouTube embeds, and corrected thumbnail image issues on steinkamp.us.
Improved access error handling in photodirs and worked on steinkamp.us adding Sharp image processing, production/dev mode support, and final production tweaks across both repos.
Added EPERM error handling to photodirs.
Overhauled steinkamp.us URL structure by removing "post" from page names and implemented custom Markdoc tags with article fixes, replacing over 1,000 lines.
Added significant content to steinkamp.us including a blog/slog section, fixed images, and made substantial progress on the site with over 2,000 lines added.
Mar
Continued iterating on the steinkamp.us site with a working checkpoint commit.
Launched the steinkamp.us personal site with an initial commit, setting up Markdoc and Docker and making it look presentable — a large new project first-day push.
Experimented with scroll restoration in photodirs.
Added next/prev click handling and prevented videos from preloading while adding a video icon in the thumbnail strip in photodirs.
Added adjacent image preloading, dark mode, fixed the thumbnail scroller math, and polished the overall photodirs UI across 9 commits.
Refactored the thumbnail strip to work well again, removed console logs, and dropped chokidar from photodirs.
Restored thumbnail strip with scrollIntoView-based scrolling and disabled camera white balance in RAW conversion in photodirs.
Fixed og:image for photos and switched from dcraw to libraw-bin for better modern camera RAW support in photodirs.
Fixed OpenGraph image when linking to a photo and used 100dvh for better mobile viewport handling in photodirs.
Built a real handmade minimal carousel for photodirs photo browsing.
Made a small CSS calc-based improvement to photodirs.
Extracted SVGs to their own files and cleaned up code; experimented with a page transition fade (then reverted it) in photodirs.
Cleaned up CSS and adjusted album item flex behavior in photodirs.
Added universal YAML sidecar file support for any photo/video, improved swipe feel, and migrated to node-exiftool for more robust EXIF handling in photodirs.
Added CR3 RAW support, implemented srcSet for photo pages, added swipe gesture support, and introduced dynamic index.html for OpenGraph metadata in photodirs.
Expanded the photodirs README with more documentation and added video to the readme.
Polished photodirs UI with condensed fonts, CSS variables, theme tweaks, markdown multi-paragraph description support, and logo improvements across 14 commits.
Added favicon and logo, improved ffmpeg transcoding, served videos directly from nginx, and made various README and logging polish changes to photodirs.
Major photodirs session adding full video support with transcoding queue, a hero banner, keyboard navigation improvements, favicon/logo, and extensive README updates across 28 commits.
Fixed EXIF issues, added an exif-set script, extracted the thumbnail into its own component, and improved the photo element layout with title/description support in photodirs.
Refactored photodirs by splitting utilities into functional modules, set page titles, fixed mobile layout, and added ffmpeg support across 7 commits.
Added lazy loading to photodirs images.
Feb
Cleaned up an unused file and fixed handling of nonexistent cache files in photodirs.
Polished the PhotoElement UI with SVG link buttons, improved mobile CSS, switched to createBrowserRouter, and tried a polling-based watcher approach in photodirs across 13 commits.
Migrated photodirs to a production/dev directory split, improved logging, switched from moment to dayjs, and made solid progress on cache management.
Improved the photodirs watcher to debounce rescans, added album.yml watching, got initial scan with pre-generated thumbnails working, and added log output around scan events.
Fixed nginx shutdown hang, improved 404 handling for wrong files, and continued progress on caching in photodirs.
Fixed directory-related bugs and implemented metadata caching in photodirs.
Made small fixes and started laying groundwork for metadata pre- computation in photodirs.
Added nginx proxy caching, pre-generated JPEG thumbnails for new RAW files via chokidar, fixed back/forward navigation, implemented flexbox layout, and improved error handling in photodirs.
Rapidly iterated on the photodirs UI — building out thumbnails, breadcrumb navigation, a serviceable layout, and adding caching for both regular and RAW images across 14 commits.
Switched to dcraw for RAW processing, improved EXIF handling, and added the frontend to photodirs in a massive commit adding nearly 18,000 lines.
Fixed HEIF image support and added RAW photo support with resizing to photodirs, also removing the darktable dependency.
Kicked off heavy development on a new photodirs project, making substantial progress on the core functionality and fleshing out the README with API info and photo options.
Jan
Made a small fix to add a photos link and correct an h3 heading on the site.
Added an empty robots.txt and introduced environment awareness to support a PROD_MODE flag for disabling livereload and incremental builds.
Added a programming-related post and made further touchups to the GitHub Pages site, with a moderate amount of new content added.
Spent the day polishing the personal GitHub Pages site with numerous small fixes, wording tweaks, thumbnail layout corrections, and added documentation for TrueNAS and pfSense backups.
2022
Dec
Published a "Chain Views" blog post on the personal website on Christmas Day.
Published a customer-focused blog post and added a Twitter-related blurb on the personal website.
Renamed and rebranded three Modulation devices (Math, Delay, Stepper) to consistent naming with integer version numbers, added animated GIFs to their READMEs, fixed links, and updated the website to reflect the renamed devices.
Nov
Added tempo sync, fixed multi-mapping display and buffer size bugs in Modulation-Delay; created the zs-Send-Duck-Rack project with its initial commit; and updated the website tools listing.
Launched the m4l-Modulation-Delay device with initial commit, added a sum scope, published a frozen version with color updates and URL fix, and posted about AutomationDelay on the website.
Cleaned up junk characters in blog content on the personal website.
Removed stale comment blocks from the personal website.
Updated compensation/remote work notes on the personal website.
Applied general content updates to the personal website.
Made tiny copy corrections on the personal website.
Published several new blog posts covering Yahoo, perpetual storage, Stripe, and a definition of DRI on the personal website.
Updated the songs list and "what's next" page on the personal website.
Updated the resume on the personal website.
Oct
Created the zs-Feedback-Matrix project with an initial commit, organized the frozen file into its own subdirectory, and documented the preset snapshot feature.
Added a new_post helper script and published a Tesla-related blog post on the personal website.
Jul
Made minor edits and disabled some content on the personal website.
Made small adjustments to the KS-Synth device.
Jun
Published a corrected frozen version 0.0.2 of FibonacciNoteEcho after resolving the algorithm fix.
Fixed the Fibonacci algorithm in FibonacciNoteEcho, updated the UI, corrected control order in the README, and published a frozen version.
Improved FractalNoteEcho's look and feel and published frozen version 0.0.2.
May
Created and published the m4l-Modulation-Stepper device with its first commit and README, and added it to the website's tools listing.
Published a new driving-related blog post on the personal website.
Published the first frozen release of m4l-FractalNoteEcho (0.0.1) with install instructions, and released TapPanZeit 0.0.5 with a visual tap- position indicator in the time/pan/volume display areas.
Fixed garbled characters in a blog post on the personal website.
Published Modulation-Math 0.0.5 with Push knob assignment via live.banks configuration.
Added a tap volume function control to TapPanZeit and published version 0.0.4 with an updated device image.
Added a spoiler element and a Stripe entry to the resume on the personal website, and fixed a typo.
Corrected left/right stereo swap in the TapPanZeit device.
Refined TapPanZeit with a visual refresh, help text on all controls, better Push assignments, and improved CPU utilization, publishing versions 0.0.2 and 0.0.3.
Launched the m4l-TapPanZeit device with initial commit, screenshots, instructions, and a linked blog post on the website.
Fixed a bug in TempoToMs where millisecond values were not calculated on initial load.
Apr
Created and published the m4l-KS-Synth (Karplus-Strong synthesizer) device with an initial frozen release, reduced polyphony for CPU efficiency, and added it to the website.
Upgraded TempoToMs to use vexpr for calculations with improved colors and minor visual alignment fixes, publishing version 0.0.3.
Released Modulation-Math 0.0.4 with multiple mapping destinations, launched the new m4l-TempoToMs device with initial commit and README, and added it to the website.
Fixed a multi-instance bug in Modulation-Math where send/receive names without the --- prefix were causing cross-instance signal leakage.
Added the CurrentParamKnob device to the music tools listing on the website.
Published a Max tips blog post with a table of contents and heading fixes on the personal website.
Prettified and documented both CurrentParamKnob and Modulation-Math with better images and cleanup.
Created and published the m4l-CurrentParamKnob device with a frozen release, and continued refining Modulation-Math's layout, image, and frozen version.
Launched the m4l-Modulation-Math device with its initial commit, added live.banks Push mappings and a changelog, and published a blog post with screenshots on the website.
Mar
Executed a major Faderboard3 refactor: shifted to bpatcher architecture, performed a huge cleanup, and shipped frozen release 1.0.0, removing tens of thousands of lines of old patcher data in the process.
Created a new ruby-tdd-base starter project with initial real files, and added a Knobbler entry to the music tools page on the website.
Wrote and published a blog post about the Knobbler M4L device, with styling and headline improvements on the website.
Added a name field to the resume on the personal website.
Continued polishing the "what's next" page and resume, tightened up copy, and removed emoji placeholders on the website.
Refined the "what's next" page, updated Ruby and song list, and made several content touchups on the personal website.
Updated a link to use HTTPS on the personal website.
Published a blog post about using Automator with Vim on the personal website.
Feb
Fixed a significant bug in Faderboard3 where channel note value automation was flooding the undo buffer during MIDI playback.
Added a direct download link to Faderboard3 and updated the todo, while adding a Faderboard3 link and hiring-page improvements to the website.
Made major changes to Faderboard3: expanded to 10 faders, added scale presets, enabled individual fader MIDI outputs, added Live play/stop state awareness, and fixed several bugs including the Push2 banks definition.
Added a virus-related blog post with images and made resume CSS improvements on the website.
Added a de-click feature to Faderboard3 with a default-zero setting and updated the device image and changelog; also published a post about the amxd diff tool and made website link improvements.
Published a "job criteria" blog post and added a fastest-mile entry, along with some content reorganization on the website.
Minor resume touchup on the personal website.
Jan
Made small resume improvements and a minor content tweak on the personal website.
Improved theme handling and help text across several M4L devices (FibonacciNoteEcho, FractalNoteEcho, js-toggleInput), allowed multiple Faderboard3 instances, and updated the website with font tweaks and version notes.
Added Push2 knob mappings via live.banks to Faderboard3, fixed automation controller names, and added a changelog to the README.
Added an example image and fixed pan automation display in Faderboard3, and published a new Music Tools page on the website.
Wrote and completed a blog post on setting up Network MIDI on the personal website.
Added a TouchOSC definition file to the Faderboard3 repository.
Fixed several bugs in Faderboard3 (sample restart, mono file handling, channel 9/10 off button), added a Restart All button, enhanced the README, and published a frozen release; also updated the website with a new photo.
Launched the m4l-zs-Faderboard3 project with its initial commit and rapidly built out full per-voice loop control including a loop position visualization, then updated the website with screenshots and embed fixes.
Cleaned up the personal website by removing Disqus comments, fixing formatting, and adding an entry for the zs-Faderboard3 M4L device along with download instructions for an older Faderboard version.
2021
Dec
Updated the resume with more content, added a hiring video, published a funmoji post, and refreshed the favicon.
Updated the resume and fixed miscellaneous formatting issues on the blog.
Published a blog post about the zsFaderboard project.
Nov
Replaced email-based notifications in garageMonitor with Twilio SMS alerts, a significant change to the notification pipeline.
Removed debug logging from garageMonitor and configured it to always restart automatically.
Added email notification support to garageMonitor when the garage door state changes.
Oct
Fixed the TERM environment variable in node-tdd-base and photodirs dev containers so the clear command works, and made a small blog subheader update.
Kicked off three new projects in one day: garageMonitor (a garage door monitor using the MyQ API with Docker and email alerts), node-tdd-base (a Node.js TDD template), and photodirs (a photo directory app), all with Docker Compose support.
Aug
Updated the blog's FractalNoteEcho post with a better intro and refreshed screenshots.
Jul
Fixed a grammar issue in the FractalNoteEcho README.
Significantly improved FractalNoteEcho's visualization to better illustrate the fractal progression, cleaned up unused code, added comments, and updated the README with new screenshots.
Fixed bugs and improved the visualization in FibonacciNoteEcho (first- note timing, Fibonacci sequence bug, naming consistency), and applied naming cleanup to FractalNoteEcho.
Made toggleInput more robust by not relying on a label that could differ in non-English versions of Live.
Created the new m4l-js-toggleInput Max for Live device with an initial commit and installation documentation.
Cleaned up and added shared utilities to both FibonacciNoteEcho and FractalNoteEcho, added a README and screenshot to Fibonacci, and improved the fractal visualization.
Launched the new m4l-FibonacciNoteEcho M4L device with initial commits and bug fixes, while also adding a jsui visualization to FractalNoteEcho and cleaning it up.
Fixed a missing image and added a pair programming blog post.
Jun
Swapped in a different demo for a blog post.
Created the new m4l-FractalNoteEcho Max for Live project with initial commits, README, and screenshots, and published a corresponding blog post about it.
Built and published a Game of Life / Conway's Life interactive demo on the blog, adding step controls, a 3D shadow effect, a frame buffer for performance, and a code link.
Added a reference to chauvinism in a blog post.
Expanded the Mimi blog post with additional content.
Made a small update referencing Mimi on the blog.
May
Polished the resume page and fixed small issues across the blog.
Swapped in a better demo video for the pinhole photography post.
Made edits to the computer history blog post.
Added a TL;DR section to a blog post.
Added several new blog posts including a manager toolbox guide, a computer history piece, and updated the pinhole photography thumbnail.
Published a blog post about the turdokken containerscript project.
Added a thumbnail and a new pinhole photography article to the blog.
Apr
Published a substantial blog post covering photos, folder organization, Samba configuration, iOS, Raspberry Pi storage, and a kimchi recipe.
Mar
Updated a blog post to reference Ableton Live 11.
Refined the feedbacker post with HPF notes, diagram margin fixes, and small copy edits.
Wrote a detailed blog post about feedback/return track techniques with diagrams, examples, and notes on hiding ads in embedded players.
Added a room acoustics post, a link to Sylvia's work, and updated the songs section of the blog.
Added Disqus commenting integration to the blog.
Fixed character encoding issues across blog content.
Added a thumbnail and wrote content about texture and reverb on the blog.
Feb
Added a new mastering article to the blog.
Fixed character encoding issues in a blog post.
Jan
Made edits and spelling fixes to the Mission Peak article on the blog.
Added a new Mission Peak hiking article to the personal blog.
2020
Dec
Added posts about felt pads and a studio shelf to the personal site.
Nov
Published a substantial availability post (over 100 lines) to the personal site.
Updated the resume, added YouTube video embeds, then reverted some edits on the personal site.
Oct
Added Monument, Highway 50, and Mandate content entries to the personal site.
Sep
Added a portraits post to the personal site.
Published a metrics post to the personal site, a substantial new article with over 100 lines of content.
Added a "Deferred" post to the personal site.
Aug
Added new images, updated the songs list, and updated .gitignore on the personal site.
Reformatted the resume section of the personal site.
Added a "People Garden" post and fixed several typos on the personal site.
Jun
Created a CNAME file to set up a custom domain for the GitHub Pages site.
May
Added NGC1277 content to the personal site.
Added a new "Thay" entry and a paragraph to the personal site.
Expanded written content on the personal site with additional words.
Apr
Added anchor links to the personal site.
Made small content fixes to the personal site including a link correction, non-breaking space tweak, and updating the Notes Roar Spotify URL.
Improved music listings on the personal site by switching to a Bandcamp ID field, adding Spotify and Bandcamp embed support for Herbie, and fixing YAML.
Added a new "Herbie" entry to the personal site.
Mar
Added SoundCloud integration and a new shelter entry to the personal site, along with linking isolation loops, fixing a typo, and adding a conditional.
Updated the songs section of the personal GitHub Pages site with minor content changes.
2019
Dec
Added a songs section to the site with a substantial amount of new content.
Sep
Fixed a spelling error, credited to contributor eweathers.
Aug
Added more dates and interview-related content to existing posts.
Applied general touchups, improved efficiency, and corrected dates across several posts.
Made minor date edits to existing posts.
Updated gem dependencies (including fixing a Nokogiri issue), added articles and a team post, and corrected date formatting across the site.
Fixed trailing whitespace in a file — minor housekeeping.
Published a new blog post.
Cleaned up the site significantly by removing a large disabled content folder, fixing an excerpt bug, updating interview text, and importing Smugmug posts.
Reorganized post files, added a Barcelona post, set up a deploy script, and added a README.
Made several site improvements including layout and content tweaks, added a new hiring-related post, and created a new file.
Jul
Migrated the site to HTTPS, updating internal links and configuration to enforce secure connections.
Continued rapid content expansion of the site, adding more entries and source files while configuring exclusions.
Landed a large batch update to the site, adding a significant amount of content and making sweeping improvements across the board.
Made the initial commit of the zsteinkamp.github.io site and rapidly iterated on it, adding posts, songs, and resume content while fixing early issues.