Skip to Content


Thoughts on game development and accessibility
  1. Reflecting on 2021

    Refocusing in 2022

    Last year was very productive for me. S.E.A. received a year of expansive post-jam updates. E.X.O. was one of ten excellent submissions to No Video Jam 2. And I created Wurmus, Chimera, and Bladius for various jams.

    Continue reading Reflecting on 2021
  2. Changelog: Redesign

    It's been a while!

    Today I tackled the impossible task of redesigning this site. I haven’t kept up with sharing updates here lately despite great news like several updates for S.E.A. and a new game release!

    My goal with this change is to better showcase my games, with a better publishing process for whenever there’s something to share. Eventually I would like to import all of my devlogs to bring the archives to date.

    Please join me on the shiftBacktick Discord server on Sunday, June 20, to ask me anything about my game S.E.A.


  3. Introducing syngen

    A library for audio game development

    Over the past year I’ve used web technologies to create audio games like soundStrider and participate in numerous game jams. With syngen I’m releasing my tools as open-source so folks can join me in crafting dynamic audio experiences and games for the web. Continue reading to dive into its features, view example code, and learn more about its future.

    Continue reading Introducing syngen
  4. Introducing Auraboros

    An endless audio bullet hell game

    Devour singularities or be assimilated in this submission to Ludum Dare 47. Auraboros is an audio game that’s best experienced with headphones.

    Continue reading Introducing Auraboros
  5. No Video Jam postmortem

    What I learned from hosting an audio gam jam without graphics

    Last month it was my pleasure to host the No Video Jam, an audio game jam featuring accessible games without graphics. In two weeks dozens of developers created 20 games that were accessible to gamers who are blind. We had a variety of submissions, from action games to interactive fiction, that surprised and delighted. Continue reading to learn more about how it went and the lessons I learned from organizing my first jam.

    Continue reading No Video Jam postmortem
  6. Introducing S.E.A.

    A relaxing audio watercraft simulator

    Drive an experimental watercraft and explore relaxing aquatic soundscapes in this submission to No Video Jam. S.E.A. is an audio game that’s best experienced with headphones.

    Continue reading Introducing S.E.A.
  7. Introducing Kaleidophone

    A relaxing generative audio toy

    Manipulate time to explore ambient soundscapes in this submission to LOWREZJAM, Brackeys Jam, and AGJam. Kaleidophone is an audio toy designed for deep thinking, meditation, and relaxation that’s best experienced with headphones.

    Continue reading Introducing Kaleidophone
  8. soundStrider v1.0.2

    Anatomy of a Web Audio performance hotfix

    As promised, the latest soundStrider hotfix resolves some performance degradation issues that caused audio stuttering and drop-outs. With tactical problem solving I was able to pinpoint the issue to eight sounds that created audio sources which never stopped. Continue reading to learn more about my approach to debugging a complex Web Audio application.

    Continue reading soundStrider v1.0.2
  9. soundStrider Postmortem

    Reflecting on a nine-month journey with the Web Audio API

    Nine months ago I started a solo game development journey that began with a prototype and ended in my first self-published title. It’s been an incredible journey that’s tested my fortitude and taught me transferrable lessons. Throughout this post-mortem I will present an in-depth analysis of creating soundStrider with the Web Audio API, its effect on my finances, and my takeaways. Please join me in wrapping up this chapter of my life.

    Continue reading soundStrider Postmortem
  10. Announcing the No Video Jam

    An audio game jam without graphics

    Please join us on Friday, August 14, for the No Video Jam, an audio game jam featuring accessible games without graphics. Participants will create blind-friendly games of any genre using audio and accessible text. Submissions will then be judged by the public based on criteria like accessibility, fun, originality, and sound.

    Since I began making audio games I’ve learned that it’s a niche and neglected market. Gamers who are blind often feel isolated from the mainstream gaming community and have few games made specifically for them. My hope with organizing this jam is to give them visibility by normalizing audio games with sighted developers and gamers. Then when it’s over they’ll have more games in their canon to enjoy and discuss.

    I’m looking forward to hearing what everyone creates!

  11. Introducing Audo

    A high-speed endless audio racing game

    Avoid opponents and collect power-ups as you vie for the top velocity in this submission to GMTK Jam 2020. Audo is an audio game with screen reader support that’s best experienced with headphones.

    Continue reading Introducing Audo
  12. soundStrider Released

    Now available on Steam and

    After eight months of development I’m proud to announce the release of soundStrider. With this release the game is feature complete and finally available for purchase on Steam. Continue reading to find its final patch notes and learn what’s next for the project and me.

    Continue reading soundStrider Released
  13. Improving soundStrider

    Learning from a new audience for v0.18.0

    Last weekend I overcame my fears and shared soundStrider with a large gaming community for the first time. The feedback I received was invaluable and led to several breakthroughs about managing expectations, game design, and my commitment to accessibility. The latest beta reflects this feedback. Continue reading for a post on continuous improvement, fears slayed, insights gained, and all the patch notes (of course).

    Continue reading Improving soundStrider
  14. Support Racial Justice and Equality

    It's time to stand up against racism and police brutality

    For a limited time I’m proud to offer soundStrider as part of the Bundle for Racial Justice and Equality. Please support this cause for as low as $5 USD to gain early access to the beta as well as hundreds of other great games. This charity ends on June 16 and does not include a Steam key.

  15. soundStrider v0.16.0

    Revisiting Soundsearcher with Synthesis quests

    The latest soundStrider beta adds a new quest type and a variety of enhancements. In its Synthesis quests, adventurers search for musical components to repair broken chords. And improvements to world generation and the exploration system send adventurers deeper into uncharted lands. Continue reading to find the patch notes and learn more.

    Continue reading soundStrider v0.16.0
  16. soundStrider Beta

    Mountain palette, mouse controls, and more

    After six months and over 650 hours of development I’m excited to announce that the soundStrider beta—its largest update yet—has arrived!

    In the Mountain palette, players will ascend to treacherous heights to enjoy chance music produced by standing bells and wind chimes. With its new mouse controls its procedurally generated worlds can be traversed in entirely new ways. And a remix of every sound ensures they can be enjoyed across a variety of audio setups.

    Continue reading to find the patch notes, launch trailer, and learn more.

    Continue reading soundStrider Beta
  17. soundStrider v0.14.0

    Urban palette and beta announcement

    The latest soundStrider alpha adds a dynamic traffic system and a new palette to support it. In the Urban palette, players will navigate streets of various layouts bustling with motorized traffic. This update also includes a metaprogression system which tracks metrics across play sessions to drive some secrets coming in its full release. Continue reading to find the patch notes and learn more about its upcoming beta.

    Continue reading soundStrider v0.14.0
  18. soundStrider v0.13.0

    Aquatic palette and escort quests

    The latest soundStrider alpha adds a new palette and a surprise new quest type. In the Aquatic palette, players venture into the depths of the ocean to swim through dreamy soundscapes. And its new escort quests task players with taking props from one place to another. Continue reading to find the latest patch notes and learn more.

    Continue reading soundStrider v0.13.0
  19. soundStrider v0.12.0

    Optimizations and polish

    The latest soundStrider update improves the overall state of the game and its codebase. Included with this update are major performance optimizations, improvements to world generation, and some graphical enhancements. Continue reading to find the latest patch notes and learn more.

    Continue reading soundStrider v0.12.0
  20. soundStrider Progress

    Breaking the silence

    It’s been a busy six weeks as I’ve worked to fill soundStrider with content and prepared for its June release. Regretfully, I’ve been so busy that I’ve neglected to update this blog with important announcements about my progress. Don’t worry—it’s nothing but good news below.

    Continue reading to play the alpha, watch its first trailer, visit its new website, and read all the patch notes.

    Continue reading soundStrider Progress
  21. soundStrider v0.7.0

    Hardhats in the rain

    The latest version of soundStrider introduces its industrial and storm palettes which leverage a variety of game systems to create evolving musical textures. Demo players will also benefit from a new tutorial quest and enjoy enhancements to the visualizer as its core experience continues to improve.

    Continue reading to hear excerpts of these newest palettes and learn more about the upcoming early access release.

    Continue reading soundStrider v0.7.0
  22. soundStrider v0.6.0

    To the tundra and beyond

    The latest version of soundStrider expands its textures with the addition of its tundra and astral palettes. Bridging the gap between its desert and elemental palettes, they leverage a variety of synthesis techniques to evoke the chill of winter and the vastness of space.

    Continue reading to learn more about the latest excerpts uploaded to the shiftBacktick SoundCloud page.

    Continue reading soundStrider v0.6.0
  23. soundStrider Demo

    Explore the elemental palette today

    After three months of development, the soundStrider demo has arrived! In this demo of the elemental palette, players can explore infinite soundscapes of peaceful ambient music. Continue reading to play soundStrider in your browser and secure your early access by pre-ordering today.

    Continue reading soundStrider Demo
  24. soundStrider v0.5.0

    Summoning sunshine and sand

    The latest version of soundStrider doubles its number of sounds with the addition of its beach and desert palettes. Combined with its new dynamic wind system, no two moments or locations are ever quite alike as the sand and its imaginative secrets drift in the wind.

    Continue reading to learn more about the latest excerpts uploaded to the shiftBacktick SoundCloud page.

    Continue reading soundStrider v0.5.0
  25. soundStrider v0.4.0

    An expedition into the elemental palette

    After nearly fifty hours of development, the latest version of soundStrider has arrived at its destination. Its features include the beginnings of a procedural quest system, a fresh palette of evolving sounds to explore, and a dynamic compass to help lead the way. And with added accessibility features it’s more inclusive and approachable than ever.

    Continue reading to listen and learn as we journey into the otherworldly textures of the elemental palette.

    Continue reading soundStrider v0.4.0
  26. soundStrider v0.3.0

    Reaching its first playable version

    Development on soundStrider has continued at a strong and steady pace since my last update. Culminating over sixty hours of development, its latest minor version includes an ambient visualization for spectators (hello Twitch streamers), a loving port of the classic Soundsearcher objects, and a plethora of minor features, fixes, and enhancements.

    Continue reading for new open eye visuals and audio excerpts as we unpack what went into building soundStrider’s first playable version.

    Continue reading soundStrider v0.3.0
  27. soundStrider v0.2.0

    From local experiment to distributable product

    Since announcing soundStrider I have dedicated over thirty hours to its development and received an outpouring of support from empathetic friends and piqued ears. Its first minor version increase represents a major milestone for the project as it receives a graphical user interface and tooling to facilitate its eventual distribution.

    Continue reading for fresh screenshots and a tentative roadmap.

    Continue reading soundStrider v0.2.0
  28. Announcing soundStrider

    An auditory exploration game and relaxation tool

    When I created Soundsearcher earlier this year, I hadn’t anticipated the radical enthusiasm for game development it sparked in me. It demonstrated to me the flexibility and power of the Web Audio API—and in harnessing that power, it was possible to cultivate worlds and captivate minds.

    Throughout this article series I will detail and reflect upon my progress as I build a worthy successor to that surprising experiment. My hope is that it will keep me responsible and sincere during my sabbatical.

    Continue reading Announcing soundStrider
  29. Hello Sabbatical

    A new start

    Recently my position at my workplace was eliminated.

    Honestly? It was the best worst news. What was destined to be a difficult decision—taking a year off to pursue my passions—was made for me, albeit slightly prematurely.

    Continue reading Hello Sabbatical
  30. Building Soundsearcher

    Starting with nothing for Ludum Dare 45

    Last month I participated in Ludum Dare 45. Over its 48 arduous hours there were many challenges to overcome and insights to gain as I built a game completely from scratch.

    As an accessibility advocate with a background in digital signal processing, I wanted to explore how the Web Audio API could be leveraged to build spatial audio experiences. The result was Soundsearcher, a minimalist exploration game designed for playing with your eyes closed.

    Continue reading Building Soundsearcher
  31. Introducing Soundsearcher

    A minimalist auditory exploration game

    Explore a procedurally-generated world of synthesized sounds in this submission for Ludum Dare 45. Soundsearcher is designed for playing with your eyes closed. Headphones are strongly recommended.

    Continue reading Introducing Soundsearcher
  32. A Day With Python

    Where have you been all my life?

    Today I installed Python for the first time.

    Whenever I learn something new I like to stay motivated with a small project. A friend and data engineer told me that Python excels at crunching numbers—and lately I’ve been quite a Numberphile—so I built a small library for generating my favorite OEIS integer sequences. When I encounter exciting sequences in the future they’ll surely get added.

    You can explore the result at this GitHub repository.

    Continue reading A Day With Python
  33. Web Performance

    An empathetic pitch

    Unlimited data and processing power is a privilege.

    Ignoring this privilege adversely affects: user experience because true performance is the foundation of perceived performance; accessibility because every requirement for a baseline experience is exclusionary; the economy as long as our users are paying for each web request with their labor; and the environment because every web request has material costs.

    It’s easy to forget that the web is for all people. So it’s a moral imperative to prioritize performance when we develop for the web.

  34. Lazily Lazy Loading

    Crafting a lazy loader for lazy folks

    Lazy loading is one of the best accessibility wins available to front-end developers. By deferring the loading of assets until we need them, we save our users’ data—and consequently their money. For folks who pay disproportionately more for their data, this can be invaluable.

    In this tutorial we will craft a lazy loader that can be deployed with minimal effort on any site. Because we’re lazy folks. So we’ll leverage the MutationObserver and IntersectionObserver interfaces to lazily lazy load lazy-loadable elements whenever they’re added to the DOM.

    Please feel free to skip to the result at this GitHub repository.

    Continue reading Lazily Lazy Loading
  35. Changelog: Now

    A new page appears!

    I was inspired by to create my own now page.

    Essentially it’s the latest snapshot of my life. It’s a place for me to be purposeful and transparent with my priorities. It’s where you can find a quick update if we haven’t connected recently.

    I needed a page that could be easily edited, so there were no major code changes. There’s a lot to unpack from that. I’d love to write more about the thinking and technology that went into building the site in later posts.

  36. Changelog: Links

    Conjuring a Web 1.0 staple

    The thing I miss most about the web before social media was everyone having their own blog or personal site. It was decentralized and punk.

    The URL made it all work. One inbound link and you were in. And every outbound link made it stronger. So we all linked to our friends and favorites to include, inform, and pay respect. We called them blogrolls.

    Let’s unpack some teachable moments that I encountered while implementing my links page.

    Continue reading Changelog: Links
  37. Gendervague

    That's my thing, I guess

    Some folks were surprised to see they / them pronouns on my about page.

    What’s your pronoun? has always been a difficult question to answer. Do I have to have a pronoun? refrains through my mind. I’m never prepared.

    Continue reading Gendervague
  38. תֹ֙הוּ֙ וָבֹ֔הוּ

    Let there be light!