Serendipity (S9Y) importer for WordPress Serendipity (S9Y) importer for WordPress
  • Home
  • Posts
  • Home
  • Posts

Archives

Serendipity (S9Y) importer for WordPress

Update 2: Jon reports that he’s improved on Carsten’s 1.3 version, and has released Version 1.4!

Update: Carsten Dobschat has continued the fine tradition and improved the importer further, adding support for extended posts, and tags.  Grab S9Y importer version 1.3 over at his site.

In the process of merging this site from Serendipity over to WordPress, I came across an importer which lets me migrate the data across. Unfortunately it was a bit buggy, not properly assigning categories and timing out when processing the post data.

I made some improvements, and here’s the new version, if anyone else finds it useful:

Version 1.2 of Serendity importer for WordPress (patch)

Read More

Replacing the existing Leopard PHP installation with a more complete version

The good folks at entropy.ch have packaged up a pre-compiled version of PHP to replace OS X 10.5 Leopard’s barebones installation. The entropy.ch build contains most of the good stuff that the Apple folks in their infinite wisdom didn’t see fit to include – entropy-phpinfo.pdf

See the instructions at Entropy’s forum, or read below.

sudo mv /usr/local/php5 ~/Desktop/php5.old
curl -O http://www2.entropy.ch/download/php5-5.2.5-6-beta.tar.gz
tar -xzf php5-*-beta.tar.gz
sudo mv php5 /usr/local/
sudo ln -sf /usr/local/php5/entropy-php.conf /etc/apache2/other/+entropy-php.conf
sudo apachectl restart

Read More

Convert text to iTunes audio book

200805071617.jpgAfter reading a hint on macosxhints on how to create an audio file from text, because I wanted to keep reading my book while I was driving, and figured that holding the book in front of me probably wasn’t the best option, I figured the process could probably be streamlined a bit.

So, I’ve made a service which appears in the Services menu and operates on selected text. So, select it in Safari, or from an eBook in Preview (or Textedit if it’s just plain text), and click ‘Speak to iTunes Audio Book‘ to speak the text into a track in iTunes that will appear in ‘Audiobooks’.

Read More

Nasty long sleep times with SleepWatcher

If you followed my prior hint on automatically ejecting volumes on sleep (@ macosxhints), I’ve just discovered that SleepWatcher adds about 30 seconds to the time taken to sleep. This has been a big frustration to me over the last month or so, and now I know why.

I’m removing the utility – I’d rather shorter sleep times than automatic volume ejection. What a shame, though.

Incidentally, while we’re talking sleep, recent Macs also save the contents of RAM onto disk when they sleep. For the purposes of comparison, my 2 Ghz Macbook Pro with 2 Gb of RAM takes about 18 seconds to sleep. There are a variety of ways to alter sleep behaviour, but the easiest is the SmartSleep utility, a preference pane that handles it for you.

My favourite feature is its namesake, smart sleep, which will only do a hibernate if the battery is below a pre-set level (default 20%) – that means fast sleep until it’s a good idea to actually backup the session to more long term storage, when the battery is about to fail. Voila, simultaneous cake have-age and eat-age.

Read More

Automatic genre identification and ‘similar track’ matching

200804101846.jpgI’ve got a bit of new music lately, and I’ve noticed that the genre is always a bit off. Genre is a pretty tricky thing to figure out for most modern music, as there’s so much ‘cross-pollination’ going on in the music world. Additionally, over a single album, several genres may be visited (eg. folk, acoustic, pop).

There’s no way anyone’s going to go through every track independently and assign a genre (unless they’re seriously O.C.D). So, automatic genre setting (a new AutoRate feature?).

It looks like there has been some work done in the field, although it looks like it’s all still at the early-research stage; I haven’t found any available software. So there’s another possible project.

Another use could be to build a database of tracks in the local music library, and offer similar tracks when playing, constructing an automatic playlist. The same could be done with an online database, similar to Pandora.

Read More

Automatically eject all disks on sleep, reconnect on wake

sleep-macbook.png

Using a laptop with permanent external drives can be a bit annoying when you leave the desk – you have to manually eject all your devices, otherwise you get that dreaded ‘Device Removal’ dialog. With a little bit of Terminal magic, you can automatically eject disks when you sleep the laptop, meaning you can just put the lid down and go. Disk are also reconnected automatically on wake, for when you’re just sleeping the computer without going places.

It’s all thanks to a little utility by Bernhard Baehr called SleepWatcher, which runs in the background and is triggered by sleep and wake events, calling scripts to perform required actions.

Download and install SleepWatcher and its StartupItem.
Next, you’re going to create ~/.sleep and ~/.wakeup files which SleepWatcher will call upon. Pull up your favourite text editor and paste the following in (should be just two lines):

#!/bin/sh
osascript -e 'tell application "Finder" to eject (disks where free space ≠ 0)'

Save the file – call it “sleep.txt”, and save it to the Desktop; make sure it’s plain text! Then put the following in another file, called “wakeup.txt”, saved to Desktop too (also just two lines):

#!/bin/sh
/usr/sbin/diskutil list | grep -e ' +[0-9]+: +[^ ]+ [^ ]+' | sed 's/.(disk[0-9].)/1/' | xargs -I{} /usr/sbin/diskutil mount {}

Next, open the Terminal (Applications, Utilities, Terminal), and type the following:

mv Desktop/sleep.txt .sleep
chmod a+x .sleep
mv Desktop/wakeup.txt .wakeup
chmod a+x .wakeup

Now, whenever you sleep your machine, the external drives will be ejected automatically; when the machine wakes again, all connected external drives will be reconnected.

Read More

Memory tricks: Linking it in

23112370.jpg

I tend to have an appalling memory for performing tasks, unaided by beeping alarms – I get lost in the moment and it just goes out of my head. A trick I found many years ago works surprisingly well, though, when I actually remember to use it (of course, that’s the real trick).

Memory recall in people (or at least me!) seems to work a bit like it does in a computer. If you don’t have anything to link that memory region to something, it’s probably lost forever. In computers, you keep track of addresses of things in memory (we call them ‘pointers’, numbers that point to memory). If you don’t keep a pointer, there’s no way to access that region in memory, because you don’t have its address.

This is more-or-less what I do when I don’t put special effort into remembering to perform a task. Usually, we just acknowledge that there’s something that needs doing, at some vague time in the future. This is like storing something in memory, but throwing away the pointer. What’s the point in that? (What are you looking at me like that for? Oh, point…)

So, keep the pointer: link the memory in to something. When you have things to do, assign a time to perform them, and picture what you will be doing around that time. For example, I’ve been having trouble remembering to buy these Daniel Kitson tickets. I pictured myself walking through the door to the study, and then remembering. Sure enough, in the morning, I walked in, and suddenly it was in my mind. I only hope we manage to get tickets that aren’t marked “RESTRICTED VIEW INFORM PATRON”…

Next is using magnetic pulses to counteract the effects of sleep deprivation on working memory…

Read More

PHP debugging

php-debug.jpgManaging PHP debugging can be tricky as, by default, errors and test ‘echo’ statements can be lost along with all the other output. This problem is compounded when using AJAX, and errors can turn up in XML streams, causing all sorts of problems.

A better solution is to redirect all of that output into an external file, and use a tool like tail to monitor the log.

For printing debug statements, a debug function that shows where each statement came from (file and line number), and is capable of printing complex objects is useful too.

The following is the debugging code that’s included in SiteComponents.

if ( defined("DEBUG_ENABLED") )
{
   ini_set("error_log", $_SERVER["DOCUMENT_ROOT"]."/debug.log");
   ini_set("error_reporting", E_ALL);
   ini_set("display_errors", false);
   ini_set("log_errors", true);
}

/**
 * Define debugging routine
 */
function SCDEBUG($content="")
{
    if ( !defined("DEBUG_ENABLED") ) return;

    if ( !array_key_exists("__SCDEBUG_fd", $GLOBALS) )
    {
       $GLOBALS["__SCDEBUG_fd"] = fopen($_SERVER["DOCUMENT_ROOT"]."/debug.log", "a");
        if ( !$GLOBALS["__SCDEBUG_fd"] ) return;
    }

    $bt = debug_backtrace();

    if ( is_array($content) || is_object($content) )
    {
       $content = print_r($content, true);
    }

    fwrite($GLOBALS["__SCDEBUG_fd"], 
          ($bt[0]["file"] ? (substr($bt[0]["file"], 
                strlen($_SERVER["DOCUMENT_ROOT"])+1).":".$bt[0]["line"]." (") : "").
            $bt[1]["function"]."()".
          ($bt[0]["file"]?")":"").
            ": ".$content."n");
}
Read More

Hi! I'm Michael Tyson, and I run A Tasty Pixel from our home in the hills of Melbourne, Australia. I occasionally write on a variety of technology and software development topics. I've also spent 3.5-years travelling around Europe in a motorhome.

I make Loopy, the live-looper for iOS, Audiobus, the app-to-app audio platform, and Samplebot, a sampler and sequencer app for iOS.

Follow me on Twitter.

Posts pagination

« 1 … 29 30 31 … 34 »
© 2021 A Tasty Pixel.