Thought Pieces
-
Focal point blocking for XR media
Planning out a linear VR experience requires thinking about where the viewers attention might be. Thinking about the focal points.
-
Designing immersive experiences
In traditional cinema, TV, or even the more modern phone screen, there’s limited screen real-estate. But removing that limitation creates a design problem.
-
The future is not prompt engineered
Let’s not pretend the importance of prompt engineering is ubiquitous. The most prevalent power of generative AI is in the way it adapts to us, not the other way around.
-
The typography of dates, times, & filenames
A deep dive into carefully considered date formatting, line length and general typography attributes of filenames.
-
Loosening the Shackles of Rapid Authoring Tools
Rapid authoring tools like Articulate Storyline and Evolve Authoring make sharing projects possible across a team of non-programmers, but your design must often adapted to the limited range of possibilities the tool allows..
Projects
-
Interaction Stripper
Interaction Stripper is a plugin for Penpot that enables bulk removal of interactions across selected boards.
-
Focus for Trello
A browser plugin that adds new styling options to help you adapt to your current focus on your Trello boards.
-
Google Keep Import
A plugin for Obsidian that enables easy import of exports from Google Keep.
All Articles
-
Focal point blocking for XR media
Planning out a linear VR experience requires thinking about where the viewers attention might be. Thinking about the focal points.
-
Designing immersive experiences
In traditional cinema, TV, or even the more modern phone screen, there’s limited screen real-estate. But removing that limitation creates a design problem.
-
Prevent Vite doing a full reload
Vite’s auto refreshing can sometimes get in the way. Here’s a way to stop it.
-
Expo won’t connect to my physical device
React Native apps using Expo won’t connect to your physical device on locked down networks without tunnelling.
-
Creating a new filetype in Obsidian
Obsidian plugin development allows you to add support for new filetypes.
-
Extracting the extension from a filename string
Pulling the extension from a filename in javascript can be done in many ways. And it’s easy to do in a way that will create errors.
-
Register a new file type in Obsidian
A quick reference for creating a new file type in Obsidian plugin development.
-
Transparent React Native iFrames/WebViews
WebViews will become transparent iFrames when compiling for the Web, but won’t be transparent by default on iOS or Android.
-
Accessing the vault from An Obsidian CodeMirror plugin
Accessing the Obsidian plugin instance from a CodeMIrror view plugin extension isn’t immediately obvious from the Obsidian docs.
-
Modify the tlDraw store without firing listeners
tlDraw let’s you tie into listeners that fire whenever the user edits, moves, or selects something on the canvas, but they also fire when making changes programmatically.
-
Programmatic changes in tlDraw without affecting undo/redo stack
While working with the tlDraw framework for infinite canvases, you may want to make programmatic changes to the content in the editor without the user being aware of them. That means that some of your modifications shouldn’t appear in the undo stack.
-
Sticky elements in Obsidian markdown views
Allow an element to scroll normally but stick the edge of the window instead of ever scrolling off the page is a little trickier than just stick CSS in some cases.
-
Reorder tabs in JSFiddle embeds
Jsfiddle is a great for embedding web snippets into blog posts, however, the ability to reorder the tabs and define what’s shown first is hidden.
-
Spaces in a PHP file
An ambiguous “characters of unexpected output” bug that had me chasing my tail for hours.
-
Set git to use Sublime Text for commit messages
Vim as terminal text editor is grossly unintuitive, anything is better. I use Sublime text.
-
Android Studio Environment Variables on Mac
A quick guide for setting up your Android Studio environment variables on a Mac.