Monday, January 9, 2012

A tale of great customer service

Last year, at Valentine's day, my mother-in-law bought our daughter a pink, stuffed cat. Pinky, as he's been named, is my daughter's "favorite and best!" Pinky sleeps with her every night and comes down every morning to sit with her as she has breakfast or watches TV. Out of the last four show-and-tells at school, she has taken Pinky to show off four times. I'm not exactly sure how to make this clear to you, but....

She really loves this cat!

My wife and I live in terror of the day something happens to Pinky. Since we got our new dog, we've found she has a fondness for chewing on stuffies. Since he is well loved each day, Pinky spends a lot of time in the washing machine and has lost a lot of his luster. You can see this clearly in this picture with him and a not-so-loved sibling.



So, on a whim, we decided to look around some to see if we could find another kitty just like Pinky we could keep on hand as a "spare". Now, we know clearly that should we need to replace Pinky, it isn't going to be a one for one swap. She'd know immediately it wasn't him. Our planned cover story is that Pinky's brother came to town to be her friend since Pinky got lost. Or, something like that.

After poking around for a few, I decided one night to just look at Pinky's tag. Sure enough, the name of the company, Galerie USA, was there along with a URL. Score! I was a little discouraged at first as it appeared they might not deal directly with individuals, but figured I'd drop them a line all the same.

I relayed basically the same story to them as I have now to you and a day later I got an e-mail back from someone in customer service with a picture attached of a stuffed pink cat. She wanted to know if this was him, and if so they could help us out right away. It wasn't the Pinkster, so I sent her one of what's left of our boy (note: see the above picture again). The next day, they replied right back with a picture of a brand new Pinky!

I replied that was our kitty and offered to pay however necessary to get him in hand and was told...nope, thanks, just send us your address, we'll send him out to you. Wow! When I sent the address, though, they told us they were sending...well, let's just go to the picture...



Yup, that's Pinky, second from the left, surrounded by THREE siblings! They sent us THREE! They arrived today and are waiting patiently for the day they can come out of their box in the closet (our second daughter is arriving next month, perhaps she will one day get her own Pinky).

Now, granted, this was a small gesture and probably cost them all of $2 to do this, but that's not the point. Joni, the lady I dealt with spent a couple of days e-mailing me back and forth trying to find the right toy and then shipped them out within minutes of confirming we had the right one. It made a big difference to this dad to know there are potentially a couple of future tears that could be avoided by our having something to fill the void should it ever come, and that means the world to me.

Thank you, Galerie, and especially Joni, for helping us out. You got 2012 off to a great start for us!

Tuesday, January 3, 2012

Life logging with Evernote

One of my primary reasons for moving back to Evernote is that I've always wanted to keep a journal. I've never been good at it all, and it's come back to haunt me from time to time as I try to remember when a certain event happened. Before my journal, my e-mail served as my primary method of refreshing my memory, but that's limited to stuff I might have needed to say to someone. Major and minor events went unrecorded.

I've also been thinking about all of the data that I put "out there" each day that is captured only on Facebook or Twitter and might be difficult to find again in the future. Or, I might want to relate something that I posted on Facebook to something in my journal. Sure, Facebook's Timeline feature helps a great deal in finding older posts, but I'd like to have as complete a record of my day as possible in just one spot.

So, inspired by this TED video, I needed to figure out a way to create my own aggregator and use it to log my life...or as much as possible.













In terms of a basic app where I write what happens each day, Evernote is perfect. Each morning, I simply create a new note in my Journal notebook and type away. But, we're here today to talk about some of the other stuff I put in there.

Similar to in my previous post, the secret sauce that will tie the social network aspect into the journal is IFTTT.com. To recap, "If This, Then That" monitors the social networks you give it access to, and when something happens that matches criteria you setup, it'll trigger an action you specify. In this case, a lot of what I wanted to pull in is covered by the default triggers and actions. When I post a status, it's pulled directly into Evernote. When post a photo, same thing. Easy!

Twitter's a bit more difficult. I'll admit, not a big fan of Twitter. I use it because I have to, because so many others use it. But, as the first network I'd axe if I could, yup, Twitter. As a result of my disdain, I rarely ever check the Twitter, so I miss things. But, not anymore! I've setup actions so that if someone mentions me (or TEDxRochester) or sends me a message, I'm sent an e-mail. My own posts are injected into Evernote directly. Why do I have it go to e-mail? So I can see it, of course! I've then got a filter setup in Gmail to automatically forward those to my Evernote account. Two birds (it's Twitter. Tweets. Get it? Birds?), one stone.

The big drawback to this methodology is I get a very cluttered journal. My end goal is to have one note per day that I can go to. Evernote itself provides the mechanism in their Merge Note feature. Select two or more notes and you'll have a bunch of options come up. Simply choose Merge! Now, a hint: click on them in the order you want them in the merged note. I start by clicking my daily note, then my e-mails with my wife (more on that in another article) then the social network stuff notes before hitting Merge. That way, they end up in the note in that order. Done!

With these simple steps, I'm able to cull together a daily journal entry that covers a lot of what I do during the day, but it's not perfect. Still a number of things to pull in. Most importantly are the conversations between the most important person in my life, my wife! But, that's still a work in progress with lots of custom stuff to make it happen....

In the next installment, I'll tell you about the tags I put into posts and how I can use them to gain some basic statistical insight into my life. I'll also talk about some of the more esoteric data that makes its way into the life log.

Friday, December 30, 2011

Nighty Night, Tasker!

If there's a time where I want something else to do all my work for me, it's right before going to bed and just after I get up. When it comes to my phone, I'm fortunate to have that thing in the form of Tasker. Now, this set of profiles might seem a bit lazy, but why do extra steps I don't need to?

The first part of this has to do with the app I use for an alarm clock, Gentle Alarm. It was the App of the Day on the Amazon store a long, long time ago and I'm glad I took advantage of that offer. I highly recommend it as your alarm clock app for a couple of reasons. First, the gentle alarm function. As I've mentioned before, I have trouble getting up in the morning. Here's the blurb about how Gentle Alarm helps with this:

Alarm clocks can't know if you are in light sleep or deep sleep (those movement based alarm clock don't work) but they can play a very quiet pre-alarm which you will only hear if you are in light sleep. If you are in deep sleep, you will simply sleep through the pre-alarm.

The pre-alarm plays 30min before you really want to get up (you can change that). If the pre-alarm wakes you up, you will be more refreshed than if you had slept until the main alarm because at that time you would have fallen back into deep sleep. Give it a try and I am sure you won't want to miss it anymore.


Now, since shifting to nights, I haven't had much need for an alarm clock. But, I do have to get up early from time to time and can say that it does seem to go a lot easier when I use Gentle Alarm to get me up. Take my anecdote for the datum it isn't. :)

Secondly, Gentle Alarm integrates with Tasker. That will come into play later, though as I want to go over the "Nighty Night" task first. This profile came about due to some weirdness that was going on with my phone. Some nights, not every night, Gentle Alarm would switch from it's darkened Night Mode to regular mode. As the screen was generally at full brightness before I put it into Night Mode, it would come on and flood the room....waking my wife. Not good. As it would occur in the middle of the night when I was asleep, and didn't happen consistently, troubleshooting it was out of the question. I needed a workaround.

I already had a profile set that would silence my phone starting at 11pm, I thought maybe I could integrate the workaround into that. But, in thinking about the various permutations, I wasn't happy with a simple timed launch of the event. For example, I could be up late one night, or go to bed earlier another. An entry that was tied to a specific time just wasn't going to cut it. I wanted more manual control of the automated process (I know, right?) and that's where Tasker's ability to create notifications comes in.



At 9:30pm each night, Tasker puts an icon in my notification area entitled "Nighty Night" (Alert task -> Notify). When I click that notification (State event -> Notification click), it runs the Nighty Night task which sets up my phone for going to bed:


* Turns all of the volumes off
* Sets screen orientation back to "on" (I don't like having my screen rotate most of the time, so I leave it off, but Gentle Alarm works better rotated)
* Reduces screen brightness to 35
* Creates a new notification called "Wakey Wakey"
* Launches Gentle Alarm.
* Enable my Daily alarm that is set to go off at 9am (in case I get to sleep in, more on this later).



So, just prior to going to sleep, I hit my notification, hit the Night Mode button on Gentle Alarm and I'm good to go! Two taps to get everything just how I like it before heading to sleep.

Then, comes the morning. Again, permutations of when I'll get up demanded I have some level of manual intervention here and that's where the Wakey Wakey notification mentioned above, as well as the Tasker integration of Gentle Alarm, comes in. If it's a morning where my daughter gets up well before my daily 9am alarm goes off, I can hit the Wakey Wakey icon and it'll reset everything that Nighty Night sets (orientation, screen brightness, etc). It'll also disable the Daily alarm since I don't need it now that I'm awake. On the other hand, if this is one of those mornings my wife lets me sleep in, when I dismiss the Daily alarm it signals Tasker to run Wakey Wakey instead. This way, no matter what time I wake up, whatever I do first will set my phone up for regular use.



The last thing Wakey Wakey does is put up another notification that allows me to reboot the phone with one click. My ROM of choice on my Evo is MIUI. It's a great and gorgeous ROM, but some of the builds have been a little flaky, so I've taken to rebooting it in the morning each day. With the notification, I hit reboot and by the time I've gotten downstairs and had a swig of water, my phone is again ready for use. Done!



As I said, these are all tiny tasks, but these are the minutiae that our days are made up of. These minor tasks never seem a burden until you figure out how to get rid of them...and then you wonder why you put up with them so long! Tasker..it does a body good!

Thursday, December 15, 2011

The Great Evernote RSS Reader

For years, I've had an on-again off-again relationship with Evernote. As someone who is terminally unorganized (my doctor says I only have 40-50 years left to live because of it), my biggest problem was finding a way to make all of that data ubiquitous so I can manage it easily and everywhere. I'm back on again with Evernote, primarily due to the introduction of their Chrome extension, Clearly.

For some time, I'd used Readability as a way to get the data I wanted into whatever I was using as a note-storage vault. Using the Readability bookmarkelt, I could easily trim pages from ad-flashing, comment-choked nightmares into slim documents containing only the information I cared about. Someone had even combined the Evernote Clipper bookmarklet with the Readability one making for a one-click solution. But, it never really worked perfectly and, as stated before, Evernote never had enough love from me to make it long term.

But, Clearly DOES work extremely well! And because of it, I've taken another hard look at Evernote and have fallen in love with it. I'm inside this tool every day now, sometimes 5-6x each day...either updating my journal or trying to get the hundreds of notes I already have squirreled away into a neatly organized mess.

As with most tools, once you start power-using it, you start to see the potential to use it to solve other, apparently unrelated issues. Such is what lead to this idea I'm about to outline...

As with most geeks living in the 21st century, I suffer from information overload. I'm subscribed to about 50 different sites via their RSS feeds and use Google Reader to keep up with it all. But, I've found the way I do things to be too slow and cumbersome. My primary issue is with Gawker sites like Lifehacker and IO9, the two sites I feel compelled to visit every day. I have no idea what the issue is with these two sites, but I can have Chrome open all day long, with dozens of tabs generally in view at any time. The instant I open more than two pages from Gawker, my whole machine crawls to a halt.

Now, it's very likely it's some combination of my extensions and the proxy at work as I don't experience this issue too often elsewhere. But, seeing as most of the visiting of these sites occurs when I'm in between tasks at work, it's a pain in the ass I had to find a solution for. I also had the problem that it might not be something appropriate for me to read at work, so I'd fill up my inbox with things to read later...and then never get to them.

Additionally, if I find an article I like, I'm likely to want to save it. Since coming back to Evernote full time, I've been using Clearly to snip them up. If what I want is going to end up in Evernote anyway, it seemed to make some kind of sense to just figure out a way to eliminate the middle man.

And that's where If This Then That comes in. IFTTT is a site that will automate your social media for you. For example, I've got a task setup that will fire every time I post a status message on Facebook and send it to me as an e-mail. Since Facebook's search leaves a lot to be desired, plus I wanted to have an archive of things I posted there, this process makes my social network history much more manageable. (Recently, I've started switching these tasks over to put the items in Evernote instead of sending an e-mail.)

The secret sauce in this task is IFTTT's ability to react to an item being starred in Reader. When I do that, IFTTT posts that article into an Evernote notebook named RIL (for Read It Later, see what I did there?). I can then go in at my convenience and just read the articles in Evernote. As an added plus, they're already in Evernote, I just have to drag articles I want to keep into the appropriate notebook when I'm done reading. Or, if I don't want to keep it, I just delete.

One last tidbit: most sites will only post a summary of an article in RSS. Some, like Lifehacker, will offer the full articles on a separate feed. If they don't, you can try WizardRSS. It's a site that will pull full articles instead of summaries from the site and give them as their own RSS feed. It doesn't work on every site, but it gets enough of them that I watch each day.

I've been using this method for about a week and a half now, and I have to tell you it's made my RSS surfing so much more efficient. For example, when I'm done looking through a particular site's articles, I always mark the whole site as read so I easily know what's got new stories when I come back. The problem is, if I found an article that I had the slightest interest in but didn't want to read it at that time, I'd just leave it unread in Reader. Messy, messy! No more, I've moved all of those waiting to be read articles into Evernote and I'll get to them when I get to them.

Now, Reader is generally empty except for the few new items. I can scan through all of my feeds in a matter of minutes and star just the items I MIGHT want to read. I can then read them on my phone or computer at my convenience. I gotta tell you...it's made me so efficient at getting through my news I run out everyday and that's something that's NEVER happened before!

Friday, May 27, 2011

More Tasker tricks

Continuing the theme of automation with Tasker, I've come up with a couple of new things to share...

Damn you, autorotate!

For the most part, I use my phone in portrait mode. It's just the most comfortable way to hold such a device. I think that might have something to do with why they made it that way. :) But, there are a lot of times landscape's a better fit for what you're doing...like Angry Birds. And, maybe some web sites.

Now, if you're a portrait kind of guy like me, you might find the phone's auto-rotation feature to be a bit of a hassle at times. Like, when I'm using Navigation and it switches because I put the phone down on the seat next to me and now I can't tell where I'm supposed to turn because the damn thing's too narrow to display the road far enough ahead. I could turn off auto-rotate, sure. But, then I lose the functionality in those few apps where I actually want it. Oh, the quandary!

Then, the other day, I came across an app called Smart Rotator which provides a solution: it toggles auto-rotate on an app-by-app basis. Nice! And, it works pretty well. Unfortunately, it's yet another thing I need to have running, so I decided to do some poking to see if I could mimic the features using Tasker. Fortunately, it couldn't be easier.

First, I created a new Tasker profile in the App Launch context (the little rocket ship icon). I chose Dolphin Browser HD and Calculator as the apps to watch for. Then, create a new task called "Turn On Rotate" and select Display - > Display Rotation -> Set to On. Save it. Create an Exit Task called "Turn Off Rotate" and repeat except change it to Set to Off. Then, tap the Menu button, then Settings -> Display and uncheck Auto-rotate screen.

Now, auto-rotate is off by default, but when I launch my browser or calculator it's available. When they close, it goes back to off. I chose Calculator just to show you could configure multiple apps with just one profile. If I find another app that I want to be able to auto-rotate, I just go in and edit the profile.

Don't Track On Me!

Recently, I switched over to CyanogenMOD 7 on my Evo (love it!). There is, however, a bigish bug on the Evo in the version I'm using: GPS can't keep a lock properly. There are workarounds and a solution that worked when I put CM7 on my wife's phone, but not on mine. For the time being, I've found my own workaround:

Create a new profile in the Event context (the orange triangle) and call it Display Unlocked. Then, Display -> Display Unlocked. I set the priority to Normal and haven't had any issue. Create a new task called Display Unlocked (I like originality). Misc -> GPS -> Set to On. Create a second profile in the same context, but call it Display Off. Then, Display -> Display Off. I'll leave it as an exercise to figure out what to do for a task. :)

So, now, when I unlock my phone, it turns GPS on automatically and turns it off when I've turned the screen off. This has actually worked quite nicely and I haven't had any complaints about GPS since. The one drawback is Google Latitude doesn't work as well. However, as I'm constantly checking my phone anyway, it seems to keep me mostly up to date. Plus, no tracking by the feds! Double-win!

My Dynamic DNS Hack

After the GoDaddy CEO mercilessly and needlessly slaughtered an elephant for his sick amusement, I decided to take advantage of the offer in that article and switch my domains over to Namecheap.com. Aside from no longer supporting a company whose CEO should have his stepped on by that elephant's mate, I've gained some nifty benefits by switching to NameCheap (Not the least of which is better service at a lower price! Seriously, switch. You won't regret it.) One of them is dynamic DNS.

A little background: dynamic DNS is a service that allows you to assign a host name to an IP address that's constantly changing. A lot of folks use dynamic DNS so they can get to their home machines without having to worry about their ip address changing regularly.

The service I've used for years is No-IP.com, and frankly I have nothing bad to say about them at all. I've always had reliable service from them and have never had to contact them for support. It's a service that just works. That being said, if my registrar is giving me free dynamic DNS service along side my basic registration, well it just makes sense to try and migrate to that!

There are a couple of apps in the Market that will perform as client for your dynamic DNS provider, but none worked directly with Namecheap.com. But, as I thought about it, I realized here was another chance to find my own solution. Unfortunately, it wasn't as elegant as I'd like, but it works more or less the way I want. Perhaps if it becomes irritating enough, I'll fix it up further...

First, a caveat: I'm not sure how much of this would require you to have root access on your phone. I've gone through it again in my head, and I don't think there's anything below that needs special permissions. But, if it doesn't work on your first try, that might just be the reason.

The first piece you'll need is the Scripting Layer 4 Android. The SL4A is a great little project to bring a number of scripting languages to the Android platform to make it easier to develop things like...well, this! At current count, it supports Python, PHP, Ruby, JavaBeans and shell scripting, which we'll be using. Follow the instructions at the link to get it installed. Since my solution just uses a shell script, you don't have to install any other interpreters just yet. Fire up a text editor on your machine and copy in the following:


#!/system/xbin/bash

source /data/local/tmp/ipaddress

test=`netcfg | grep UP | grep -v 127.0.0.1 | awk '{ print $3 }'`

if [ "$test" != "$ipadd" ]; then

domain="domain.com"
username="canbeanything"
apikey="namecheapkey"
hostname="mobile"
hosturl="http://dynamicdns.park-your-domain.com/"
command="update?domain=$domain&username=$username&password=$apikey&host=$hostname&ip=$test"

url="$hosturl$command"

wget -q -O- $url
echo ipadd=$test > /data/local/tmp/ipaddress
fi


If you've been following along with other articles, you know that I've got Tasker profiles which disables the mobile radio when wifi is on and vice versa. As a result, the above script is a bit quick-n-dirty as it assumes there's only one radio on at any given time, and thus "UP". You'll have to do some tweaking if you don't have your phone setup like mine.

So, what does it do? It reads a text file I've created that simply contains the line "ipadd=192.168.1.1" (or whatever the IP was the last time it ran). It runs the netcfg command which is similar to Linux' ifconfig command. It finds the line for the interface that's up and not the loopback connector and snips out the IP address it finds. It then compares it with the one that's in the text file. If they match (which means the current IP at Namecheap.com is most likely what's currently on the phone), it does nothing. If they don't, it builds a url and uses wget to ping it. Namecheap.com will then update their records.

Note: I am specifically pushing the IP to Namecheap because if you don't they use whatever IP the request comes from. As a result, when I'm at home on my NATted network, it'll use the IP of the external interface of my router and not the internal IP I'm using on Wifi. Part of the reason I'm setting this up is to automate some tasks at home to push stuff to the phone, so I need the right address there.

So, what about Tasker? Remember the GPS hack you read about 2 minutes ago? We're going to leverage that. Edit the task for the Display Unlocked profile and add a new item. Plugin -> SL4A. Yes, SL4A has been kind enough to give us a Tasker plugin! Hit the Edit button and select the script above. Done! Now, when you unlock your phone, it'll update your IP if need be. A rockin'ly simple solution that seems to work just spiffy!

Hopefully, these will inspire you to try some new stuff with Tasker you hadn't considered before. If you do, drop me a line below and tell me about 'em!

Thursday, May 5, 2011

Sprint/Google Voice - A match made in hell

Last week, Google & Sprint announced the release of their much anticipated integration of services. Google Voice is a fairly cool service that's been around for a few years. It got its start from another company under the name Grand Central and was eventually snatched up by the Googlemonster for inclusion in their line up. With the service, your phone number becomes a lot more flexible. Some features I was looking forward to:


  1. Multiple receiving phones can be setup to ring when someone calls your Google Voice-based number and can pick up any one to answer. This was a feature I was looking forward to using most. I could setup my desk phone to ring along side my cell when called. So, if I was sitting at my desk and someone called my cell I could pickup the headset for the desk phone and talk to them. It's even possible to setup Gtalk on your desktop as a receiving phone


  2. You can specify which times you would like calls to make it through to your phone. So, you could setup a "quiet" time after 11pm where your physical phone doesn't ring and all calls are shunted through straight to voice mail. You can also specify certain numbers always get through and others never do. Useful for telemarketers or your boss having your number and trying to reach you on the weekend.


  3. Voice mail is transcribed to text (albeit very poorly) and sent right to your e-mail inbox to read.


  4. You can make international calls through GV very inexpensively



Some cool stuff, right? The drawback was you had to get a new phone number from Google that you'd have to give out. Now, if you were in the process of getting a new phone and for some reason needed a new number, no biggie. Just get the GV number, point it at your cell and never give out the actual cell number. This was also useful pre-number porting days as you could always have the same number. But, if you're like me and have had your number for 15 or so years, that wasn't a great option.

The Sprint/Google Voice integration allowed you to simply use the number you already have from Sprint as your Google Number. With a few clicks, everything you already have in place just gets a ton of new features and flexibility. At least, that's the theory...

The first issue I ran into was I simply couldn't do it at all. Apparently, there's a feature called "Google Voice Lite" where you simply forward your voicemail to Google Voice, but don't have any additional features beyond that. I had been using Google Voice Lite when I had my iPhone, but didn't know it was considered a different service. When I went in to activate the integration, I didn't have any of the options the announcement said I should. It showed I was using a Sprint phone, but wouldn't give me the option to integrate it.

So, I figured I'd just delete the phone and re-add it and see what happened. No go. I was told I needed to have at least one physical phone listed. Okay, I'm at my desk, I'll add my desk phone, delete the cell phone and re-add. No go. When I tried to add the desk phone, it showed up, but I couldn't do anything with it. Even the Edit and Delete buttons underneath were non-clickable text. I couldn't even get rid of any phone I added!

After a day or so, the answer finally popped up on the Google forums regarding Google Voice Lite. Apparently, I needed to click the link that said "Get a Google Voice number" (which was right next to what was listed as my Google Voice Number) and I would be asked to upgrade my account to full Google Voice and get it integrated. Google's #1 problem: they really don't seem to have a full grasp of the English language. There were NUMEROUS posts on the forums about this problem, and it was almost a week before someone bravely clicked that link and figured it out.

Great, this seemed to work. I got the options to integrate, followed the process, Google Voice called me to authenticate, I gave the code and seemed to be good to go...until I clicked the Continue button. At that point, I was told there was an error and to try again. Which gave the same error, again and again. You can't even get rid of the error message, you have to close your browser (or the tab) to get back to Google Voice.

In order to be complete and verify what my status was for this article, I decided to call my number and leave a voice mail...nope! I can't even leave myself one. Apparently, now my fiddling with Google Voice has disabled even the Google Voice Lite capabilities. Update: I decided to play around a bit further and requested a new Google Voice number. I was then able to add my cell phone back into the mix as a receiving phone which reenabled using Google Voice on it. Phew!!

This is a huge fiasco. The forums, both at Sprint and Google are rife with complaints from people having these same issues. The biggest problem being faced by folks, it appears, is they're getting some kind of discount on their Sprint plan. That would be consistent with my problem as I get a discount through my employer. What bothers me is *I* pay for my plan, not my employer, so why should it matter?

According to one Sprint employee who's trying to help out, the decision was made to block discounted employees because some employers might not want third parties having access to "their" info. Even if this is true, it's an absurdly stupid reason to unilaterally block all discounted customers. It's an indication of pure laziness on the part of Sprint.

So, if you've tried to setup integration of Google Voice and Sprint, and didn't have any luck, I recommend you stop now before you make things worse. It's one thing to experience issues as an early adopter, but complete showstoppers are the last thing I should expect. At the very least, the error messages should clearly state the reason for the failure and not some generic "oops, broke!" message.

It also points to a significant flaw to using Google as a provider for any critical services: they don't have ANY customer support at all. If it's broke, there's no one you can call to get it fixed. You can call Sprint, of course, but they're just going to blame Google (as they did the first few days of this debacle).

It's sad to see two companies who really seemed to have "gotten it" get it so completely wrong.

Tuesday, April 26, 2011

Resizing Firefox

In my last post, I talked a bit about my migration to Firefox 4 and some of the extensions that generally follow along with me. Today, I want to discuss some of the tweaks I do to the interface to make it more usable.

On of the changes to the technology field over the last couple of years has been the migration of computer monitors to widescreen format. While not ideally suited to use in this manner, there's a very simple reason we're forced to have them: HDTV. As the television and film industries move to widescreen, manufacturing of monitors has had to follow as a matter of course. Or, cost, really. The same companies that make TV screens also make computer monitors and it costs money to build LCD/LED/Plasma screens in a variety of formats. The fewer formats manufacturers have to deal with, the lower costs end up being.

The fact that they're not really what consumers want really doesn't come into play. If they're the only option available, then you'll buy them. And, so, we're stuck trying to scroll around the screen to read the entirety of a webpage or Word document that's formatted for a taller screen. Such is life, this is where we are, so let's make the most of it.

A lot of sites have been sizing up the latest offerings from the browser producers and judging their screen real estate usage and evaluating them primarily on their vertical usage of space. If I recall correctly, in the latest offerings, Firefox 4 is the current winner. It apparently undercuts Google Chrome, the former champ, by some 3 or 4 pixels! Whew! I can almost read the top half of one extra sentence with that!

While it's nice to see that Google, Mozilla and Microsoft are all taking into account screen ratios now, it's always been kind of a moot point for me. After all, I've been taking it into account since I got my first widescreen a few years ago and came up with my own solutions by tweaking Firefox. The solutions below are not possible with Chrome or IE because their layout is pre-determined. Firefox is the only browser that gives me the flexibility I need to size things properly.

This is what my browser looks like:



The Basics

For some reason, there are folks out there who love Firefox, but don't want to add extensions to it. I can grok wanting the absolute fastest browsing experience you can try to muster, but I just think you're missing out on so much! Oh, well, this section can be for them.

The first thing you'll notice in my screenshot above is I've reduced the number of toolbars on screen to just one. This is easy enough to do, simply right-click on one of the buttons on your toolbar (such as the big Back one) and choose Customize. You can drag bits of the interface around, as well as remove some. The first thing I do is get rid of the Search box and Back/Forward buttons.

Losing the Search box isn't a big deal if you use Smart Keywords to search from the address bar. I've got a few of these setup so, for example, if I want to do a Google search, I type "g" in the address bar and follow it with my query. Similarly, I have one setup for Google Image search, Bing, Dictionary.com, Wikipedia and a few others. I also have one for Google Maps to get directions easier. With these, I really have no reason at all to have a Search box taking up space.

Not having Back/Forward buttons might seem a chore...unless you read about FF Rocker in my last post. :) The goal is to get rid of items on screen that can be actioned using some other method..

Once I've subtracted, simply move the Address Bar up into the menu Toolbar followed by the widget named Bookmarks Toolbar Items. Things might be a bit cramped at this point, so you might need to make some additional changes. By default, the Address Bar is a bit wide for this setup. So, we need to find your Firefox profile. This is the directory that contains all of your personal settings for Firefox. This article describes nicely how to locate it. Once you've found it, you're going to want to go into the chrome directory (create it if it doesn't exist) and modify userChrome.css (again, create it if it doesn't exist. userChrome.css is a configuration file for aspects of the interface. I haven't done much twiddling, but two changes I do make:

#urlbar, #urlbar-container {min-width: 500px !important; max-width: 500px !important;}
#star-button {display:none !important;}

The first one sets the minimum and maximum widths for the Address Bar to 500 pixels. For the most part, the only bit of a URL I generally care about is the domain, and that generally fits within those 500 pixels. There is an issue with the new "encrypted page" indicator in later versions of Firefox. This takes up a wide part of the Address Bar to show you the domain the certificate is for. Sometimes, if the domain name is long enough, it'll take up most of the Address Bar, but I've never encountered a time where I thought "damn, my Address Bar just isn't wide enough" at 500 pixels.

The second entry removes the star button from the Address Bar. This button is used to bookmark a page, but I keep my bookmarks in Google Bookmarks, so hardly ever use it. Better to use Ctrl-D to bring up the bookmark tool than waste some space.

Speaking of bookmarks, you'll notice my Bookmarks Toolbar is fairly sparse with just favicons
representing most sites. To get a slim and trim Bookmarks Toolbar, simply go to the properties for each of the bookmarks and remove the Name. Very few sites these days don't use favicons, so you can always identify them without their name next to them.

You might also notice the folders on the Bookmarks Toolbar. I do have a number of sites I hit on a daily basis that don't have RSS feeds. My morning routine consists of hitting the "M" folder (for morning), going to the bottom and hitting the "Open all in tabs" link. This does as it says and all of my morning news is available for me to peruse in just a few moments. In the afternoon, there are some sites I hit that are specific to that timeslot. Hit the "A" folder (guess what that stands for) and do the same. The remainder are either work related or something I like to keep handy, but don't want to waste an icon on the toolbar.

Extending It Further

While the above can go a long way to trimming Firefox down vertically, there are still some cool things you can do with extensions to really bring it down to size. The one item that's taking up the most space at this point is the Tab Bar. Really, why do we need it along the top? Because that's the way we've always done it? This is where Vertical Tabs comes into play. There are a few options in the add-ons mart, but this is the only one that works with FF4. That's okay, though, because I've tried a few of the others and they add a lot more features than I really needed. I wanted my tabs on the side, that's it. With the tabs off to the side, it actually feels a bit more natural. After all, look at Windows Explorer (not Internet Explorer). Are the panes divided up top and bottom? No, they're next to each other. When you go to a site, navigation menus are typically on the side, and so on. It really doesn't take much getting used to once you install it.

Since you've squinched as much as possible into your menu bar, it's probably looking a bit crowded, right? Well, why not trim out some of the things you don't use as often? When's the last time you hit the Help menu? The Edit menu? Okay, some folks might still like that one, but I know how to hit Ctrl-C and Ctrl-V, so very rarely use it. :) Since the only bookmarks I store locally are on the toolbar and I'm using Ctrl-D to bookmark new ones, do I really need the Bookmarks menu item? Nope, so off they go thanks to Menu Editor. Trim your menus down how you like, but I've gotten rid of everything except File, View and Tools. It may seem a radical surgery, but the patient and I have been doing fine for ages now. :)

About the only change left at this point has already been done for you in Firefox 4: getting rid of the Status Bar at the bottom. Most folks seemed to like that change, some didn't. There's an extension called Status-4-Evar to get it back if you really like it. I haven't had much complaint working without it so far.

So, that's it, my slim, trim Firefox 4 setup. On a widescreen monitor, I get as much space devoted to browsing as I possibly can, and didn't lose any functionality. In fact, usage is generally improved some. Got any tweaks you know I might've missed?