SwiftlyTilting: usability, reusability

Friday, March 5, 2010

MediawikiPlayer v0.2.1

This version fixes a bug which prevented loading of files that were stored on the wiki.

Local Wiki page: MediawikiPlayer
Mediawiki Extension Page: Extension:MediawikiPlayer
Original post: Embed JW FLV Media Player with Mediawiki using the MediawikiPlayer Extension

If you find MediawikiPlayer useful, please consider making a small donation.


Download MediawikiPlayer v0.2.1
Downloaded 17 times

Sunday, February 21, 2010

MediawikiPlayer Extension v0.2.0 released

This version includes an important security update for those who allow untrusted users to make edits to their wiki. Please update ASAP to prevent cross site scripting.

* Fixed XSS security risk.
* Added ability to load media directly from the wiki using File:medianame.ext shortcut
* Added ability to store various default configurations with $wgMWPlayerConfig

Original post: Embed JW FLV Media Player with Mediawiki using the MediawikiPlayer Extension

Download MediawikiPlayer v0.2.0
Downloaded 121 times

Thursday, December 17, 2009

How to contact Swiftly Tilting

I specialize in PHP, with an emphasis on Mediawiki and other open source web applications such as Wordpress and phpBB. I am available to create custom applications, extensions and plug-ins as well as modify or trouble shoot existing PHP-based sites.

If you wish to contact me, please use the contact form.

You may also follow this site on Twitter: @Swiftly_Tilting

Thanks for your interest!

phc-win 0.3.1 - a PHP EXE compiler

The bugs in bcompiler seem to have been worked out since phc-win 0.3.0. Unlike 0.3.0, this release has the standard PHP DLLs (for PHP 5.3.1) and separate Winbinder, win32std and bcompiler DLLs. I’m hoping to be able to get a smaller DLL with all of the required extensions going, but for now this is better than the buggy bcompiler version.

If you find php-win useful, please consider making a small donation.


View the phc-win documentation.

Download phc-win 0.3.1
Downloaded 600 times

Note to XP users:
You may need to install the Microsoft Visual C++ 2008 Redistributable Package (x86) for EXEs to run correctly.

Note to Windows 2000, 9x Users
Due to a change in 5.3.x series of PHP, phc-win does not work on Windows 2000 or 9x machines. There are no plans to compile a 5.2.x series binary for phc-win. If you cannot upgrade your OS, I recommend using phc-win 0.2.1 which uses PHP 5.0.5.

Check the phc-win category for the latest version.

Wednesday, December 16, 2009

phc-win 0.3.0 - a PHP EXE compiler - compatible with PHP 5.3.1

It’s been quite a while since phc-win was updated due to the difficulty of getting all of the extensions compiled and running with each new version of PHP. Finally I got WinBinder compiled with PHP 5.3.1, and Alec Gorge helped out and compiled some lightweight DLL files to use with phc-win.

The good:
* PHP 5.3.1 compatible
* Program EXEs need only 1 DLL file and no other files to run correctly (if using one of the Alec Gorge compiled DLLs)
* Included DLL is only 2.44 megs

The bad:
* it seems bcompiler has changed since the last update of phc-win. Unfortunately it has introduced an error which causes programs to crash if your PHP code uses constants as default function parameter values. IE function foo ($bar = CONSTANT_VALUE) will cause the a program crash. Other problems may also exist with bcompiler. Because of this I may need to make the bcompilation stage optional.

UPDATE: Bug reports have been submitted to the bcompiler team and they are working on it, so hopefully there will be a resolution to this issue. Update 2: phc-win 0.3.1 is packaged with updated bcompiler dlls.

This version of phc-win has no actual functionality changes from 0.2.1 besides minor tweaks to get things working with php5.3 and working around the bcompiler issues.

If you find php-win useful, please consider making a small donation.


Download phc-win 0.3.0
Downloaded 75 times

For the latest version, check the phc-win category.

Monday, November 2, 2009

AdBlock 0.5.3.043 for FireFox 3

AdBlock is the percursor to AdBlock Plus, one of the most popular add-ons for Firefox. Some users, including myself, find AdBlock Plus too bloated and prefer the older AdBlock. This add-on is no longer in the Mozilla database, but is available on download.com and other sites. Unfortunately the default file does not install in Firefox 3.0 or later. A simple modification of the add-on will allow you to use it with FireFox 3.0 and later, so I have modified the add-on and placed it here for download.

This add-on seems to cause issues with some Flash-based sites. AdBlock Plus does not exhibit these issues.

Download AdBlock 0.5.3.043 for FireFox 3
Downloaded 145 times

Monday, September 7, 2009

SwiftlyTilting Wiki (re)Launches!

The wiki at SwiftlyTilting.com has received a face lift. I’ve also added documentation for all of my MediaWiki extensions, and there is a new sandbox area for users to try out Winter and my other extensions as well.

wiki.SwiftlyTilting.com

Sunday, August 9, 2009

CustomSidebar v0.3.0 - Mediawiki Extension

This update adds full template support as well as the ability to add sidebars based on user group and namespace.

CustomSidebar Homepage on MediaWiki.org

Download CustomSidebar 0.3.0
Downloaded 387 times

Friday, July 31, 2009

Embed JW FLV Media Player with Mediawiki using the MediawikiPlayer Extension

According to JW, “The JW FLV Player is the Internet’s most popular and flexible media player.” With the MediawikiPlayer Extension, one can easily include the JW FLV Media Player into wiki pages. JW FLV Player supports

  • FLV
  • MP4 (H264/AAC)
  • MP3
  • Youtube
  • Various streaming servers
  • Various XML playlists

Documentation available at the MediawikiPlayer homepage on MediaWiki.org

Download MediawikiPlayer v0.2.0
Downloaded 121 times

Download MediawikiPlayer v0.1.0
Downloaded 475 times

Friday, June 19, 2009

Maintenance Shell MediaWiki Extension v0.2.2

This update for Extension:MaintenanceShell adds quote mark support for the command line.

Download MaintenanceShell v0.2.2
Downloaded 415 times

Monday, June 1, 2009

Access MediaWiki maintenance scripts without a terminal shell using the MaintenanceShell extension

Some of the most powerful utility scripts which are included with Mediawiki can only be run via the command line, usually through a terminal shell. Unfortunately, many ISPs don’t allow terminal shell access, making life hard on MediaWiki admins.

I’ve written an extension for MediaWiki which tricks these maintenance scripts into thinking they are being run via the command line. A form on a special page provides access from the wiki.

MaintenanceShell homepage on MediaWiki.org

Download MaintenanceShell v0.2.1
Downloaded 114 times

Thursday, May 21, 2009

CustomSidebar extension for MediaWiki 1.14.0

I had the need for custom sidebars definable on a per-page basis in MediaWiki, and I didn’t like the current options out there. Luckily MediaWiki 1.14.0 adds a new hook right after the sidebar is generated, making it easy to replace its contents. You can either pull contents from another page or define the menu items on the page itself.

CustomSidebar Homepage on MediaWiki.org

Download CustomSidebar 0.1.0
Downloaded 101 times

Winter 2.2.0 - Interpreted language for MediaWiki

It’s been quite a while since I’ve updated Winter, but recently I discovered how to access content from other pages so perhaps we’ll see some new features. For now, I’ve added #include and #include_raw. #include will include the text from another page and run it through the Winter engine. #include_raw is not run through the Winter engine before being dumped into the page. Wikitext markup is not interpreted during this stage.. if you need the content to be formatted, you should use the #include command within a <winterprewiki> block. I also fixed a few bugs.

Winter Homepage on Mediawiki.org
Winter Documentation

Download Winter 2.2.0
Downloaded 402 times

Sunday, March 8, 2009

Getting Started with NES Development using ASM6

I’ve been interested in modifying Nintendo games (the practice is known as “ROM hacking”) for a while, though I’ve never developed my own software from scratch. Recently I had an idea for a project that would require original code, so I needed to learn how to create everything from the ground up.

To write programs for the NES, you have to know or learn assembly for the 6502 microprocessor. This processor was used in a variety of hardware in the 70s and 80s, and by today’s standard, is very simple and is not difficult to learn for those with some programming background. There are are huge number of resources on the 6502 processor available both online and in most libraries. Developing for the Nintendo will also require specific knowledge of the hardware and how to access it.

Once you’ve gotten to the point where you have the desire and ability to develop your own NES programs, ASM6 is a good assembler choice. It was created specifically for NES developers and can export .NES files ready to run in an emulator without the need for a separate linker.

ASM6 is available for download from Loopy’s site. (direct download). Loopy has also provided a basic project file which shows how to use the syntax of ASM6.

Additionally, here is a collection of very useful macros from “Memblers”. Unfortunately these macros aren’t 100% in ASM6 format but the ones that are not can be rewritten.

Thursday, November 1, 2007

Winter 2.1.1

Just a quick bugfix for Winter.

  • fixed NOTICE of undefined variable
  • fixed count command which would return the incorrect value

And since it’s been a while since I posted these links:
Winter Homepage on Mediawiki.org
Winter Documentation

Download Winter 2.1.1
Downloaded 781 times

Wednesday, September 19, 2007

How Universal Music Group likes their fake mp3s: Chopped and Screwed

In the battle against filesharers, members of the RIAA sometimes hire companies which attempt to disrupt the sharing of copyrighted material. A common tactic to discourage downloaders is to release multiple bogus copies of the media on P2P networks in an attempt to make it difficult to distinguish a good copy from a bad copy. Recently, MediaDefender — a company which provides this file spoofing service — had a large amount of its internal emails leaked by hackers. The emails are now widely available and as you can imagine make for some interesting reading.

One thing that can be gleaned from the emails is that apparently different companies have different tastes in fake mp3s. Here’s how Universal Music Group prefers to have its media processed for P2P networks:

    They want them to be more jarring mp3s.

    Obnoxious beeps they like. They like stutter drop outs. Volume changes can be added on additionally. They don’t want a hum in the background by itself, but that can be added on. They don’t want the FF-type sounds by themselves.

    They want the gain to drop and go up all the time and then beeps or glitches come in.

    He wants combined effects more than individual things. I’ll talk to y’all more about this tomorrow.

And again:

    Only use chopped and skewed audio decoys for UMG

More:

    Dev Meeting: chopped + screwed decoys

    Randy would like a meeting this afternoon starting between 230 and 300 to discuss our plans are for developing a system that would mass produce and distribute real content filled decoys where the audio/video has been manipulated to the point that it’s annoying to consume media from p2p networks

Of note “Chopped and Screwed” is also a style of hip hop music where the music has been slowed down and occasionally had certain parts of the beat repeated.

Sunday, September 2, 2007

Winter 2.1.0

One thing that has been bugging me about Winter is that code must be left aligned or else MediaWiki will format it with some HTML. This made it impossible to write neat code, especially in longer programs. I finally hit upon a decent workaround and now program code is much more readable.

Before:

{{#function | formatNum ||
{{#if | {{#1}} | {{#1}} | no more }} bottle{{#if | {{#1 == 1}} | | s }}
}}

{{#for | {{#i = 99}} || {{#i >= 0}} || {{#i --}} ||
{{#bottles | @= | {{#formatNum | {{#i}} }} }}
{{#ucfirst | {{#bottles}} }} of beer on the wall, {{#bottles}} of beer.
{{#if | {{#i}} |
Take one down and pass it around, {{#formatNum| {{#i - 1}} }} |
Go to the store and buy some more, 99 bottles
}} of beer on the wall

}}

After

{{#function | formatNum ||
   {{#if | {{#1}} || {{#1}} || no more }} bottle{{#if | {{#1 == 1}} || || s}}
}}

{{#for | {{#i @= 99}} || {{#i >= 0}} || {{#i --}} ||
   {{#bottles | @= | {{#formatNum | {{#i}} }} }}
   {{#ucfirst | {{#bottles}} }} of beer on the wall, {{#bottles}} of beer.
   {{#if | {{#i}} ||
      Take one down and pass it around, {{#formatNum| {{#i - 1}} }}
   ||
      Go to the store and buy some more, 99 bottles
   }} of beer on the wall.

}}

I’ve also added features to access the various template parameter variables used on a page, as well as various other upgrades and bug fixes.

  • changed syntax so that carriage returns are ignored if followed by a space
  • added template variable access
  • added time, microtime, date, urlencode, explode, implode, request_var, template_var, to_str, to_int, show_page_text, version, wordwrap, keep_nl
  • added ^. escape char
  • added <winterprewiki> tag which allows winter to be used before mediawiki processes it
  • added addVar for external user functions to add variables
  • added WinterBeforeProcess and WinterAfterProcess hooks
  • added various information available at runtime such as user name, page name, etc
  • fixed bug with nowinter tag
  • fixed bug when using foreach with noexistent array
  • fixed bugs with & and ? operators (they’re turned into html entities)
  • fixed bug caused by pipes being returned in error messages
  • updated error messages

Download Winter 2.1.0
Downloaded 384 times

Friday, August 24, 2007

All hail Akismet

For some time I’ve had problems with spam commenters. I’ve held them at bay mostly by having an extensive spam word blacklist as well as holding all comments with even one link in the approval queue. My blog had been somewhat dormant for the last year, and I guess the spam bots had been lying in wait or something because soon after I started posting again, my database had been filled to the brim with spam in my approval queue, to the point where my host turned off write access!

I looked at various spam deterrants for blogs and found Akismet. It’s not just a blog plug-in, it’s a whole service which continually monitors comments and posts to many different blogs and other sites which accept user contributions. Using this massive amount of data it can quickly learn how to filter out spam, even as spammers come up with new tactics.

Akismet is free for small blogs, though they do ask if you’re making tons of money to use their pay service. Overall it’s a great service for the average blogger. Unfortunately it’s not without its downsides. You do have to send every comment through their servers and you have to trust that they don’t throw out any good comments. I don’t have enough user discussion to test the false positives, but so far I’ve not had any problems.

I installed Akismet on August 11th, and already it’s stopped over seven thousand spam comments from being made on my blog alone! Here is a live counter of spams stopped since August 11th:

Sunday, August 12, 2007

Winter 2.0.2

A user left a comment notifying me about a warning message which would appear if allow_call_time_pass_reference was set to off in PHP settings. I’ve fixed the problem along with a few other minor bugs for this release. I also added a new comment syntax {{#| You comment here }}

Change log:

* Fixed allow_call_time_pass_reference bug
* Fixed bug with <nowinter> tag
* Fixed bug when undefined variables were referenced
* Added alternative comment syntax

Download Winter 2.0.2
Downloaded 300 times

Friday, August 10, 2007

Winter 2.0.1 and Winter manual updated

I finished up the initial stages of the Winter 2.0 documentation today, so now you should be able to fully take advantage of all the new features. I noticed a few minor issues as I was documenting the code so I corrected them and have released the changes as Winter 2.0.1.

Change log:

  • Fixed some bugs with #eval
  • Changed the | (bitwise or) operator to ? since | is a reserved symbol in Winter (can’t believe I missed that one before!)
  • Improved #comment so that it does not evaluate code
  • Improved the escape character system

Download Winter 2.0.1
Downloaded 312 times

Thursday, August 9, 2007

Imageshack toolbar adds itself to Firefox’s ‘User Agent’ identifier

I was poking around in a log and noticed the Imageshack toolbar had added itself to what my browser’s User Agent. Not really a big deal but still not very polite of the developers.

You can remove it by editing your default.js file in

C:\Documents and Settings\[UserName]\Application Data\Mozilla\Firefox\Profiles

and removing this line:

pref(”general.useragent.extra.ImageShackToolbar”, “ImageShackToolbar/4.2.1″);

Saturday, August 4, 2007

Winter 2.0.0

It’s been over a year since I last released an update for Winter. Since then MediaWiki introduced support for parser function extensions, which provide some of the same basic functionality as Winter. Winter code does not interfere with parser functions, and they can be used on the same page, though care must be taken when combining both types of code together.

This new version of Winter has been in the works for a few months now. Many new features and functions have been added, and some bugs have been corrected as well. The program code has increased in size by nearly 80% since 1.5.0!

Download
Homepage on Mediawiki.org
Documentation

About Winter:

Winter is the Wiki Interpreter, a complete programming language plug-in for MediaWiki, the software which powers Wikipedia and many other wikis across the internet.

Change log:

  • Added installation settings $wgWinterMaxNesting, $wgWinterMaxOperations, $wgWinterMaxIterations, $wgWinterNotAllowed
  • fixed bug in operation count which severely under counted operations
  • fixed bug when trying to loop inside of a function
  • added external function definition support
  • improved tag
  • improved error messages
  • added - and $ to acceptable function and variable name characters, explicitly defined _
  • depreciated #define in favor of #str_replace_all
  • added @ modifier for variable assignment operators
  • added < - and <=> variable assignment operators
  • added & | xor < < >> bitwise operators
  • added ^ arithmetic operator
  • added #add, #subtract, #multiply, #divide arithmetic functions
  • added #strtoupper, #strtolower, #ucfirst, #trim, #ltrim, #rtrim, #strip_tags string functions
  • depreciated #default in favor of #set_param_default
  • added #comment as another name for #null
  • added #debug for easy debugging stub display
  • added #rand function
  • added #html_to_xml and #xml_xpath xml function
  • added array variable type (2 dimensions maximum)
  • added #foreach loop construct for traversing arrays
  • added []= and [][]= operators for array assignment
  • added #count, #array_rand, #array_rand_value, #sort, #rsort, #asort, #arsort, #natsort, #ksort, #krsort array functions

Download Winter 2.0.0
Downloaded 379 times

Monday, August 21, 2006

Will Apple (or anybody!) please make a DJ suite for the iPod?

I recently owned a pair of CD turntables.. I enjoyed using them, though they were bulky and the fact that I had to burn all my music onto CDs was annoying. I ended up selling them because they just weren’t what I wanted.

I really wish I could use my iPod like a turntable. The main feature that needs to be added is variable pitch playback — without this, DJs would not be able to beat match. Other features such as ‘virtual nudging’ and BPM counter would also be useful, though not absolutely necessary.

Tempo changing technology is already being implemented in sports oriented iPods which change tempo depending on heart rate, so there is obviously no technical barrier. The iPod scroll wheel is already the perfect input device to represent a spinning disc, and the large screen could be used to display a wide variety of information and even allow the user to see a visual representation of the waveform, similar to looking at the grooves of a record to find song position.

If well implemented, I can truly see a whole new market for iPods. I mean what DJ wouldn’t want to be able to carry his whole setup in his pocket, and be able to use it for personal listening while not performing? Add a hot little white mixer and every trendy DJ on the planet will be snapping up pairs of ‘pods! :D

Friday, June 30, 2006

I got owned by BraveSentry

I wrote this up a few months ago when my machine was infected with BraveSentry.. since then I’ve been able to get my machine back to normal without having to reinstall windows, but it did require me to reinstall SP2 to get my network settings completely back to normal and restore NAT. I intended to document everything needed to restore my machine but unfortunately I didn’t write everything down, so I present this incomplete post as-is in case it is useful to someone. :)

Last night while I was out of the house, my server machine was infected with BraveSentry and a host of trojans. I returned home and noticed my internet was dow, so I checked the server. It was sending out 100s of spam emails, saturating the connection to the point nothing else could be used.

Since the machine was practically unusable, I rebooted. On loading, by background had gone black and an malware warning appeard in the lower right. A program I had never heard of, let alone installed, BraveSentry, was scanning my computer, telling me I had tons of viruses and I needed to buy the product to get rid of them. Yeah right.

Immediately I open the taskbar to kill BraveSentry and check to see if any other programs are running. The Task Manager has been disabled by your adminstrator. WTF. I go online to try to look up help on how clean my computer, and as soon as I log on my computer becomes a zombie spammer again. Reboot.

I was eventally able to clean out my system by checking all of the various places used to start programs on loading, such as HKCU\System\Software\Microsoft\Windows\CurrentVersion\Run and all similar paths. There was also malware in my system.ini file.

One piece of malware actually seemed to add itself the instant i removed it.. for that one I ended up removing it and then quickly turning off the computer. probably not the best idea in the world but it worked.

Once I deleted all the malware, somehow my internet coonection was also removed. I set up a new connection and went online. My first stop was one of those online virus scan sites. But every time i tried to go one, I was redirected to my local server’s 404 page, meaning the sites had been redirected thru my hosts file. Checking the hosts file, it had been completely replaced with a new file. All anti virus sites were blocked, and certain bank sites were redirected.

Editing the hosts file, I was finally able to run a virus scan, where a number of trojans and other malware were found. I also ran an extensive scan from ewido in safe mode, finding even more problems.

Intellectual Plunger

Ok well, it was actually intellectually plunger but hey, you can’t ask for perfection from spam bots and their random subject line generators all the time ;)

Validate XHTML | Word Press