1. Quit iChat.
2. In Terminal, enter this command: defaults write com.apple.iChatAgent iTunesMessageFormat -string ‘%Artist - %Track’.
3. Enter the command killall iChatAgent — this kills iChat’s background daemon.
4. Restart iChat, and choose the Current Track message option.
Fixing the order or iChat’s Track-Artist Auto Status
Deploying PHP on Google Apps Engine
I came across the below article the other day which turned out to be a fun and quick experiment.
Running PHP on Google’s free apps engine opens a door in my mind to a bunch of possibilities. Kicking that door open further is the fact that you can schedule cron jobs on your applications. Nice.
Try it for yourself:
http://www.webdigi.co.uk/blog/2009/run-php-on-the-google-app-engine/
Installing mysqlslap on a MediaTemple DV w/CentOS5
Recently I had the need to determine in a real world test if our App would benefit from changing some of our MySQL table types from MyIASM to InnoDB.
There’s a lot of published theory out there as to when and why to make this switch but I wanted to see real numbers. Of course, I couldn’t interrupt operations on our production machines to test this so we determined that the best alternative would be to emulate real-world usage on our dev machine across two MySQL instances and compare the results. The dev machine in question happens to be a Media Temple DV running CentOS5.
This would involve two steps:
- Creating a 2nd and separately configurable MySQL instance
- Passing custom queries to a MySQL benchmarking tool that could be throttled and display summarized results
Creating a 2nd MySQL Instance
Very simple and straightforward. Follow these instructions on ducea.com.
Benchmarking
I came across a simple and customizable benchmarking tool for MySQL that seem like it will be perfect for this task: mysqlslap.
My server is running MySQL 5.0 which doesn’t have mysqlslap compiled in. If you come across that problem you add it pretty easily - follow James Little’s instructions here. * Be sure to first install the developer tools if you’re on a Media Temple DV machine. You’ll need yum and make to take care of this step.
Once you finish those two walkthroughs mysqlslap is ready to run.
Here’s a basic test example that creates tables and then queries them:
shell> /usr/local/mysql/bin/mysqlslap --user=root -p --auto-generate-sql
Average number of seconds to run all queries: 0.006 seconds
Minimum number of seconds to run all queries: 0.006 seconds
Maximum number of seconds to run all queries: 0.006 seconds
Number of clients running queries: 1
Average number of queries per client: 0
Check out the mysqlslap manual page for all sorts of options. Of particular interest to me was the ability to specify the engine type that is created so you could compare basic performance between table types. And more importantly the ability to pass custom SQL statements and then tell it how many to run and for how long.
So long Adium, I can now use and enjoy iChat
As a recent Mac convert, I’ve been using Adium as my IM chat client mainly because it supports a variety of account types and to be fair, it’s a solid application.
Adium is a free piece of software which unfortunately doesn’t support video chats. When I first bought my Mac a friend of mine showed me the video chat in iChat and I absolutely loved it. Unfortunately for Adium, which relies on libpurple for its protocol-level functionality, video chatting is not an option that looks to be supported anytime soon.
Video support aside, I really like the OS level integration that iChat offers as an app. There are something that iChat doesn’t do or doesn’t do well like tabbed chats, Growl notifications, one contact list window, etc.. but those things can be fixed with an iChat plugin called Chax if you use iChat you should definitely use this plugin. I find it to bring iChat from an app that annoys me to an app that I truly enjoy.
Okay so what about those other services that iChat doesn’t support? Integrating them with iChat has been discussed for a while on lifehacker and other places but the cons & headaches associated with that approach has been more than I care to invest in.
Fortunately for the rest of us setting up a localhost server to achieve similar results is easier than you might think. Following Nathan Toone’s 10 step tutorial allowed my now tricked out iChat app to serve all my IM/chatting needs and more.
iChat = happy
Just Launched: Clover - Websites for Growing Churches
The very talented folks over at Regime Design have just launched their latest product which they call Clover.
Clover attempts to fill an obvious need on the web by providing Modern, Content Management System (CMS) Driven, Attractive Websites to growing churches and ministries at a more than reasonable cost. They are offering their product at a one time fee of $1000 and $20/month in hosting charges.
The Regime Design company brings their well-known and highly respected Flash know how into an affordable product that is totally configurable by the user. If the beauty of this product lies in the output generated through the Clover wizardry the genius of the product lies in the aforementioned CMS.
The CMS system is designed to be managed by the computer illiterate. If you can point, click, type and drag you can change the look of your website in minutes. Check out the amazing video/screencast on Clover’s home page to understand the simplicity of the custom content-management design.
Well done Regime Design, well done indeed. User Interface fans rejoice.
Converting the Firefox History File to Readable Text
I recently found a suspicious entry while browsing my Firefox history data that clearly was a site no one using the computer had visited. I clicked the link to see where it might lead and was prompted to install what was obviously a virus onto my local drive.
That was a new one for me. Being in the computer industry for most of my adult life has naturally exposed me to a number of clever methods for virus and spyware attacks but I’ve never seen a virus attempt to gain a foothold by installing itself an entry into the browser history.
Firefox stores the history data in a file appropriately called “history.dat”; this file can be found in the Firefox Profile folder (XP users, something like this location: “C:\Documents and Settings\Owner\Application Data\Mozilla\Firefox\Profiles\h96641qz.default\history.dat“).
Opening this file in a text editor reveals the MORK file format used by Mozilla which of course doesn’t reveal much to our human eyes. I needed more information about the history entry than this file or even the history sidebar revealed.
Fortunately I somehow stumbled across a simple and lightweight program called DORK which converts the MORK formatted history.dat file into a human readable tab delimited file. Click here to download DORK.
For those that are interested I never did discover how the history entry was added to my data file. It was most likely triggered by a “Pop-Under” window that stayed open just long enough to register itself as an entry. If something like this rears its head again hopefully there will be more information on the net about it and I can dig deeper.
Until then, I’ll continue to keep my system as protected and as clean as possible with free programs and utilities like these:
- Spyware Terminator (free anti-spyware detection)
- Avast (free anti-virus protection)
Getting Started With jQuery
I first played with jQuery a month or so ago but it hasn’t been until recently that I’ve had a need to actually start using it in my applications. Since it was time to get reacquainted with the tool I thought I’d write a brief tutorial aimed at helping those unfamiliar with the jQuery JavaScript library.
What Is jQuery?
jQuery.com says it well…
jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. jQuery is designed to change the way that you write JavaScript.
Let’s Get Started
Enough mumbo-jumbo, let’s jump into things. First of all, you’ll need to download the latest jQuery compressed library from http://jquery.com/src/jquery-latest.pack.js and save it locally so you can reference it within your head tag similar to this:
<script src="your/path/jquery.js"></script>
Just about everything that we would want to do with jQuery will manipulate the Document Object Module (DOM). If we try to touch the DOM before it’s appropriately loaded we’ll get some messy errors. To avoid that, the first Read More
Amazon S3 as a Live Blogging & Digg Effect Solution
A couple of bloggers decided to give Amazon’s S3 service (Simple Storage Solution) a shot at handling the live blogging of an Apple keynote blog. Any site that has tried to handle this in the past has been overwhelmed with traffic and hopelessly crippled.
Their solution was to write a simple admin tool that copied the updated html to an S3 bucket and let S3 handle the load. In a follow-up post the bloggers share more about the experiment and the success they had with it. They also share some impressive Event Stats:
- 7 pictures
- 130 text posts
- 20k visits
- 50k pageviews to the page
- 5M requests - this includes the 15 second content refresh and the images.
- 47GB of transfer
- content was 17k, images were 200k.
Cost for the event: $10!!!! Wow, amazing! The success they had got me thinking about the “Digg Effect” and Read More
Get Live Traffic Data With pMetrics
I installed the site-wide metrics offered by Performancing.com the other week and I must say, I’ve been VERY HAPPY with the results.
One of my gripes with Google Analytics is that you have to wait until 10:00PM PST to get your daily numbers. pMetrics gladly offers live results along with each users action (where they went and from where they came).
The main metrics page shows large graphs for visitor, pageview and the average length in minutes that those users spent on your site. Smaller graphs exist in a sidebar that display what content people visited, incoming links, and top search query leads for your site.
More detailed pages are of course available. Click on “Visitors” for more information about the people visiting your site; “Actions” for more information about what those people did.. My favorite page is the“Spy” tool which allows you to see virtually real time data of user activity on your site. Other pages include “Content”, “Links” and “Searches”. There is even an RSS feed for your statistics (does Google offer that?? I’d have to check).
Interface-wise, I must say that as clean as the layout of the new Google Analytic screens are, I actually think Performancing’s Metrics look better and are even cleaner if you can believe that!
Now don’t get me wrong, I’m not saying that I plan on ditching Google Analytics anytime soon but without question pMetrics by Performancing has become my tool of choice when it comes to analyzing traffic data. Read More
Wordpress Plugin: Readers Also Viewed…
I don’t normally mention anything when I add a new WP plugin to this site but this one is very new and quite useful.
While displaying too many plugins can make a blog look cluttered and unprofessional, contextual internal links can increase your pageviews and make your site flow more intuitively.
If you haven’t already grabbed it, download and install a Related Posts plugin and then install the Where Did They Go From Here plugin.
Where Did They Go From Here is very similar to the Amazon list that say something like, People who Bought this Also Bought…
Basically, once installed it can track where users click after they have viewed one of your single posts. Unfortunately.. there is no relationship between this plugin and the Recent Posts plugin so you will often see duplicate links across the two lists.
Installation is routine (follow the instructions on the plugin page) except that the plugin attempts to hook into the WP footer and display itself just before the comments. This type of installation will probably work for most people but I found it to result in a badly displayed page when applied to my severely hacked theme.
The fix is simple however, all I had to do was comment out this line in the plugin:
add_action(’comment_form’,’show_where_they_go’);
And add a function call to single.php just above where I placed the Recent Posts call:
<?php show_where_they_go();?>
That was it! The content will start populating once people begin to click away from your single post pages. I highly recommend this plugin!
