Install this kernel driver so OS X can monitor the S.M.A.R.T. diagnostic data for external drives

EDIT: Sorry to say that it appears this no longer works in MacOS. Every time Apple upgrades MacOS, things that formerly worked perfectly seem to break, and this program is one of those things that apparently no longer works. The code is available on GitHub, so if you care and if you are a programmer, maybe you can fork and fix it.

If you use OS X and have ever gone into Disk Utility, you may have noticed that OS X cannot monitor the S.M.A.R.T. status of external drives connected via USB or Firewire. To fix that, all you need do is install this kernel driver:

S.M.A.R.T. for USB and FireWire Drives (MacUpdate)

S.M.A.R.T. Status - VerifiedAt the time we are writing this article, there are two versions available, “Stable” version 0.8 and “Beta” version 0.9. We went ahead and installed the 0.9 beta on a system running OS X Mavericks. At first, when we fired up Disk Utility and looked at our external drives, it didn’t appear that the driver had worked — it still showed “S.M.A.R.T. Status : Not Supported” for each of the drives. But then we discovered the secret — after installing the driver, you must unmount each of your external drives, then power cycle them. That is, actually disconnect the power to each drive for a few seconds, then reconnect it. When it powers back up, OS X should automatically detect and remount it, and then if your drive is supported, you should see “S.M.A.R.T. Status : Verified” for that drive in Disk Utility.  It is NOT sufficient to unmount and remount the drive, you must power cycle it. Alternately, a full system reboot would likely also work.

Unfortunately, this driver will not work with all external drives. The project page (where the source code is available) notes:

This is a kernel driver for Mac OS X external USB or FireWire drives. It extends the standard driver behaviour by providing access to drive SMART data. The interface to SMART data is same as with ATA family driver, so most existing applications should work.

The driver requires a SAT (SCSI ATA Translation) capable external drive enclosure. The driver should work with Snow Leopard and Lion and Mountain Lion. People have reported problems with Lion and Encrypted volumes. Some enclosures are reported to work with FireWire but not with USB. The driver is not compatible to WD Drive Manager, or enclosures with custom kernel extensions.

As noted above, we installed the 0.9 beta version on a system running Mavericks, and it appears to be working great, so they probably should add that to the list. We have three Western Digital external drives connected, and the driver is working for all three. We suspect it will work with most consumer-grade external USB drives. However, if you buy your own external drive enclosure and mount an internal drive in it, then the chances that it will work are probably a bit lower. If it doesn’t work for you, or for some other reason you want to remove it from your system, simply enter the following two commands from a terminal window:

sudo rm -r /System/Library/Extensions/SATSMARTDriver.kext
sudo rm -r /System/Library/Extensions/SATSMARTLib.plugin

and then reboot your system.

It’s great to be able to check the S.M.A.R.T. status of your external drives right from the OS X disk utility. Apple should purchase the code from the author of this project, make any necessary tweaks to ensure that it is stable, and include it by default in upgrades and future versions of OS X!

Link: 5 of the Best Code Editor Apps for Your Mac

Is programming your profession or passion? No matter what category of programmers you belong to, you will need a tool to write down your programming code. If you take a look at the apps available to do coding, you will find that there are many, and choosing the one that will fulfill your needs seems to be quite a difficult task. Here, we have come to the rescue of those of you who are looking for some of the best code editor apps for Macs. Go ahead and get started with coding using the tools listed below.

Full article here:
5 of the Best Code Editor Apps for Your Mac (Make Tech Easier)

Link: 5 Free Tools that Let You Edit PDF Files

Isn’t it really annoying when you have a PDF file that you need to modify or change? Actually going into the PDF and changing it requires a slew of expensive Adobe software that, quite frankly, very few people can legally afford. I am not a proponent of illegally downloading software – especially Adobe’s expensive software – so I have compiled a list of my five favorite tools that let you openly edit PDF files.

Full article here:
5 Free Tools that Let You Edit PDF Files (Make Tech Easier)

Note: Some of the suggestions in the above article are Windows-only. If you run OS X, you could try running one of the Windows-based programs, or use one of the “Universal” solutions in the above-mentioned article. Alternately, here is a somewhat dated article that may offer some additional suggestions, and note that Preview (which comes with all recent versions of OS X) has the ability to edit unprotected PDF files. If you run Linux, you could try PDFEdit or some other editing tool.

Link: How to Mount EXT4 Linux File Systems on a Mac with OS X Fuse

The EXT file system (short for Extended File System) and it’s family members of EXT2, EXT3, and EXT4, are the file systems used by Linux. Mac users who work with multiple platforms may notice that OS X is unable to mount EXT partitions on its own, and thus anyone wishing to mount and read EXT drives and other file systems will need to rely on a third party utility.

OSXFuse is one such tool, a free open source offering that allows OS X to read EXT volumes, and if you’re comfortable with some uncertainty and risk to the Linux partition, you can even enable an experimental EXT write function too.

Full article here:
How to Mount EXT4 Linux File Systems on a Mac with OS X Fuse (OS X Daily)

Using AppleScript to restore missing functionality from iChat to Messages in OS X 10.9.x Mavericks

Those of you who have run previous versions of OS X and are now running Mavericks may have noticed that the Messages client lacks quite a bit of the functionality of the iChat program that was included with earlier versions, and in particular the ability to take actions based on certain events.  However it is possible to restore some of that functionality using AppleScript.  Here’s a thumbnail overview of how to get started.

First, open the ~/Library/Application Scripts/com.apple.iChat/ directory and make a copy of the file Speak Events.applescript (you can temporarily copy it to another directory).  Rename the copy to something else (we used Custom Sounds.applescript for this demo) and move the copy back into the  ~/Library/Application Scripts/com.apple.iChat/ directory.

Open the Custom Sounds.applescript file in the AppleScript Editor (it’s in the Utilities folder inside your Applications folder) and make the changes shown below.  When you get through with your edits and you have compiled them you will see something like this:

Custom Sounds AppleScript

The easiest way to do this is to select all the existing AppleScript code, delete it, and replace it with the following:

using terms from application "Messages"
	on message received from theBuddy
		set qHandle to handle of theBuddy
		# do shell script "echo " & qHandle & " >> ~/Downloads/buddies.txt"
		if qHandle is equal to "someuser@somechatserver.com" then
			set playsound to POSIX path of ("/System/Library/Sounds/Pop.aiff")
		else if qHandle is equal to "someotheruser@somechatserver.com" then
			set playsound to POSIX path of ("/System/Library/Sounds/Frog.aiff")
		else
			set playsound to POSIX path of ("/System/Library/Sounds/Glass.aiff")
		end if
		do shell script ("afplay " & playsound & " > /dev/null 2>&1 &")
	end message received
	
	on active chat message received from theBuddy
		set qHandle to handle of theBuddy
		# do shell script "echo " & qHandle & " >> ~/Downloads/buddies.txt"
		if qHandle is equal to "someuser@somechatserver.com" then
			set playsound to POSIX path of ("/System/Library/Sounds/Pop.aiff")
		else if qHandle is equal to "someotheruser@somechatserver.com" then
			set playsound to POSIX path of ("/System/Library/Sounds/Frog.aiff")
		else
			set playsound to POSIX path of ("/System/Library/Sounds/Glass.aiff")
		end if
		do shell script ("afplay " & playsound & " > /dev/null 2>&1 &")
	end active chat message received
	
	# The following are unused but need to be defined to avoid an error
	
	on message sent theMessage with eventDescription
	end message sent
	
	on chat room message received with eventDescription
	end chat room message received
	
	on addressed message received theMessage from theBuddy for theChat with eventDescription
	end addressed message received
	
	on received text invitation with eventDescription
	end received text invitation
	
	on received audio invitation theText from theBuddy for theChat with eventDescription
	end received audio invitation
	
	on received video invitation theText from theBuddy for theChat with eventDescription
	end received video invitation
	
	on received local screen sharing invitation from theBuddy for theChat with eventDescription
	end received local screen sharing invitation
	
	on buddy authorization requested with eventDescription
	end buddy authorization requested
	
	on addressed chat room message received with eventDescription
	end addressed chat room message received
	
	on received remote screen sharing invitation with eventDescription
	end received remote screen sharing invitation
	
	on login finished with eventDescription
	end login finished
	
	on logout finished with eventDescription
	end logout finished
	
	on buddy became available with eventDescription
	end buddy became available
	
	on buddy became unavailable with eventDescription
	end buddy became unavailable
	
	on received file transfer invitation theFileTransfer with eventDescription
	end received file transfer invitation
	
	on av chat started with eventDescription
	end av chat started
	
	on av chat ended with eventDescription
	end av chat ended
	
	on completed file transfer with eventDescription
	end completed file transfer
	
end using terms from

You may wonder why we said to copy and open the copy of an existing file if we were just going to replace everything; it turns out that if you don’t do that the AppleScript editor seems to save the file in some format that Messages doesn’t recognize.

The edits you will need to change are these, in both the on message received… and on active chat message received… sections (make the same edits in both sections, otherwise it may not work as you expect):

		# do shell script "echo " & qHandle & " >> ~/Downloads/buddies.txt"

Uncomment these lines at first to discover the “handles” that are being sent when each buddy sends you an instant message – each one will produce a line in the file buddies.txt in your Downloads directory (you can use another directory and filename if you prefer). Normally they will be in a form like “username@server” which in some cases (particularly with Google users) might even be the same as their email address. Once a buddy has sent you a message, you can look in the file to see what their “handle” is. Then you can set up the conditions, like so:

		if qHandle is equal to "someuser@somechatserver.com" then
			set playsound to POSIX path of ("/System/Library/Sounds/Pop.aiff")
		else if qHandle is equal to "someotheruser@somechatserver.com" then
			set playsound to POSIX path of ("/System/Library/Sounds/Frog.aiff")
		else
			set playsound to POSIX path of ("/System/Library/Sounds/Glass.aiff")
		end if

Replace “someuser@somechatserver.com” and “someotheruser@somechatserver.com” with valid “handles”. The sounds can be whatever you want but they must be in .aiff file format – here we have used the standard sounds found in /System/Library/Sounds/ but there is no reason you can’t use other sounds or even custom .aiff files. The “else” condition specifies the default sound that will be played for incoming messages from buddies not specified in the other conditions. You can add as many “else if” conditions as you need, depending on whether you want to have distinctive sounds for additional buddies.

Don’t forget to comment the “do shell script …” lines back out once you have received all the “handles” that are important to you, otherwise that file will continue to grow with each received message, which is why we suggest putting it in your Downloads folder where you are more likely to notice it.

Finally to get Messages to use these sounds open its Preferences and select your new AppleScript file at the bottom of the panel:

Messages Preferences

Note that not only have we selected the Applescript, but we changed the default Message received sound to Tink, which is a very quiet sound – the reason is that while you can turn off all sounds in Messages, you can’t make the default Message received sound “nothing”. So when a message arrives, it will play both the “Tink” sound AND the sound you have selected in your AppleScript. We suppose you could use an audio editor (such as Audacity) to create an .aiff file with no sound in it, if even the Tink sound bothers you, or if that’s too much work you can download and unzip this one (place the resulting Silence.aiff file in the /System/Library/Sounds/ folder, and after doing that you’ll need to close and reopen the Messages application before you can select it as the Message received sound).

Obviously there are many other possibilities, both for adding custom sounds to other Message events and for taking additional or different actions. For example, if you looked at the Speak Events.applescript file that we had you copy at the start of this, you would see that it’s possible to have incoming messages be read aloud to you. Also, at least in theory it’s possible to select the buddy based on something other than the “handle” – if you go into the AppleScript Editor, File menu, and Open Dictionary, then scroll down to “Messages” and choose it, and then select “Messages Suite” and “buddy” you will see the screen shown here:

Messages Buddy options

You should be able to use the buddy “name” instead of the “handle”, but that would not work for us for some reason and generated an error popup. And note that to use some of these options you must have a “contacts card” (Address Book entry) for that buddy, with the selected field filled in.

By the way, rather that have two identical blocks of script under the on message received… and on active chat message received… sections, you could instead use a single subroutine, in this case named custom_notify, where the start of the script would be changed to look like this:

using terms from application "Messages"
	on message received from theBuddy
		custom_notify(theBuddy)
	end message received
	
	on active chat message received from theBuddy
		custom_notify(theBuddy)
	end active chat message received
	
	# The following are unused but need to be defined to avoid an error

(…the rest of the original script continues here…)

And then at the very end of the script (below the end using terms from line), you could define the custom_notify subroutine, which receives the single variable theBuddy:

on custom_notify(theBuddy)
	set qHandle to handle of theBuddy
	# do shell script "echo " & qHandle & " >> ~/Downloads/buddies.txt"
	if qHandle is equal to "someuser@somechatserver.com" then
		set playsound to POSIX path of ("/System/Library/Sounds/Pop.aiff")
	else if qHandle is equal to "someotheruser@somechatserver.com" then
		set playsound to POSIX path of ("/System/Library/Sounds/Frog.aiff")
	else
		set playsound to POSIX path of ("/System/Library/Sounds/Glass.aiff")
	end if
	do shell script ("afplay " & playsound & " > /dev/null 2>&1 &")
end custom_notify

This is just a quick overview to get you started but the idea is that by using AppleScript you should be able to restore the functionality of any “missing” iChat triggers that are important to you, and maybe even do a few things that iChat wouldn’t. If you come up with any useful AppleScript snippets or “recipes”, please feel free to post them in the comments section, so that others might benefit from your cleverness.

Related:
Buddy online notification in Messages (OS X Mavericks) (Too busy to…)
Send SMS to Messages and run commands with AppleScript Apps (Macworld)

Link: Day-O review: Me say day on the Mac’s menu bar

 As someone who has a regular schedule of weekly meetings and appointments—work meetings, after-school sports for my kids, and so on—it’s always helpful when someone who wants to schedule a meeting with me mentions the day along with the proposed date and time. For example, when I’m asked if I’m available on May 6 at 3 p.m., I have to look at my calendar; but if I know that May 6 is a Tuesday, I can immediately reply that I can’t do meetings after 3 p.m.

Day-O

Day-O’s calendar display

Which brings me to my biggest gripe about OS X’s Date & Time menu-bar display (enabled in the Date & Time pane of System Preferences): It shows you only the current date and time. There’s no option to display, say, a monthly calendar when you click in the menu bar. Sometimes I’m on the phone or writing an email to set up a meeting, and I’d like to know what day of the week a proposed date falls on—since I’m no calendar savant, I need to look it up.

Full article here:
Day-O review: Me say day on the Mac’s menu bar (Macworld)

What we like about this little program is that you can customize the date display exactly to your liking. For example, if you want to see everything at a glance with no abbreviations, you could use the Date & Time format string EEEE, MMMM d, y h:mm:ss a z which produces this:
Day-O custom date formatUnfortunately, it won’t flash red or sound a warning that it’s April Fools Day, and that your friends or co-workers might try to prank you!

Link: Send an SMS Text Message from the Command Line

When you think of sending out text messages you probably think of the iPhone or an Android, and the command line doesn’t cross your mind, but thanks to the ever-useful curl command, you can send out a SMS text message to any phone number right from the Terminal.

Note that while this article comes from an OS X-related site, the technique shown should work in just about any version of Unix or Linux, as long as the curl command is supported.

Full article here:
Send an SMS Text Message from the Command Line (OS X Daily)

Link: Power of Linux wget Command to Downloand Files from Internet

Wget is the command line, non interative , free utility in Unix like Operating systems not excluding Microsoft Windows, for downloading files from the internet. Most of the web browsers require user’s presence for the file download to be completed. But wget allows users to start the file retrieval and disconnect from the system. It will download the files in the background. The user’s presence can be a great hindrance when downloading large files.

Full article here:
Power of Linux wget Command to Downloand Files from Internet (LinOxide)
Related:
Wget. Resume, limit rate and run it in background (G. Garron)
Download an entire website with wget (ugly duck)

Link: 4 Ways to Preview Fonts in OS X

OS X comes with a large number of different fonts included, and if you also install third-party software such as Microsoft Office, your system should be full of fonts. Now, this isn’t really much of a problem I mean – come on. What harm is it to have a large number of different fonts to choose from? The only issue is that if you want to see what a font looks like before using it, you will have to slowly go through a large list which can become impractical.

Luckily for you, Apple also cared to include several options in OS X for previewing fonts which can really help you streamline this process. More details follow:

Full article here:
4 Ways to Preview Fonts in OS X (Make Tech Easier)
Related:
Take Control of Your Fonts in OS X (tuts+)
How to Manage Fonts Within Mac Apps the Quick and Easy Way (The Mac Observer)

Link: Easily Run Windows Applications on Mac OS X

If you are using Mac OS X and want to run Windows applications, the most popular option is to install Windows OS using Bootcamp, or run Windows in a virtual machine. Linux users will know that you can use Wine to install and run Windows applications natively. The good news is that Mac users can run Wine to install Windows applications as well. Wineskin is a Wine-tool ported over to the Mac platform. Check out how you can run Windows applications on Mac OS X.

Wineskin is simply an implementation of Wine at its core. For those who are not sure what Wine (an acronym for “Wine Is Not an Emulator”) is, it is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, including Linux and Mac OS X.

Full article here:
Easily Run Windows Applications on Mac OS X (Make Tech Easier)
Related:
Wineskin: Run Windows Software On Mac OS X Without An Emulator [Mac] (MakeUseOf)