"Gleaming the Tubes"

I’ve done raster graphics editors in a number of environments and after the ImageBooth JS experiments went so well, I decided to do a little cleanup in Datalus to create a simple backend to turn the demo into something useful.

After another week working on the ImageBooth JS port, I’ve had a number of successes so almost all the core interfaces are available, and there is now a brushing system which doesn’t exist on the PHP version. Go ahead and check out the demo(works under webkit, slightly janky under FF, not working under IE).

So, the need came up for me to dump data from my XeLaTeX environment into a Wiki, but I want to continue to master the the document in TeXShop, but the wiki needs to stay up to date, so the only thing for it is to create an exporter. So that’s exactly what I did. There are two distinguishing features in comparison to other solutions is I provide solutions for both my custom imgfig macro and includegraphics, using a base directory (though you have to get the graphics there yourself). The second is I support includes, which I use in my documents frequently. It’s currently pretty light on various syntax and doesn’t yet support math or recursive includes, but I’ll add that soon. I also want to support pushing the data into the wiki itself in subsequent versions. But for now the format is:php latex2wiki.php [tex file] [graphics directory url]
Go grab it here.

So, as a not-so-secret side project I’m porting pieces of the Protolus/Datalus foundation to Javascript for great awesomeness, looking to the day when client side view rendering ascends to it’s rightful throne. Until then, it means I’m doing all kinds of awesome experimentation while porting these components. I’m currently working on a port of ImageBooth to Javascript, which I will then wrapper in a much more useful demo app. But I just wanted to share the reality of doing convolutions live, in-browser. No time for any detailed code, but if you’re feeling wiley, it’s quite readable.

So, yesterday I sent a note about my blog to Martin Pittenauer, developer of SubEthaEdit. OK, yeah… but that’s not the strange part. So later on, I was looking for a tool to convert SVN logs to pretty printed html. After a few minutes of looking, guess who built an XSL script to do that very transformation. It was a few years old, and SVN’s XML format has apparently moved on, but a few tweaks got it back into shape. I offer this here as an updated version of his original.

A lot of people on OS X use TextMate, and I respect that. It’s a full featured editor which everyone loves due to it’s ‘project drawer’ which allows you to browse a directory of files right in the sidebar of the window. I have experienced a lot of pain over the years so my likes and dislikes are more at a ‘file’ level than a ‘project’ level. I want an editor, that will read mixed line endings and, if I add a line, will not reformat the line endings in a file. It must be able to switch character encodings at will. It must be stable, it can’t consume a large memory footprint over time and it must open large files. All of these things have led me to SubEthaEdit, which I have been using since the days it was known as ‘Hydra’ It’s a fantastic editor which, through applescript, may be customized as you see fit.

Often when using a dev machine, your checking some shared logs for output about your specific process, turning a singlethreaded process into a mutithreaded output buffer. Not something that increases my sanity level. Instead of deal with that, I just wanted to filter out any traffic that isn’t from whatever IP is bound to the shell connection. After a little bit of RegEx and pipe magic I got it:

At some point I grew frustrated with PHP not being able to catch fatal errors, so I set out to see if it was possible with the current PHP feature set. The problem is that if an error is considered fatal, php bails and leaves you with no page or a partial page. Now we aren’t going to be able to use the traditional error handler interface, but what we will do is use it to catch any errors we can, also we need to mark the output buffer, so we can empty it later. This will allow us to register a shutdown function that will look into the output buffer and see if we have an error output (we will leave php outputting errors to ensure this). If so, we’ll eat the content of the output buffer and dump our error page.

So, I’ve worked in a number of loose environments, and there tends to be some concept of recurring topics wherever I go… even more, there’s always that guy who sees that flicker of interest die in your eyes but still bravely forges ahead with the conversation. A coworker had probably the most effective blockade for this, he’d start on what I called the “soup talker” story. It started with him explaining about his overeager coworker from a long past job and how much that guy loved soup. Just couldn’t get over it. Wouldn’t quit talking about it. But as the story progressed, you got the uneasy feeling that you had become the soup talker, and indeed, he would used that story, like Pavlov’s bell to cause the other party to end their long winded diatribe. So I took it upon myself to write this script, so the world never had a shortage of talk about various soups, in honor of windbag coworkers.