Category: Software

Making a Firefox Dev Tools Add-On Look Native

UPDATE: This is now obsolete, with the adoption of WebExtensions.

Now that Firefox has built-in developer tools, it makes sense for developer add-ons integrate with them. MDN has some examples on creating a developer tools panel, but the examples do not look anything like the built-in tools, and do not offer any information on how to do so.

wheellistener - Cross-browser wheel event listener

If you ever wanted to use scroll events in your web app, you’ve probably found what a mess it is. I know I did when I was developing the theme used on this website. There are snippets out there to try to resolve legacy browser issues, but all of them are half-baked and missing basic functionality such as proper feature-detection and the ability to remove an event listener. All of these issues seems simple, but are actually quite complex to implement properly, and without memory leaks.

We can do better! That’s why I created this library.

webpack and jQuery: Include only the parts you need

Recently I decided to try out webpack as a replacement for Browserify, and it didn’t disappoint! Out-of-the-box, webpack even support’s AMD, so RequireJS-based libraries can be used as-is. This got me thinking, jQuery switched to RequireJS a while back for their source code and build process, so I questioned:

Could webpack be used to load individual jQuery modules?

WordPress Revisional Metabox Library Now Available

Revisional metaboxes in WordPress made easy.

Today, I present to you WordPress Revisional Metabox, a WordPress PHP library to make revisional metaboxes dead-simple, released as open-source on GitHub. This library is even easier to use than the usual procedural methods for registering custom metaboxes, so I have provided an option to disable revisions on a metabox in case revisions are not appropriate for all your metaboxes.

AIRControl 1.1

I have published a small update to AIRControl which will hopefully address some scattered performance issues a few people have been reporting.

I have made the following changes:

  • Limited the Windows extension to checking for new controllers to only once per second to improve performance.
  • Added debug output that can be enabled for runtime debugging.

I have also added a new example for how to use the new debug callback function.

AIRControl Released!

After much anticipation, and a few delays, AIRControl has been released!

This Adobe AIR Native Extension replaces my old and decrepit JoyQuery extension, and brings new features including improved controller support, POV hat switch support, the ability to get the name of the controller, and Mac OS X support!

The download includes a few example and full AS docs which should be enough for experienced ActionScript AIR developers to start making great apps! I will be posting an AIRControl tutorial in the coming days to help new developers get started!

AIRControl, the Future of JoyQuery

One of the things this website gets a lot of traffic for is an Adobe AIR Native Extension I had made a few years back called JoyQuery (if you must have the old version, it is still available here). Since then I have been working in my spare time, which fluctuates in and out of existence, to create an updated version that is more powerful, more efficient, and has a more elegant API.

This new version, with a new name AIRControl, will be completely open-source (except for the Adobe AIR code libraries from the AIR SDK I cannot legally distribute), and be compatible with both Windows and, for the first time, Mac OS X. The project is currently hosted on my AIRControl GitHub repository.

I am nearly complete with this release. I have finalized the C++ code to interface with the game controllers, built the native libraries, and tested them; and they are running beautifully. Now I am currently in the process of writing the ActionScript side of the library, to expose all the wonderful new features of the native libraries to your projects. With all of the hard parts finally out of the way, I expect this release to be finished no later than this weekend!