Grayed Folders in Macintosh OSX

While copying files to an external hard drive with a bum cable using my Mac’s Finder to move the files I ended up with an accidentally half-copied folder that was grayed out and I couldn’t open it at all. I could go into Terminal and access it that way, but Finder was a dead duck. Even after I properly unmounted and remounted the drive it didn’t work. I putzed about for a while searching for a solution and the general answer most people have is to use the ‘cat’ command to copy the files elsewhere and just be done with it. This didn’t sit well with me, there should be a way to correct the situation without having to duplicate the folder or copy the files or do anything laborious like that – and it turns out there is just that.

The folder had a creation time of some date in 1984. Probably the first possible date for OSX knowing Apple. They initiated the folder but since the move was interrupted the later adjustment never got made. This is a bug, Apple. Anyways, how to correct it? Some people seemed to think that the ‘touch’ command could possibly do the trick, but touch can’t really get to all the dates that come with files in the HFS file system. This folder, for examples sake I’ll just call it “folder” had displayed this 1984 date as it’s creation date. The touch command was successful in mangling all the other dates, except for the specific one I was after. I used the ‘stat’ command on the folder and discovered that the st_birthtime of the folder was 1984. How in the hell do you change that date?

I found out that you need another utility to do it properly. You need to download the Command Line Tools for XCode, which is the development platform for the OSX Operating System. It’s free and easy to install. Once you do that, you will get a new command to use in the terminal called SetFile. So here’s how to fix this problem if you run into it: SetFile -d [todays date][file or folder] and press enter. So for my file, it would be SetFile -d 08/17/2013 folder/ and press Enter. Voila! Folder is real and not-grayed and Finder thinks it’s just peachy keen.

So for anyone with grayed out folders, check your dates. Use the stat command, download the XCode CLI tools and use SetFile to rescue your folder or file from inaccessible hell.

Automatic Tag Generator for DayOne Journals synced with Dropbox

Here’s how I created a system to automatically sync up keywords to tags in DayOne Journal. The journal is stored on my Dropbox, so if you have it in iCloud, I don’t know what you’re going to do.

First Step: Get text list of tags in a text file: (do this in the entries folder of your DayOne Journal, cd to it, if you can’t, google-fu.)

find . -type f |xargs sed -n “/<array>/,/<\/array>/p”|grep “<string>”|sed ‘s/<[^>]*>//g’|sed “s/^[ \t]*//”|tr -d ‘\011’|sort -f|uniq > tags.txt

Then copy this tags.txt folder to your home directory. Edit the file, be careful of phrases in XML that would confuse the system, Weather, Apple, DTD, String – that sort of thing, also be very careful around TLA’s as they can have unintended side effects. The later scripts that do the keyword searches don’t give a damn about cases, so your keywords or your KeYwOrDs will be equivalent.

You’ll need two more scripts. This one adds tags based on keywords passed to it as parameters: (be VERY careful, little L and capital I look very much the same, read man pages, yo)

tag.sh:

#!/bin/bash

cd /Users/username/Dropbox/Apps/Day\ One/Journal.dayone/entries

find . -type f -print0 |xargs -0 grep -L “<string>”$1″</string>”| xargs grep -li “”$1″” |xargs grep -l “<key>Tags</key>”|xargs -I file /usr/libexec/PlistBuddy -c “add Tags:Key string “$1″” file

find . -type f -print0 |xargs -0 grep -L “<string>”$1″</string>”| xargs grep -li “”$1″” |xargs grep -L “<key>Tags</key>”|xargs -I file /usr/libexec/PlistBuddy -c “add Tags array” file

find . -type f -print0 |xargs -0 grep -L “<string>”$1″</string>”| xargs grep -li “”$1″” |xargs grep -l “<key>Tags</key>”|xargs -I file /usr/libexec/PlistBuddy -c “add Tags:Key string “$1″” file

Next, you’ll need another script called updatetags.sh, looks like this:

#!/bin/bash
cat /Users/andy/Dropbox/Apps/Day\ One/tags.txt|xargs -n 1 /Users/andy/tag.sh

The last bit will be a new LaunchAgent, so go to ~/Library/LaunchAgents and mock up a plist file by copying one from there, if you need an example, try this:

more ~/Library/LaunchAgents/com.andymchugh.tag.plist
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN”
“http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>Label</key>
<string>org.andymchugh.tag</string>
<key>ProgramArguments</key>
<array>
<string>/Users/andy/updatetags.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>00</integer>
<key>Hour</key>
<integer>06</integer>
</dict>
</dict>
</plist>

The name of the LaunchAgent has to be unique and the inside name (<string>org.andymchugh.tag</string>) should match the file name like you see here. Swap out the com bit for org, and forget the plist bit. This script will run every day at 6am. You can flavor it to your liking.

Then the final command to tie it all together:

launchctl load -w com.andymchugh.tag.plist

So now, when you write DayOne Journal entries you can mark up the tags.txt file that lives in your Dropbox. Value added, if you change this file anywhere, Dropbox will make sure it syncs up with all your other systems, so you can edit it and forget it pretty nicely as long as it’s not open-for-editing when your script fires off at 6am. That would be messy.

The first time you do it, you’ll notice your Dropbox churn for a long while and then all your other connected Dropboxes will churn as they sync up. Your iPhone and iPad will have huge downloads to do, but they’ll catch up well enough. As you create new DayOne Journal entries you can rest assured that your script will be doing keyword searching for you on your behalf and hooking up your tags to your DayOne Journal entries for you.

Just one more thing automated and out of the way. Hooray!

P.S. Backup your Journal, DIY. Be safe, be smart, learn how to use tar. man tar. Read it. Live it. tar is your delight and your savior. 🙂

EDIT: tags.sh needed a cd command first, otherwise it would just wander aimlessly. Sorry about that.

Tag Painting in Day One Journal

I’ve been really enjoying DayOne and they have recently updated their app so that the iPad, iPhone and Mac Apps can all create and manage tags. What’s been missing is a way to blast in tags based on keywords.

In this example, every time I have a journal entry with “Scott” in it, I want it to be tagged “Scott”.

Here’s how I did it:

1) Open Terminal, go to ~/Dropbox/Apps/Day One/Journal.dayone/entries

2) FOR FILES THAT DON’T HAVE TAGS, A TAG SECTION, PAINT THE SECTIONS WITH THE TAG

find . -print0 |xargs -0 grep -L “<string>Scott</string>”|xargs grep -l “Scott” |xargs grep -l “<key>Tags</key>”|xargs -I file /usr/libexec/PlistBuddy -c “add Tags:Key string ‘Scott'” file

3) FOR FILES THAT DON’T HAVE TAGS, DON’T HAVE A TAG SECTION, CREATE TAG SECTION

find . -print0 |xargs -0 grep -L “<string>Scott</string>”|xargs grep -l “Scott” |xargs grep -L “<key>Tags</key>”|xargs -I file /usr/libexec/PlistBuddy -c “add Tags array” file

4) Then go back to #2 and re-run it. Everything that has your text should be tagged with the text you choose.

Swanky! The only thing you have to watch out for here is the little l (little ell) looks a lot like a capital I (capital-eye) – might be best to copy this into a browser and set the font to Courier just to make sure before you run it, also, the last xargs does the changes, so skipping out on that might be smart. I can’t make any guarantees that it’ll work, but as far as I can tell, it works great!

YMMV. Careful.

Slogger

Memories.Slogger

Every once in a while I run across something I’ve seen before but ignored accidentally until I see it in great big headlines and neon and stop to pay attention to it and discover that it does something I really really want. This particular afternoon it was the product Slogger from Brett Terpstra. The software is a Ruby script, and Ruby is a delightful programming language that I’ve had the pleasure of dabbling in. Nowhere near the level of Brett and the people who help him, but here and there, little things.

The need came from a simple Google query, IFTTT and Day One. Looking for some way to bridge that divide between the automatic web service that I’ve fallen in love with, IFTTT and Day One, the journaling software that works quite well and renders DropBox a “Killer App”. Dropbox is the glue that keeps my Day One system together, on my laptop, my desktop, and all my mobile devices. When I found Slogger it was a definite Eureka moment, the answer all in one place. I downloaded the code as the author describes and tried to set it up.

Monumental fail. Pieces everywhere, error codes puking on the screen faster than I could read, pages and pages of interpreter and compiler errors, all surrounding one “Ruby Gem” module called hpricot. I knew why this was fail-town for me, it was because I had installed XCode CLI tools in order to get the mac_google_authenticator PAM module built. That CLI package rendered my system retarded when it came to processing gem requests. In the Ruby world there is a system established for distributing software written in Ruby, it’s called ‘gem’ and you run it much like apt-get in Ubuntu, it’s really quite straightforward and never has given me fits – until. Everything was complicated by the fact that I couldn’t really find where XCode was on my machine, all the likely targets to search didn’t have anything relevant and my find command returned pages of errors and I didn’t have the patience to pick through a thousand lines of “Permission Denied” to find the one spot where the file was hidden.

Didn’t need to complain, as I knew the solution. Download XCode for real. So off to Apple, download the monster and install it. That satisfied hpricot, and everything else installed quite nicely. I set Slogger up, pointed it at my Dropbox and configured the plugins that I wanted. The initial run crashed and burned but I figured out why, it was an errant space in the line that points to the Day One folder, a symbolic link fixed that and I was again off to the races. Of all the plugins that I configured these were successful:

  1. BlogLogger
  2. facebookifttt
  3. goodreadslogger
  4. lastfmlogger
  5. pocketlogger
  6. rsslogger

Then there were the plugins I tried to configure but couldn’t:

  1. fitbit
  2. flickrlogger
  3. getgluelogger

The primary problem with the fitbit plugin was that fitgem, the Ruby assistant program that you have to install is a phantom. You install it, it’s successful, and then it’s gone. No trace of it exists. You try again, poof, nowhere. Plus for the plugin setup there are API codes, User codes, and oAuth codes. I get the reasoning behind all of them and getting most of them was not an issue. I felt a little awkward creating an “Application” for just myself, it seems kind of a waste of effort to ferret all these bits and peices into a semiformal request procedure, but doing it wasn’t hard or cost anything, so what the hell. The part where it all falls apart for fitbit is where you have to get the oAuth token, since fitgem never worked and it’s invocation from slogger should have opened a web browser and asked for my approval, all of that never happened. I tried to be sporting and do the heavy lifting myself but all I did was irritate the API for fitbit and I figured, what the hell, I got most of what I was after and moved the fitbit plugin into the “unused” folder and forgot all about it. Abandon ship, y’arrrr!

Flickr is a pain in the ass. It’s Yahoo and as such, it’s kind of an Internet leper. You need your Flickr number, there’s a site that makes that easy, except it doesn’t work. Flickr username? Feh, either the one in Flickr or your linked Yahoo ID is meaningless. I half figured it was in the URL anyways, but then I thought about it and I don’t really use Flickr all that much beyond a solitary IFTTT rule and that’s precarious as it is. The only attractive part of Flickr is they gave out 1TB of storage. Still lepers tho. So, abandon ship! Y’arrrrr!

GetGlue was the last great effort. Much like Klout, it’s a site that makes sense sort of, but the name is utterly silly. GetGlue. What the hell? Why? Glue has nothing to do with TV or Movies. The only connection I could think of was celluloid and horses-processed-into-glue sort of connection. They give away stickers, what a wonderful bit of pollution that is, and as a gimmick seems dumb. The plugin needs an RSS feed for the GetGlue Activity Stream. It appears as though the GetGlue folks have moved away from RSS and towards “widgets” which seems stupid as in this application RSS is the answer and widgets are worthless. Alas, Google searching for the RSS feed method was fruitless. I was half hoping for something like http://getglue.com/user/bluedepth/feed.rss, where I could just craft it up and be on my merry way. No. You have to “View Source” to find it, which is stupid because that is so full of CSS flotsam and jetsam as to be utterly incomprehensible. Again, my ardor for that particular service was fog on a hot day. I don’t need it. I don’t use it. Whatever! Abandon ship! y’arrrrr!

So I tried the slogger script, it failed, tore out fitbit goop and then it worked. Then I went into my Day One app and mopped up all the mess that testing had made. The only oddity I noticed was the BlogLogger completely missed out on the text on my WordPress site that was between pre tags. Meh. Not really a reason to kick the entire thing to the curb, just something to honestly stop using. HTML is a right bastard, almost all of the time. CSS is a filthy abomination, but we won’t go there.

I would say that tonight everything will work as it should for Slogger, but I have to race to work tonight to turn everything off because work is going to exit-stage-left when it comes to the Internet. They are turning the entire thing off, at least for a few hours. I can’t wait for tomorrow, there will be lulz.

So, to Mr. Terpstra, thank you for slogger. I’m sorry the plugins didn’t work, that fitgem was a phantom, but at least most of what I wanted worked. So we sound a victory cheer, sort of. Yaaay!

Google Authenticator

Dial lockOver the long Fourth of July holiday weekend I received an email from WordPress.com detailing news that they were now fully compatible with the Google Authenticator Two-Factor security system. I haven’t thought of Two-Factor in a long while and decided to look into how Google had cornered the market in this particular security market.

First a little background. The term Two-Factor security means that when you want to prove who you are to some service, called authentication, you usually just have to present two pieces of information, a username and a password. This combination not only identifies who you are and proves your identity through the shared secret of the password, but allows systems to remain as open as possible to all clients who want to connect – assuming that everyone is playing by the rules and nobody is trying to be sneaky or clever. Passwords are notoriously wimpy things, most people give up on complexity because they can’t readily remember the password and it’s not convenient so they select simple passwords like “12345”, “password”, or “secret” and leave it at that. The problem with passwords is that people who make them up are either lazy or don’t care about entropy or complexity and since a lot of your work and identity is being controlled using these systems, using these simple passwords is begging for disaster. Another issue that plagues a lot of people, and goes in with how naturally lazy many of us are, is that people will use one poor password on every site they go to and keep their usernames the same as well. The risk here is that when one service is compromised, all the other services are compromised as well and it’s a huge upward climb to get out of that mess if you find yourself trapped in it.

Cleverness works both against people in general, with thieves, phishers, and hackers as well as for people in general, with things like hashapass or applications like 1Password. Hashapass is a free service that combines the web address of a service with one single complicated password to generate a hash, which is to say, a value that is easily calculated from the combination of the single complicated password and the web address but done so in a way that going backwards is very difficult to do. If any piece of the puzzle is missing, it’s technically unsolvable. As an alternative to this there is 1Password, an application that I have become very fond of, and it uses a similar approach to hashapass. In 1Password one master password unlocks a database of all the sites and their individual passwords so you don’t have to remember a constellation of passwords, all you need is to remember one very good secure password and you are all set. There are a few other nice features to 1Password that I like, being able to generate very long random passwords and store them for me allows me to establish plausible deniability when it comes to my online identities. Because 1Password randomly selected a 32-character password for Facebook, I cannot be compelled, even under torture to reveal that password to anyone else. I just don’t know it. I know 1Password, but that’s not the right question so my account remains secure.

All of this I have collected and use, and I use it everywhere. On my MacBook Pro, my iMac at work, my iPad and my iPhone. 1Password makes it very easy to manage the security database and I’m quite sure that it’s secure. In my life, any more security is rather like putting more padlocks on a firmly locked jail cell, it’s rather silly and feels a lot like overkill. Then again, more security is always better, especially if it’s really clever and somewhat convenient.

Two-Factor security adds another component to the process of authentication. It augments the username and password combination. A password is something I know (or store using 1Password) and the second factor is something called a Time-Based One Time Password (TOTP). This is where the free iPhone app called Google Authenticator comes in. The app records a secret key from a site I wish to prove my identity to in the future, for example, Google itself. I set up two-factor, request a security token for Google Authenticator and set it up in the app. The key is transmitted by QR code, which means you can quickly acquire the long complicated random (hard to type) secret key using the camera in your phone. Once this process is complete the Google Authenticator app displays a six digit number that will work to prove your identity to the site associated with that particular entry and this entry only exists for 30 seconds at a time. This six digit password exists only once in any one 30-second period and there is no way to divine this password without having the Google Authenticator application with it’s stored secret code.

Having two-factor enabled in this way means that my username and password are no longer as important as they once were. Even if my username and password are revealed or compromised without my knowledge, the secret key that I have in my Google Authenticator app remains secure with me and the 30-second-long one-time-password additions remain a secret with me. What I know may be compromised, but what I have (the Google Authenticator) most likely won’t be unless someone steals my phone and finds a way to best the security on that device before I have a chance to wipe it remotely. If in the case my Google Authenticator becomes compromised, my passwords will likely not be because they are uncrackable, and so I am still secure.

Practically how does this work? When I want to log into Google Mail using two-factor, this is what I do. I open a web browser, I type in the address “gmail.com” and press enter. Then I enter my username and my password and then in the third field under the password is a box labeled “Google Authenticator Token” and then I grab my phone, start my Google Authenticator application and then read the six-digit number from my phone and type it in. The service logs me right on and after a few seconds, that six-digit password is no longer valid and is meaningless. I’m authenticated and the system did as it was designed to do. One of the nice parts of Google Authenticator is that the entire app is a mathematical operation, it doesn’t require the network at all to generate these numbers, so this would be a good solution for people who may not have a reliable connection to the network or have a data quota on their phone.

Of course, online authentication is just the beginning. I found a way, yesterday, to embed the Google Authenticator system into my Mac OSX Mountain Lion installation so that when I want to login to my computer at work or my laptop I have to type in my username, my password, and read the six-digit code from my Google Authenticator application. The setup isn’t difficult to get it to work. You need a compiled PAM module which I have (just ask if you want a copy) and an application which you use to create the secret key on your computer. With it all set up, and a slight adjustment to a settings file, even if I were to lose security on my password at work nobody could login to my account without my username, password, and GA token.

This arrangement works quite well and I’ve set it up for my Google accounts, my WordPress.com and .org blogs, Facebook, Evernote, and Dropbox accounts as well. Everything is secure, obnoxiously secure. 🙂

photo by: MoneyBlogNewz

Doo

As I was looking through my Pocket saved items I noticed an article from MacSparky in regards to a new service called Doo. It’s supposed to index all your documents and tag them so you can find them faster than with Spotlight. So, I downloaded the app and set it up. It pegged my MBP for hours and hours with fan-churning processing and made the entire laptop unusable. Then I noticed it had tried to index pictures, something I wish there was a way to turn off, but I couldn’t find it. I then noticed a section in Preferences and a place to define rules. But I didn’t know what some of the rules meant so I went online to search for documentation. All I could find was a hopelessly poor support site and absolutely no documentation whatsoever. So, that pretty much does that. Also they hand out 25GB of storage, but it’s unclear what they are storing. The index or copies of the files? Anyways, it was a mistake and I emptied the app, revoked all the links to my other cloud services and requested the company dispose of my account. I won’t ever be back. What a mess.

If you see Doo.net advertised, just skip it.

Byword 2.0

Byword, one of my favorite apps for the Mac and for my iOS devices just upgraded to version 2.0. They have included publishing to blog platforms as a Premium feature and used the Mac App Store or iOS to distribute the added functionality for $4.99. So far I love this app and this was one of those features that I’ve been dying for, so I’m quite pleased. I can do all my writing using Byword and not have to worry about distractions or anything on the screen getting in the way of my writing. It’s all clear, clean, and simple.

The last post to my WordPress blog about Invention was written using Byword 2.0 and I’m quite impressed with it. I could suggest some other enhancements like enumerating the Category list and suggesting possible tags in WordPress posting, but I will take what I can get from the get-go. One thing that was a little dismaying, but not a show stopper was that the purchase of the Premium add-on only works for the App Store that matches the platform you are buying it for. The Premium add-on for Mac App Store is separate from the one for the iOS App Store. Their support was very clear and I pretty much assumed so even before I wrote to support, I just wanted to be sure. Frankly I could give or take the extra features on my iPad or my iPhone as Drafts works brilliantly there along with Poster app on those devices. Drafts hands off to Poster well enough without having to worry about buying Byword 2.0 Premium again for the iOS App Store. I bought the add-on for the Mac App Store because that’s where, when I blog on my Laptop or on my iMac, this will be the app that I’ll use to blog.

The only irking thing, and it’s not really anything really overwrought is the lack of pick lists and tag suggestions for WordPress, but I have faith that eventually they might take their software in that direction. Only time will tell, and developers. 🙂

Money makes the world go ’round

While reading “The Great Gatsby” one of the characters makes reference to money spent. The book is set in the jazz age of flappers and the well-heeled, say 1927 or so. Before the crash that sent many of these rich men and women tumbling from buildings. So the reference was how much a character ate after being hungry and expressed in dollars. 1927 dollars. Different than 2013 dollars. So I found a site: http://www.dollartimes.com/calculators/inflation.htm which you can calculate the power of the dollar from one time region to another. This points out the unique trap an author can get themselves in when they pin facts down in their fictional narrative.

Barnes & Noble’s Nook Update

They updated the OS for the Nook HD and Nook HD+ a few weeks ago and boy, what a difference does it make! These devices are no longer jailed to the Barnes & Noble's experience with their nascent App Store, but instead they are open to the entire Google Play infrastructure.

I've had an on-again/off-again love affair with the Nook series of eBook readers. I started with the Simple Touch and that lasted until the devices page turning buttons started going “hard of hearing” and I stopped using the device to read books when paging through became a maybe-yes/maybe-no proposition. I upgraded to the Nook HD, which is the smaller model that they offer and the HD+ is the iPad size model. The Nook has a bunch of really great features going for it, like having a place to insert a MicroSD card so getting a device with a big amount of internal memory is really quite meaningless, the bargain-basement model is good enough as the material that eats up the most space can be easily stored on the MicroSD card.

The challenge to really loving the Nook wasn't about the device itself, the device itself is built very well, almost Apple well, it's reliable and is smartly designed. The challenge I have always had with my Nook was the eBook reader software that B&N ships with their stock Nook devices. Please do not misunderstand, the app itself is exceptionally good if you are a general user, someone unlike me who is perfectly fine with the certainly competent eBook reader app. I however was not fine with the app. It came down to being ever so slightly irritated at certain little niggling issues that while I was using the device would wear me down. It's like having a very small pebble stuck in your shoe – you can walk without a problem, you don't limp at all, but you know there is a rock in there and over a long period of time it just irritates you and makes everything just a little less “right”. This stock app lacked some features which I really wanted. The primary feature was having the ability to configure the reader to use the font I prefer to have my eBooks rendered as. I have fonts I really find easy to read, those are OpenSans from Google and Helvetica Neue from Adobe. This was the little pebble in my shoe.

Then B&N let go of their Nook devices and upgraded them all to full Android devices that could use the Google Play Store as well as the B&N App Store. That night, after downloading the update and starting my Nook HD with this brave new world running on it I discovered just how incredible my Nook HD could be, freed. I found, bought, and installed a new eBook reader called Moon+ Reader Pro. The cost of the app wasn't too bad, at $4.99, it had a free version which gave you a taste of much of it's great features and once I saw just how perfect a match this eBook reader was for me I decided that I could spend the money on the full-blown app. This one app makes my Nook HD awesome as an eBook reader, and here is why:

  • Custom Fonts (!) – This was exactly what I wanted all along! It turns out that Helvetica Neue has a labyrinthine licensing model so I gave up on that font but instead switched over to my other favorite, Google's OpenSans. This font is freely available and it wasn't hard at all to find it as a “TrueType Font”, aka a TTF Font version. I copied the TTF Font file to my Dropbox and used another great Nook HD/Google Play app called File Manager HD to copy the file out of my Dropbox and create a folder for it in my Nook HD's file system called “Fonts” and copy the TTF Font file there. In Moon+ it was a cakewalk to navigate to my new Fonts folder, find OpenSans and that was it. Every eBook now is rendered in OpenSans, the way I really really like it to be.

  • Adjustable screen brightness with a swipe and font size adjustment by swipe – This actually wasn't something I thought I would really need until I found myself using it a lot. It's quite handy to skip out on having to adjust settings when trying to find the right font size and brightness to suit your reading preferences.

  • BookPlay – It's a feature of Moon+ where you can play a book, it slowly (with an adjustable speed) advances the lines of an eBook smoothly while your eyes fixate at the center of the screen and you don't have to paginate at all. The book automatically, slowly, smoothly advances along like a scroll attached to an adjustable winding player. I don't really know what the feature is called, but I call it BookPlay, and it's nice when I don't want to tappa-tappa to advance eBook pages on my Nook HD. The speed of advancement can also be set to a swipe adjustment, which I find to be really quite handy and super-clever.

  • Many canned custom themes and theme colors – You can configure the Moon+ app to switch display themes with all the settings saved per theme or turn off everything but color changing so the theme selection system does double-duty as a screen color picker. Sometimes I like reading black text on white backgrounds. Sometimes yellow text on a textured blue background and sometimes dark blue text on a black background. Each color theme is useful for different reading conditions. It's nice to be able to set my Nook HD to it's brightest highest contrast black-on-white for reading outside or on the bus on my way to work, then to the yellow/blue one for leisurely reading at home and then the dark blue on black to read in bed without staring at what amounts to a flashlight in the shape of a tablet.

  • Formats? Every format! – I have a few books in the B&N Store that I “bought” because they were “Free Friday eBook deals” that I took B&N up on when the opportunity struck. For those books I will gladly go back to the B&N canned eBook reading software and that's fine for those books. In general however I prefer to obtain my eBooks in the ePub file format. To that end, I have all my ePub books loaded on my MicroSD card, so they don't take up space on my Nook HD. Moon+ has a great bookshelf organizing metaphor and installing books that are stored on my MicroSD is a cakewalk. I love having all of my eBooks available and here's something that I've always been a little grumped about when it comes to the canned B&N eBook reader app, and that is, you have to get your books from B&N to have them in the B&N “Locker” so that you can make use of the “magic bookmarks” so you can pick up your eBooks on any device and read and when you stop that new place where you stopped is synchronized across all your B&N connected Nook apps and devices. This is really quite nice, especially when you have multiple devices or one of your devices has an exhausted battery but you don't want to stop reading your eBooks. There is no way to import your own ePub files into this B&N “Locker” system so you're shit out of luck. Moon+ returns this feature and makes it more generalized, open, and way more convenient. You can set up your “magic bookmark” sync with your Dropbox account! That's the way to do it! Have individual ePub files on Dropbox or on a device and use Dropbox to store the tokens needed to make the “magic bookmark” feature work without having to rely on the closed garden that B&N provides! This is so cake and eat it too, and I love crowing about that sort of thing when I discover it.

  • Reading Statistics – Moon+ also watches you read as you use the app and records your reading speed, how quickly you read books, and it also includes per-chapter ETA so you know generally speaking how long you have left in the chapter you are currently reading and a per-book ETA to let you know how much longer the book will last if your reading rate is constant. If you slow down or speed up, these values change and you can display them on a very thin status bar that is always visible at the bottom of your eBook screen. This little status bar can also display your battery level in your Nook, so you know how much juice you have left before you have to plug your Nook back in and charge it up. It's wonderful, for example, while reading “The Adventures of Sherlock Holmes” to know that the chapter you are currently reading has only 15 minutes left in it. That is quite a nice feature.

  • Access to Project Gutenberg – Moon+ makes it easy to connect itself to the largest collection of publicly accessible eBooks in the world. Project Gutenberg scans public domain books, lots of classics really, into ePub format and makes them freely available online. Moon+ has a interface to Project Gutenberg so the entire archive is just a few taps away and you can download your eBook right to your Nook and start enjoying reading, without having to pay one red cent.

All in all, for $4.99 Moon+ is a steal and makes the Nook HD a wonderful eBook reader. Moon+ has single-appedly eliminated any desire I had for the iPad Mini. That Moon+ only exists in the Android marketplace (Google Play) makes this one app the central pillar that tilts the playing field in favor of B&N and Android when it comes to tablets and reading eBooks. The iBook app for the Apple infrastructure is still quite good, as much as the B&N canned eBook app is for the Nooks themselves, but Moon+ blows it's competitors out of the water.

One Slipped Key

Death By ChocolateWhile working I wrote a little bit of SQL, trash really because it was just a one-shot query, real short too, and I wanted to show off the SQL code for making the iModules degree info pretty. Instead of clicking open, I clicked the save button. I found the file I thought I was opening and double-clicked. The computer asked me “Are you sure you want me to save using this file, overwriting the old file?” and I absent-mindedly clicked Yes.

The little useless fragment of SQL code replaced my huge SQL script. Boom. All gone. So sorry.

So then I was thinking about how I could recover the file, that it was on my laptop at home and so if I could turn off the Wifi at home and start my laptop I could copy the file before the Dropbox sync app replaced what I needed with my mistake.

But then I thought there should be something in Dropbox that helps address my stupidity. Turns out there is. Right click on your oops file, click on “View Previous Versions” and it opens a website and shows you all the previous times you saved your file on the service. Oh look, there’s all my hard work, right there. Click. Whew!

So, how much do I love Dropbox? Even more.

 

photo by: JD Hancock