Change of address

November 7, 2009

From now on anyone wishing to follow my antics, rants and ramblings should direct their browser to http://barbedwirebytecodebaconburger.com since I will no longer be updating the blog here at WordPress.com.

That’s http://barbedwirebytecodebaconburger.com people! Learn it, live it, love it!

END OF LINE

Advertisements

Migrating an old MS Access database to MySQL [UPDATED]

August 3, 2009

I’m in the process of migrating an old website I made almost 8 years ago from it’s current unbearable platform of Windows, ASP and MS Access to some sort of *nix, PHP and MySQL. Tonight I decided to combat that MS Access database and transform it into a real database. To help me accomplish this I used the excellent tools provided by the mdbtools project.

First I had to export the schema of the database to a format readable by MySQL:

mdb-schema -S mydb.mdb mysql > mydb.sql

This creates an SQL-file containing the schema in plain readable SQL. Very nice.

Next I had to export the actual data from the tables in the MS Access database, like this:

TABLES=`mdb-tables mydb.mdb`
for T in $TABLES; do
mdb-export -I -R';\n' mydb.mdb $T >> mydb.sql
done

The first line stores the names of all the tables in the variable TABLES. Then I simply loop through all of them and execute the mdb-export command on all of them, writing the output to the end of the schema-file.

In case I need to do this again in the future I put it all together in a script like this:

#!/bin/bash
DBFILE=$1
OUTFILE=$2

#Check for correct number of arguments
if [ ! $# -eq 2 ]; then
echo "Usage: access2mysql.sh DBFILE OUTPUTFILE"
echo "Example: access2mysql.sh msaccess.mdb mysql.sql"
exit 1
fi
#Check that DBFILE really exists
if [ ! -f $DBFILE ]; then
echo "$DBFILE does not exist."
exit 1
fi

#All is good, here we go!

#Create schema
mdb-schema -S $DBFILE mysql > $OUTFILE

#Export table data
TABLES=`mdb-tables $DBFILE`
for T in $TABLES; do
mdb-export -I -R';\n' $DBFILE $T >> $OUTFILE
done
#Clean up some Windows-character stuff
dos2unix $OUTFILE
exit 0

Now all I have to do is create a MySQL-database and write my newly created SQL-script into it and I’m good to go!

UPDATE:
Before I could get the SQL-script to work I had to fire off a couple of sed-statements to fix the fact that I had used some illegal words as names for some of the table-columns, “type” and “condition” to be specific. No biggie though. Also, mdb-schema didn’t add “AUTO_INCREMENT” to the fields that were auto incrementing in the MS Access database so I had to do that manually.


Crowdsourcing your iTunes music with PHP, AppleScript and Twitter

February 20, 2009

The other day I was catching up on the last few episodes of Hak5, one of my favorite internet-TV shows, and in one episode Darren Kitchen was doing some neat tricks with PHP, Twitter and VLC. This got me thinking about what other kinds of fun projects Twitter could be used for.

Twitter is a great service, not very reliable however (fail whale anyone?), and there are already plenty of mash-ups that uses it for various things. My idea was to use Twitter to select what plays in iTunes. People could send me replies with songs in them and if the song was in my iTunes-library it would be played, as simple as that. Not very useful, but a fun experiment if nothing else. So I started coding.

In order to control iTunes I had to delve into AppleScript for the first time. I find it to be an odd language, but whatever, for this project it’s definitely the most appropriate choice for getting quick results. One of my favorite languages is PHP so that’s what I chose for the control structure of the whole thing.

A couple of hours later I had my first prototype and now an additional few hours of tweaks I give you… TwitTunes!

This is how it works:
Person #1 starts TwitTunes on his Mac. TwitTunes sends a tweet – “#TwitTunes starting” – using Person #1s Twitter-account to let the world know that it is running.
Person #2 sends a reply on Twitter containing search words. These search words are then used to search through Person #1s iTunes-library and the first matching song found is played.

Not very fancy and far from perfect, but admit it, crowdsourcing your jukebox via Twitter is a pretty nifty idea and this is my very first proof of concept 😉

If you wanna try out TwitTunes yourself you can download it here (sloppy source code included of course), and if you have any feedback I’ll be happy to hear it.


Updated my Twitter-widget

September 4, 2007

If anybody gives a shit I updated my Twitter-widget tonight. It now parses URLs in the text and turns them into links, and I also tweaked the CSS a bit.

You can download it from the same ‘ole place. Enjoy!


Twitterer and widget maker

July 17, 2007

The past couple of days I’ve been playing around with Twitter and it’s API. It’s pretty simple to use, hardly astrophysics or anything, and with the widget for Blogger looking like ass I decided to hack my own. And so I did.

The fruits of my labour are plainly visible to the right in this blog. It’s nothing fancy, just some basic HTML, CSS and Javascript, but I think it looks pretty good. And if anybody gives a damn the code can be downloaded from here.

In the days ahead I’m gonna pleasure myself (oooh…) by writing a Twitter-applet for the Gnome desktop as well. Now don’t misinterpret the sudden focus on Twitter. I don’t think I’ll ever be an avid twitterer (is that a word? probably not) and I’m not exactly falling head over heels with excitement over the thing. I just wanna play around with some free API:s, and for that purpose this one is as good as any. Also, anything that allows me to interact using the command line gets a “yay!” from me.

curl -u someaccount@somedomain.com:somepassword \
-d status=Posting+to+Twitter+using+curl+is+teh+shit%21 \
http://twitter.com/statuses/update.json

Spicing up your e-mail signature for fun and… well… fun!

March 21, 2007

Recently I got tired of my e-mail signature always looking the same. It bored me but I’m a bit too lazy to be changing it myself very often. So I figured out a way to spice it up a little and make it update itself automatically.

The tools I used for this tiny little project was the neat little application fortune and cron.

If you’re using any sort of real operating system you already have cron installed. Chances are that you have fortune as well, but if you don’t it shouldn’t be very hard to find from some repository or other download source. If you are, like me, a Fedora Core user you will find it in the extras repository.

What fortune does is that it outputs a random quote taken from an installed database of quotes. There are plenty of funny and interesting quotes available for inclusion in this database, such as quotes taken from movies, books and TV-shows.

So I simply wrote a bash-script that takes a base signature, which in my case contains some contact information and the URL to my GnuPG public key, adds this to the output from fortune and stores it all in a simple text file. The resulting file is what I then tell my e-mail client to use for a signature.

The script looks like this:

#!/bin/bash
SIGN_DIR=/home/hayabusa/documents
rm -f $SIGN_FILE/mailsignature
cat $SIGN_DIR/basesignature > $SIGN_DIR/mailsignature
fortune >> $SIGN_DIR/mailsignature
exit 0

So as you can see, nothing fancy at all.

Then to make the signature change once every fifteen minutes I added this row to my /etc/crontab:

*/15 * * * * hayabusa /home/hayabusa/bin/mailsign_maker.sh >/dev/null

Now let’s see for how long this keeps me “not bored” with my e-mail signature 😉

Oh, and by the way, I realize I am far from the first that’s done something like this. I just figured I might not be the last wanting to do it either.