Software Consulting

Nondisplayable offers software consulting services for small- to medium-sized web and desktop projects, both locally and remotely.

For more information, visit the Software Consulting page.


  • Hosting Godot web export on Netlify

    Exporting a Godot web project for use on Netlify’s free hosting isn’t too hard, but it does involve setting custom headers for CORS.
  • Pixelmator Classic crashing on startup

    I had a problem recently where Pixelmator crashed while I was editing text. This is bad enough, but then the application kept crashing on startup while trying to automatically reload my unsaved files. I ended up having to do a little delving into macOS internals to figure out what was going on.
  • SDL 1.2.x black screen on macOS Mojave

    Although Mojave has been out for a really long time, when I first upgraded I had problems with SDL 1.2.x programs starting up on a black screen. Sometimes resizing the window would work - when the application allowed it. Otherwise, I’d just be stuck with a blank screen and the program continuing without me.
  • Lessons from Modernizing with Elm

    Everybody’s talking about Elm, the functional programming language that makes front-end web development a lot less hairy. Working with a small team, I recently converted part of a client project to Elm, and have some lessons to share with the rest of the class.
  • Raytracing faster with Rust and Rayon

    Being able to quickly turn a single-threaded application into a multi-threaded one is one of the Holy Grails of programming languages these days. Modern pure functional languages offer the most obvious alignment with these goals, but what if you prefer imperative programming?
  • Macintosh Toolbox with THINK C

    In the previous entry, I mentioned that I had no experience with the Macintosh Toolbox, the application development “library” of sorts for old (pre-OS X) Macs. Recently, I had a bit of free time, and sat down to work it out in Mini vMac, an excellent early Mac emulator.
  • SDL on classic Mac OS

    For fun, I decided to see if I could write something graphical for the older Mac OS. Looking through my options, it seemed like writing direct Macintosh Toolbox code would take too long to get up to speed, so I searched a bit more and found that there is an older PPC Mac OS port of the fantastic SDL library which I’ve got a lot of experience in.
  • Microsoft.VisualBasic "My.Application" loads System.Web

    While diagnosing causes of low memory on an application converted from VB6 to VB.NET, we ran across a situation in which the application loaded the System.Web assembly (about 12MB) despite no user code referencing it.
  • elm-graphics on elm 0.17

    The elm-graphics module is a great way to teach simple graphics programming by offering a clean interface to the HTML5 canvas element. Some of the example code I’ve seen has not been updated to match the changes in recent versions of elm (as the Graphics module was moved into its own package), so this is a brief demonstrator on how I made it work.
  • Binding lambdas to typed event handlers with reflection

    A common type of unit test in .NET is to check to make sure an event is raised when an action is performed. Unfortunately, this often generates a lot of boilerplate code, especially with MSTest. Wouldn’t it be great to remove some of that boilerplate?
  • Helix-Gitswarm gotcha on RHEL7 with AWS

    I recently set up helix-gitswarm on an AWS instance with RHEL7 and had the installer script fail on me. It claimed the distro was unknown.
  • WindowsFormsHost performance

    The WindowsFormsHost control offered in WPF has many performance penalties that will catch out naïve users. Here are some tips and tricks to improve performance.
  • MahApps.Metro DropDownButton command bindings gotcha

    When building a DropDownButton that binds to a command on a parent viewmodel rather than one on the actual items of the DropDownButton, it’s important to remember how the DropDownButton’s menu is constructed.
  • Setting up Caddy to serve from a GitHub hook on Debian

    To take advantage of a low-resources VPS, I wanted to serve a static page but still have the ability to update that static page from a git push.
  • Templating MahApps.Metro DropDownButton menu items

    When displaying a MahApps.Metro DropDownButton, it’s often easy to set a DisplayMemberPath, but what happens if you want something more complicated in your menu items than just the member text?
  • Canadian Multilingual Standard keyboard won't go away on Windows 10

    I recently had the motherboard on my Lenovo W540 replaced. After the replacement, the language bar appeared in the taskbar and stated that I had two options for keyboards - US English or Canadian Multilingual Standard.
  • Rhino.Mocks - StrictMock vs. MockRepository.GenerateStrictMock

    Recently, I had to use the MultiMock functionality of Rhino.Mocks, which is regrettably not exposed through the static MockRepository helper functions. I ended up having to do it by hand by calling StrictMultiMock on a MockRepository instance. However, I found that calling the Stubbed property on my strict mock returned the error “requires a return value or an exception to throw” after interacting with that property.
  • Setting up iMessage on Wind Mobile - Gotchas

    I followed the guide from Daniel Celeste’s blog (archive link) but ran into a few gotchas along the way that I didn’t see mentioned outside of random forum posts.
  • Setting up the STM32F0DISCOVERY board under OS X Yosemite

    I recently picked up an STM32F0 Discovery board from Digikey, and set about making it work on the Mac. Some documentation I found was slightly outdated for Yosemite and didn’t cover everything needed.
  • Using ItemsSource in a DataGridComboBoxColumn

    My goal was to lay out a data grid that allowed you to change the units on each row. Each row represented a different quantity, so the available units to choose from weren’t necessarily the same.
  • .NET CLR crash in ReceiveWeakEvent

    While rigging up a view model with the PropertyChangedEventManager, I got a crash bug in my event handler that crashed my unit test and took out the .NET CLR on the way down.
  • MahApps.Metro gotchas

    A recent project has me using the excellent MahApps.Metro control library to give my app a Metro (or is that Modern?) look and feel.
  • Portability issues with the Segoe UI Symbol font in WPF

    I recently used the popular Segoe UI Symbol font to add some glyphs to my WPF app. I ended up having to back it out because of incompatibility issues.
  • brew update fails on local modifications

    For the longest time, I couldn’t get Homebrew to update itself because of (what it said was) a ton of uncommitted local modifications. brew doctor simply threw an error telling me to stash the uncommitted modifications that I had made, but told me the wrong directory to look in as my Homebrew repository was clearly not /usr/local as many other Google results had said.
  • inheriting styles from standard WPF controls

    Have you ever tried to set a Style on a complex WPF control, only to find it loses too much of the original styling and screws up?
  • finding native dependency failures with procmon

    How many times have you been debugging .NET code that calls into a native DLL and ended up with this kind of error in the fusion log on a new machine?
  • calling 64-bit code from a 32-bit .NET process using remoting

    I recently had to take a piece of legacy code that would only work when run in the x86 .NET CLR and make it talk to a piece of legacy code that contained 64-bit native logic. This, of course, meant that I had to run 64-bit code from within a 32-bit CLR, something that is difficult to do.
  • email forwarding with namecheap when using github pages

    I ran into a problem with my Namecheap DNS setup when I tried to point a domain to my Github Pages account and also handle email forwarding. Email just wouldn’t go through, even though the web redirection worked fine.
  • jekyll: no access permission to '/'

    I ran into this problem just now while setting up this very blog, which means we’re off to a great start.

subscribe via RSS