Blog

C# Remote WMI Query

Simple remote wmi query method.

Quick Windows Filesystem Enumeration with PInvoke

Write up forthcoming. Here's the code:

Rip Audio from Video with GStreamer

I reccently found the need to rip the audio from a video file (good for some conference talks), the issue is this, FFMPEG doesn't always have the codec you need. Thankfully I've purchased the Fluendo codec pack for gstreamer, the do stuff with video/audio backend. The following command sets up the gstreamer pipeline for processing the audio all the way from decoding the video to reencoding into an ogg vorbis file. The gst-launch man page has plenty of details on setting up the pipeline, there is tons of power here and I've found better performance on my system than with FFMPEG for audio and video transcoding.

Powershell Live Code Loading (kind of)

Hot code loading is a feature of languages that allows a developer to load new code into a running system without stopping the process. This has some clear benefits on servers, security and feature patches can be added without a risk of downtime. Yes, building your application in a way that you can fail over to a secondary system but that never seemed kosher to me as a patching strategy unless you're working at scale and already account for high availablity. I've implemented some long runner server software in PowerShell and using some of the features it's gleaned from Unix scripting you can hot load new code into them on the fly.

Strange F# Error on Mono/Xamarin

While dipping my toes into F# some time ago, I ran into a compile-time error that I couldn't explain or find a solution for: "Error FS0010: Unexpected keyword 'open' in implementation file (FS0010)". I was just building the Hello World app that comes with MonoDevelop out of the box. After some tooling around on StackOverflow and coming up short, the only thing I could think was, "Maybe it's a Mono bug, it's not in their issue tracker so I should just compile everything from source to be sure." Long story short, that was not the problem so don't waste your time; Mono 3.10+ is more than adequate. The issue was because I had a hyphen in my project name and the AssemblyInfo.fs file was improperly formatted because of it.