View xdebug cachegrind files on Mac OS

Xdebug is key when it comes to optimizing PHP code. Today, I heard my colleague boot up a Windows machine just to run an application that could interpret a cachegrind file generated by our development server… surely there must be a Mac equivalent! The following instructions will let you interpret cachegrind files locally on your Mac. Continue reading

Tutorial – How to set up BitTorrent Sync on a Linux server to create a Dropbox-like syncing solution

btsync_diagram

Update (August 28th, 2013) : The iOS BT Sync app is now available for download. Try it out!

BitTorrent Sync (BTSync) is a “Private Dropbox” of sorts in that it offers the same functionality (syncing your files across devices) but without going through a third-party’s servers. Mac and Windows clients are available for download and have some nifty features such as one-time share keys and read-only syncing options. The advantage of BTSync is better handling of large files (especially if you sync across multiple devices) and you don’t have your files hosted on someone else’s server(s).

The advantage of Dropbox is that should you lose all your machines that were syncing to Dropbox, you would still have a copy in the Cloud that you would be able to download on a new machine. This is undoubtedly BTSync’s biggest disadvantage if you don’t have at least two machines on all the time. If, however, you have a server, you can set up BTSync on that server thus creating your own “always-on” sync machine that will create a copy of the files you wish to sync immediately. Let’s get started…

Continue reading

Network Link Conditioner Built right into iOS6

A few months ago, I discussed how you could use the Network Link Conditioner on your Mac to simulate different network connections. As of iOS6, Apple has added a Network Link Conditioner right into the OS meaning that you can set the quality of the network you wish to simulate right from your device allowing for even more accurate testing.

Continue reading

Fix “/tmp/.tmp.err” error on your website

I woke up one morning to find that all the websites hosted on my server (VPS-based) were returning an error that looked something like this :

Warning: Unknown: SAFE MODE Restriction in effect. The script whose uid is 10012 is not allowed to access /tmp/.tmp.err owned by uid 0 in Unknown on line 0
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0
Warning: Unknown: SAFE MODE Restriction in effect. The script whose uid is 10012 is not allowed to access /tmp/.tmp.err owned by uid 0 in Unknown on line 0

Fixing this turned out to be quite easy but not necessarily obvious.
Continue reading

Fixing a broken iMessages Beta that won’t start

I currently use Lion on one of my machines and still use the beta version of iMessages. As any beta, it has its bag of issues but overall, it’s very stable. That being said, I ran into a situation this morning in which one of my conversations was constantly showing an unread message. Naturally, I tried restarting the app in hopes that this would fix this issue only to discover that I could no longer see my conversations window or start a new conversation at all. It’s as if the program was stuck. Restarting multiple times and re-installing did not help.

Long story short, the simple solution was to launch Activity Monitor and kill a process called imagent. As soon as I did that, all my previous conversations re-appeared and everything was back in order.

[PHP] Faster array lookup than using in_array()

If you use arrays in PHP, one of the most common tasks you’ll find yourself doing is determining if Item A is in Array X. The function you would probably use in this case is PHP’s in_array.

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

This function works great and I recommend sticking to it when it makes sense. However, when you’re dealing with a very large haystack and need to run in_array() on thousands of values, you’ll discover that in_array isn’t particularly fast when cumulated over thousands of calls. Having recently run into this situation, I set up a little experiment to try two different approaches to in_array().

Continue reading