At the risk of getting a bit meta, I'm posting about the blog… not even just about the blog, but about the blog's directory structure, configuration, and build process! I've just recently finished (and re-finished, and re-finished, …
Tagged: my-software
Avatars for Twitch
Tags:I've been experimenting recently with front-end-only Twitch overlays that use static files, the TMI JavaScript library, and localStorage. I feel comfortable enough with the pattern now and have enough faith in it that I have excised the …
A chat bot in your browser
Tags:I've been tinkering with tmi.js (Twitch's messaging interface) in node as of late, and it occurred to me: the library works in the browser, as well! With this in my back pocket, I went off and built a tiny little chat bot as an …
Track change events for YouTube with MutationObserver
Tags:Have you ever wanted to react to events taking place on a web page, but they aren't capital-e Events that you can catch and handle? I was in this situation recently, where I wanted to grab the current video and chapter titles to display …
Rate limiting with Flask-SocketIO
Tags:I've been transitioning the API for a Flask project I'm working on away from REST and toward Socket.IO. In doing so, I came to the abrupt and depressing realization that the rate-limiter I had been using for the REST endpoints …
Aethersprite: a Discord bot framework
Tags:For some months, I had been tinkering with the discord.py library and slowly building up a bot for use in Nexus Clash faction servers. The more I added to it, the more I began to realize that what I was really building was a bot …
More FlaskBB development
Tags:The train keeps rolling. I've been busying myself with more FlaskBB development lately. I took the Docker image and expanded it into a docker-compose example. I've also built a plugin for managing email and RSS notifications and another …
FlaskBB development
Tags:Lately, I've been getting involved with some Python-based forum software, FlaskBB. I had been running phpBB for one of my web games' forums, and it became overrun with bots. Given my attraction to Python over the last few years, I began …
repo2site: Make a web site out of a git repo's MarkDown files
Tags:I've just finished the initial work on a script that will make a full-HTML website, driven by AJAX, out of the MarkDown (*.md) files in a git repository. It's currently geared toward GitHub, but could easily be adapted to other repository …
ASP.NET/C# image resizer for responsive layouts
Tags:I will probably elaborate on this a bit further when I find some more time, but for now, this post is going to be mostly code. What I have here is a relatively simple way to generate images that are resized server-side based on the screen …
A quick shell script for wine prefixes
Tags:Wine, the Windows emulator-that's-not-an-emulator for Linux distributions, has a way of maintaining separate Windows systems using the WINEPREFIX and WINEARCH environment variables. While it's a powerful mechanism, it's not so handy to …
jQuery visibility pseudo-selectors
Tags:To help me with a project at work, I've written two jQuery pseudo-selectors which will help determine if an element is currently in the viewport or if it has been reached during scroll. This can be incredibly powerful if you're looking to …
My text editor configuration
Tags:I've been a Vim (and gVim) user for several years now, so naturally, I've amassed a byzantine maze of configuration settings and blessed plugins. This evening, I decided to publicize my configuration. Check it out!
Twitter 'Acro' bot
Tags:It's been a while since I actually wrote it, but I realized this evening that I never posted about it on my blog. What I'm referring to is the 'Acro' bot for Twitter I wrote in Python.
Validating file uploads in Sitecore WFFM
Tags:Our Sitecore installation was in dire need of a way to lock down file uploads on forms built with the Web Forms for Marketers (WFFM) module; out of the box, it doesn't do any checking at all, which can lead to some risky situations. I …
Tribute: An Homage to My ASCII Heroes
Tags:I don't generally write anything on here that isn't about code; I don't like to use this as any kind of a soapbox. To me, this site is about sharing tricks and solutions I've created or come across in software development. That being …
ascii.js: A font-based rendering engine for ASCII artwork
Tags:A long-standing and thoroughly-enjoyed hobby of mine is creating and consuming ASCII artwork (though not the kind of watered-down crap you would see in, say, an e-mail signature or a chain letter). I recently went on a wild tear after …
scrollFollow: An auto-scrolling extender for knockout.js
Tags:With the following knockout.js extender, you can tie an observable array to a scrollable HTML element. When the array is updated, the element will keep scrolling to the bottom. It's smart enough to realize if the user has scrolled up, as …
staggr featured on freewaregenius.com
Tags:My experimental link-staggering Facebook service, staggr, has been featured on the free software blog, freewaregenius.com. Cheggit: https://www.freewaregenius.com/automate-facebook-link-posting-at-20-minutes-intervals-with-staggr/
Batch convert audio files to MP3 with PowerShell and VLC Player
Tags:I adapted a PowerShell script by Tim Van Wassenhove that recurses through a given directory, searching for various types of audio files. These files are then converted to MP3 using VLC Player's command-line interface. My adjustments to …
rexCrawler and HelpfulHighlighter are now open source
Tags:After having dipped my toe in the water of open source with some Arachni module changes and the development of a simple WordPress plugin, I've finally taken the plunge; two of my personal projects are now completely open source, and …
WordPress plugin minify Makefile
Tags:While working on my first commercial WordPress plugin, the need for build automation finally struck me. The environments in which I do my most development are all driven by Linux, and so I wanted to use a tried, true, and ubiquitous build …
JavaScript Challenge #2 (Whac-A-Moo)
Tags:Though I am not a proponent of the MooTools JavaScript framework, their blog is an interesting resource that I enjoy reading. Not only is it packed with sensible practices and interesting insights, but they have recently begun posting …
Selective backup/copy script for moving files into production
Tags:Whenever our web site needs to undergo re-branding, there is always the hassle of creating both the selective package of files to move into production from development and the selective back-up of the necessary files already on the …
Simple file access concurrency in C#
Tags:When working without the safety net of a RDBMS in a multi-user environment, file concurrency may become an issue. In a project I've been working on recently, XML files are being used as the custom data store. This is all fine and dandy …
Kill all shared memory segments in Linux
Tags:See update below. I recently whipped up a shell script to kill all (IPC) shared memory segments in Linux for a client on oDesk. He wound up going with another contractor's offer, and so I figured I would post my script here for the …
jQuery.imgradio Plugin v1.0 released
Tags:The default HTML radio buttons and check boxes aren't the most aesthetically pleasing things in the world of web design. With this in mind, I have created a jQuery plugin that will replace those pesky <input /> elements with …
Forward Gawker sites to their UK counterparts for a better layout
Tags:I wrote a (really) simple userscript today that reloads Lifehacker pages under uk.lifehacker.com. Why did I do this? Because the Lifehacker UK site doesn't have the trendy new (horrendous) AJAXified layout. Maybe using a hosts redirect …
Send XMPP messages with Perl (from the command line, too!)
Tags:I had been looking for a small, simple utility for Windows that could send XMPP messages from the command line for use in various automated tasks and notification processes. I came across sendxmpp as part of the CygWin installation, but …
Create anchor links in Twitter status text with PHP
Tags:In a previous blog post, I outlined how to convert Twitter @mentions, #hashtags, and URLs (with or without protocol prefixes) into anchor links using JavaScript. Here is that same process wrapped up in a PHP function instead for your …
What's My Status? v1.0.0 released
Tags:My first officially-recognized WordPress widget, What's My Status?, has been released! It is a widget for displaying a given user's status feed from identi.ca, Twitter, or any other service that provides a Twitter-like API. There are …
Create anchor links in Twitter status text with JavaScript
Tags:Note: This also applies to any service using a Twitter-compatible API, such as StatusNet (see: identi.ca) with some minor configuration changes. As a side project, I have been working on a StatusNet (specifically, identi.ca) status feed …
Check all CheckBoxes in a GridView using jQuery
Tags:If you're working with a GridView control where you've built a CheckBox control into each row of data displayed, odds are, it would be convenient for your users if a "Check/Un-check All" option was available. The following …
Custom error messages with ValidationSummary in ASP.NET
Tags:Sometimes, there are problems encountered in a code-behind file that don't warrant the extra work and mark-up that would otherwise be required to add CustomValidator controls to the page for displaying error messages to the user through …
Image dimension Field Validator for Sitecore CMS
Tags:This StandardValidator extension will determine whether or not a given ImageField's source image's height and width match with given parameters. Either parameter can be omitted if, for instance, you only care about validating the width of …
Currency Field Validator for Sitecore CMS
Tags:This StandardValidator extension will determine whether or not a given field value passes for currency. In order to do so, it must meet the following requirements: It must pass decimal.TryParse() It must not have more than 2 digits past …
bulkRename v1.1
Tags:A while back (in 2008), I wrote a simple system utility with VB.NET which leverages the power of regular expressions to rename files in bulk according to a pattern. I've had to use it several times recently after placing it on a …
Photobucket thumbnail bookmarklet
Tags:I've built a pretty simple little utility for turning the URL of an image hosted on Photobucket into a thumbnail which links to the full-sized image. I've designed one version for building bbCode (forum) mark-up, and one for building a …
Urban Dead Greasemonkey Scripts
Tags:I've built a home for all of my Urban Dead Greasemonkey scripts at sites.google.com/site/udscripts. It currently houses CHUD, UDInventory, and the UDBrain Frame Fix script. It will be my base of operations for UD mods from here on …
UDInventory - GreaseMonkey script for Urban Dead
Tags:I've written another GreaseMonkey script for the web game, Urban Dead. This one will compact your inventory by grouping together guns, ammo, first-aid kits, syringes, etc. You can install it from GreasyFork. Click here for an iWitness …
chud - GreaseMonkey script for Urban Dead
Tags:I've finished putting together my first GreaseMonkey script! It's called "chud"—the Caddy Healer for Urban Dead. It's been built to plug-in to my favorite web-based zombie apocalypse, Urban Dead. It will bring up a list of …
rexCrawler release
Tags:I've released one of my personal software projects, rexCrawler. It is a program I use at work to search specified files/folders for (optionally) specified text/patterns. Knowledge of regular expressions is suggested, but unnecessary. …