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 …
Hosting my own git repositories
Tags:I've run my own personal git service for several years now. Previously, it was with cgit on nginx and gitolite. I then modded cgit with some password maintenance features. After a while, I tried using several more "modern" git …
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 …
Disable SSLv3 to avoid POODLE attack in web.py
Tags:An open source application that I contribute to uses web.py to provide a web server platform for its services alongside the other platforms available. I recently updated it to use a sane set of default ciphers and to disable the SSLv3 …
SVG polyfill in pure Javascript
Tags:A designer at work pointed out this SVG polyfill as a candidate for our new production site. While I like the elegance of it, I was a bit disappointed that the author felt the need to include jQuery as a dependency simply to use its …
Give-Me-Coins.com Condensed UserScript
Tags:Lately, my interest has been piqued by cryptocurrency. After discovering that my ATI card could produce a decent hash rate without seriously spiking my electricity bill, I got specifically interested in Litecoin. Long story short, 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 …
Browsercache.php: A simple browser-cache-handling library for CodeIgniter
Tags:While CodeIgniter provides a disk caching mechanism, it lacks a browser caching mechanism. Without a lengthy introduction, here's one.
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 …
UserScript: Tidy up TVGuide.com listings
Tags:The way that TVGuide.com's listings are organized is difficult to work with. This UserScript (compatible with GreaseMonkey, Chrome, Opera, and perhaps more) will gut the listings from the layout and give you one all-encompassing, …
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 …
What's My Status v1.2 released
Tags:My WordPress microblog feed widget recently went through another update. This time around, I've added the ability to filter out replies and re-posts ("retweets" in Twitter lingo, "redents" in identi.ca speak) from your …
What's My Status? v1.1 released
Tags:My microblogging feed widget for WordPress, What's My Status?, has been updated. The plugin now uses curl for its main retrieval mechanism, with standard URL fopen as the fallback. Additionally, the Reset cache command has been fixed. You …
bulkRename v2.0 released
Tags:I've converted my bulk file renaming utility from VB.NET to C# and made use of a command line arguments parsing library so that it will accept folders and regex patterns with spaces in them. It behaves a bit weird if you don't encapsulate …
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 …
jQuery.noFlickerSlide Plugin v1.0.0 released
Tags:Since 1.1.3, jQuery's slideUp() method has had problems with flickering in Internet Explorer. While this issue can generally be fixed by avoiding Quirks Mode with a DOCTYPE declaration, it doesn't always work so easily. (The HTML 5 …
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 …
URL rewriting template engine
Tags:My employer is currently in the process of standing-up a content management system (CMS). In the process of migrating links on our existing site to the new CMS site, there are going to be—at least, at first—a metric tonne of possible URL …
PDF to TIFF batch conversion with ImageMagick
Tags:I have recently been tasked at work to create a script that will convert PDF files to TIFF files to be used for annotation within our document imaging service. The script is responsible for the following process: Create back-up copies of …
WebFOCUS Impact Analysis report compactor
Tags:Here's a little script I whipped up to combine several Impact Analysis reports generated by WebFOCUS Developer Studio. The script opens HTM-formatted IA reports, skims the data, and then concatenates it all in one CSV-formatted output …
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 …
View live page source with Javascript
Tags:Have you ever been working on an AJAX-enabled webpage, or a page with complex redirects and permissions, and tried to view its source? What you wind up getting generally looks nothing like the current state of the page in question. You …
rexCrawler v2.5.0.0 released!
Tags:I have released a new version of my home-grown desktop search software, rexCrawler. Several aesthetic updates have been included, as well as tighter exception handling. Read about it here or download it here. Enjoy!
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 …
rexCrawler v2.4.5.0 released
Tags:My complex file searching software, rexCrawler, has been updated. Version 2.4.5.0 improves on version 2.4.4.0 by adding an instructional help menu to the menu strip in the main window of the program. You can download the new version in …
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. …