FXScript Reference comments are enabled again

I turned on comments again for The FXScript Reference, hopefully the spammers won’t show up right away.

24 hours later… It only took four hours for the first drug spams to appear, four in 24 hours and zillions of referrer hits.

This time I’m going to try something different. Almost everything is posted to the k30fps constant, which isn’t particularly interesting, for whatever reason the spammers are pounding that page. So I’m reassigning k30fps which will change its url, I’m also and adding a custom rule to 403 that page. (otherwise they’ll bring down my 404/search page).

The vengeful part of me would love to forward the spammer’s requests to some huge file or link to their Windows Registry or something. But I’m not going to waste someone else’s bandwidth and I don’t want some innocent user to end up borking their registry because of me. Akismet, someday.

Share |
Leave a comment
link: Apr 16, 2006 3:04 pm
posted in: Uncategorized

FXScript Reference comments disabled due to spam

The FXScript Reference site is 100% scratchbuilt. I created it partly to teach myself more practical PHP and MySQL skills and shunned any existing code snippets or libraries. Yet the site and my home-built commenting system is getting pounded with spam.

How is this happening? It’s the usual crap; laser this, cheap pills that, a bunch of links that were scuttled by my post-cleaning routines, fake comments with links to casinos and porn. The spam is coming from different IP addresses each time, usually from India, Russia or Columbia. All spam comments were posted using Firefox.

The k30fps entry has been taking the brunt of the spam (72,000+ hits vs a normal average of 2500-3000 hits for other items?).

I set up a quick log to collect all $_SERVER and $_POST data for any comments posted, to see what was happening. I was hoping something would stick out like curl or some unknown referrer page. No such luck, everything looked normal, the most troubling thing was the user agent:
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10

I suspect there is a hacked Greasemonkey script out there which exploits HTML form auto-entry to insert spam comments. There’s not much I can do about blocking that.

Traffic has been low recently, except for the spammers, so I’ve unfortunately decided to turn off comments for the time being. Maybe the lack of exploitable forms will get me off the spam list. When I have more time I will try to hook into Akismet. Since turning that on for my WordPress site I have not had to manually delete a single spam comment.

If anyone has something they’d like to contribute, send me an email and I’ll either post it for you or open the site a window for posting.

**Update** Comments are on again.

Switching to TextMate

I’ve been watching TextMate since late 2004. My first reaction was similar to Michael Tsai’s observations around the same time; “not quite right.”

That’s all changed.

I love BBEdit. I bought my first copy at MacWorld Boston in 1994 or 1995, from Rich Siegel’s own hands. I still have the “BBEdit: It Doesn’t Suck” t-shirt that came with it. Having used that tool day in and day out for over a decade, it holds a very real personal attachment.

The latest thing that got me to try TextMate again (at least the fourth time I’ve done so), was Giles Turnbull’s MacDevCenter post. Nothing specific, just a reminder that it was still there, still being actively improved and that I was still lusting after section folding. Giles summed it up well:

BBEdit, which I’ve been using for the same task for some years now, has done nothing to annoy or frustrate me. There’s nothing about it that I particularly dislike.

But TextMate offers everything I like in BBEdit and plenty more.

One key thing BBEdit offered was a simple interface for mapping languages. I created a “codeless language module” for FXScript which has been working well for the past year. While on vacation, under the guise of intentionally avoiding work related stuff, I started fussing with and deconstructing TextMate’s language bundles. After about an hour, I had the guts of an FXScript Bundle working. The depth of what’s possible with TextMate is astonishing. Not only was I able to map FXScript completely, I could also do silly things like color-code class syntax for RGB color variables, ie someColor.r. Functions mapped correctly without hacks, even when smashed onto one line, and they fold! (I’m going to test the FXScript bundle out for a bit before making it public)

Creating bundles in TextMate had a steep initial learning curve, despite my being pretty good with regular expressions (I learned regexes because of BBEdit). The most damning thing however was figuring out how to save them. Bundles don’t offer a save dialog or any sort of modified indicator, and they seem to only write out changes when TextMate quits. I learned the hard way to quit and restart the application frequently, bad language rules would cause crashes and I’d lose whatever I had gotten working since the last application launch.

What TextMate appears to lack in AppleScript support it more than makes up for with internal macros and shell commands. I’ve been moving the Joe’s Filters documentation from semi-static PHP files into WordPress. Manually, each page took 10-15 minutes. Using AppleScript and BBedit, that was down to 2-3 minutes, most of which was cursoring around. However with a few macros in TextMate and one dozen-line AppleScript, I was able to convert 30+ files in less than 30 minutes.

I still have a few custom AppleScripts I need to translate from BBEdit to TextMate, but seeing as how those are mostly wrappered shell commands, it shouldn’t be too difficult.

The FXScript Reference is back

Several weeks ago I had to take down the FXScript Reference site due to a runaway script resulting from a bad database query and excessive spamming. I had actually left myself a note in the PHP comments that read “this might cause a slowdown in the future…” It did. I got a chuckle from that.

In addition to bringing the site back online, I also added something I’ve been wanting for a long time; an RSS feed of recent comments. This will help me keep track of site activity (soon to be a recurring theme), and might be of interest to some of the site’s other users as well.

Share |
Leave a comment
link: Nov 13, 2005 4:26 am
posted in: Uncategorized

New FCP/FXScript bug with 10.4 Tiger

I installed Tiger on April 29. My existing 10.3.9 installation was fully backed up to a bootable Firewire drive, so I wasn’t worried about losing anything or reverting. Despite having developer access to 10.4 for almost a year, I didn’t run it on anything but a beaten-down iBook, and really didn’t spend much time with that either. If I were only doing FXScript, I probably should have waited until FCP 5 shipped before moving up, but I need to know about 10.4 in I can answer questions and eventually upgrade the machines at IOP. Mostly though my curiosity had me installing Tiger right away.

The first thing I noticed when I opened FCP4.5 in 10.4 was the wrong color debugging text in the filter I’ve been working on for the past few weeks. What should have been white was yellow, with chunky pixelated edges. This caused a small amount of panic while thinking all my text-drawing routines would be broken. (they weren’t)

What I’ve found is that DrawString and DrawStringPlain break when applied to an FXScript image buffer which has been affected by several FXScript image processing functions, this one used LevelMap. It doesn’t make any difference whether the levelmap changes anything or is a clean linearRamp passthrough. The problem only happens in ‘naive’ color space, that pseudo-RGB space FXScript uses when YUVaware isn’t declared at the beginning.

Here’s what the text looks like in FCP4.5 running under 10.3.9 with QT6.x:
FCP4.5, QT6, 10.3.9 - correct

And here’s the same text in FCP4.5 running under 10.4 with QT 7:
FCP4.5, QT6, 10.3.9 - wrong

There’s one other wrinkle, enabling transparency with exposedbackground=1; causes several of DrawString’s outputs to disappear while DrawStringPlain’s results punch out to transparent.

It’s not just white that’s affected. Here’s a quick chart of what happens to the various color constants:

Color DrawString DrawStringPlain
kBlack invisible blue*
kWhite yellow w/ white edges white
kGray dark yellow w/ gray edges pale bluish violet
kred black w/ blue edges blue
kGreen invisible magenta*
kBlue invisible Cyan*
kCyan invisible white*
kMagenta green w/ cyan edges cyan
kYellow red w/ magenta edges magenta

* transparent

I tried a bunch of other generative functions; FillPoly, DrawSoftDot and BlitRect, but none of those showed any adverse effect. Other processing functions did produce similar results. Several Convolve kernels caused problems, but it was hard to pin down when they’d break.

So the solution is to just set the effect to be YUVaware. The good side of all of this is that working in YUVaware generally gives effects a measurable speed increase. Still, this problem does cascade through subsequent effects, so it’s something to watch out for.

FXScript Text Icon Download the simple filter I used to isolate the problem: LevelMap & DrawString Color Bugs.fxscript (1k) Please let me know what you see if you try it out.

Disclaimer: This effect simply demonstrates a visual problem with FCP 4.5HD and MacOSX 10.4 Tiger. It can’t damage your computer. Still, this is offered as-is, with no warranty of any kind, implied or otherwise.

Share |
2 Comments so far
link: May 05, 2005 6:48 pm
posted in: Uncategorized


Person A, whom I met at NAB and enjoyed spending time with, tells a very ugly story about the actions of Person B, who I have not met. Having talked at length with Person A, I believed his story. Apple and several other people I trust also believed Person A’s story.

Based on others’ conclusions I made a quick decision to de-link Person B from the FXScript Reference site when I had brief internet access. At the time I wondered if that was the right thing to do, what the repercussions would be and whether or not that was even the right decision having only heard one side of the story. Shortly after I removed the link, Person B wrote me and asked what I’d been told then denied everything in advance.

This sucks.

I only know one person’s story and the other person’s denial of that story. And I want nothing to do with this.

The following four scenarios are all possible:

  1. Person A is telling the truth, Person B is a liar.
  2. Person A is a liar, Person B is telling the truth.
  3. Person A and Person B are both lying.
  4. Neither Person A or Person B are lying.

Conclusions 1 and 2 seem most plausible. Since it seems certain that something bad happened between Persons A and B, I decided the best immediate course was unfortunately to de-link everyone from the FXScript Reference, at least for now.

The question of what to do seems to come down to potentially rewarding someone who doesn’t deserve it. By only de-linking the two people involved, the person in the right is unduly tarred with their accuser. Linking everyone ignores what is obviously a bad situation and rewards whoever is guilty. De-linking everyone seems more fair than either of the two above options though drastic and personally disheartening. This negatively affects all the others who have nothing to do with this, but I just don’t see any other ethical resolution. I am open to suggestions.

Since our session, the remaining panelist was also contacted by Person B. My first impulse is to go completely transparent, post everything and absolve myself of any position. But the charges are very serious and there is an ongoing legal case, so it would be inappropriate for me to represent any information. Since I have already acted once, I will post my reply to person B in it’s entirety:

I am sorry about the de-linking. It was a rash decision made between sessions at NAB with 10 minutes of internet connection. Until I know the full story of this disagreement, I’m taking down all links to everyone but myself. I’m not happy about that, but it seems like the correct thing to do based on limited knowledge.

Since you seem fully aware of what you’re being accused of and who is involved, I would appreciate hearing your side of the story. I do not feel comfortable disclosing anything I was told. I’ve already mistakenly appeared to take sides and I do not want be involved with these accusations in any way.

I have spent a great deal of time trying to create a small community around FXScript and it greatly saddens me to see this happening.

I look forward to your reply,

Joe Maller

As stated in that reply, I have put a lot of energy into building a small community around FXScript. NAB’s third-party plugin session was my idea and something I worked towards for months and helped organize. Since I first published my notes about FXScript at least a half-dozen new products have been created using the language and countless others have added hacks and modifications to their FCP workflows. Many of those people have written to thank me for helping out. That means more to me than I can say and keeps me going in spite of stuff like this.

Share |
Leave a comment
link: Apr 22, 2005 8:54 am
posted in: Uncategorized

Joe’s Filters at NAB

Plug it in: Third-Party Filters for Final Cut Pro


This will be the first time we’ve all been together and should be quite a session. Topics will include plugins, workflows, FXScript (very briefly), ideas for future effects and where plugins are going in FCP.

I’ll be in Las Vegas from Tuesday morning through the FCPUG meeting Wednesday night.