Tips on working from home

I have now been working from home for the better part of a year. Being self-employed has its advantages; not only do I get to choose the technology I will use (Goodbye Windows, Hello Macintosh), I also get to determine where I want my office to be. While others struggle with the daily drive to the office my biggest concern during my daily commute is turning an ankle while walking down the stairs to my home office.

Of course you don't have to be self employed to work from home. A surprising number of my friends and neighbors that work for other companies work from home as well and have to deal with many of the same issues I do. I've worked from home many times in the past as an employee and have also managed people that worked from home so I have learned a few things that may help you out if you are considering it.

1) Personal hygiene is NOT optional
It's so easy to simply stumble down stairs (or into the room you work from) and not worry about getting dressed for work or even taking a shower. One of the most important things to do when trying to adjust to working from home is to treat your day as though you are going into the office. Set the alarm, eat breakfast, exercise, shower, get dressed; whatever your normal routine is before commuting to the office. Try to do the same thing when working from home.

The people you live with will also appreciate not finding a pajama clad Sasquatch when they come home.

2) Make sure your family/roommates know when you're at work
If you live with others, be it a spouse, children, parents or roommates, make sure they all understand when you are in work mode. Let them know that when the door to the home office is closed you are at work. No door? Establish "work hours" and let people know that you should not be disturbed during that time. This can be especially difficult if you have people home with you when you are trying to work. You don't have to be a jerk about it mind you; hugging the kids and reminding them of their chores/homework when they get home is an important benefit of working from home.

Young children are the hardest to deal with while working from home; having a child under 5 in the house and trying to work is extremely hard. Don't assume that because you are working from home that you can automatically do your job and also be a day care provider. Short of mindless physical or highly repetitive tasks the interruptions will prevent you from doing anything meaningful. If you are able to get real work done then chances are you're not really there for your child. You may be one of the small number of people that can pull it off; if so you are in rare company. I found being a parent of young children was a full time job.

3) Become very organized
If you're not a "To Do List" kind of person consider becoming one. Write out a list of the things you need to get done for the day regardless of how trivial and cross them off the list as you go. You will likely be under increased scrutiny if you work from home so make sure you can clearly identify the things you are getting done. It's not just an accountability to your manager, it's also a tool that keeps you on track. If your company uses a shared calendaring system like Exchange you should make sure things like conference calls and out of office meetings get recorded there.

The distractions when working from home can pull you off track if you let them; having a list to turn to makes it easy to get back on track.

4) Be accessible
As a manager of people that worked from home I always became suspicious when they "dropped off the grid". I once had an employee that said he was working from home for the day simply disappear. He didn't get on our Instant Messaging service, was not reachable by phone and didn't reply to e-mails until late that evening. As a manager that has to trust my employees I felt that trust was violated. When I confronted him the next time he was in the office he said that he was "heads down" working and wanted to try to be productive so he didn't answer the phone or e-mail. He was a software developer so that's plausible but he couldn't really quantify what he accomplished that day. In his particular case the trust was broken and it was never recovered.

If you use instant messaging, update your status so people "see" what you are doing, much as they would if they strolled by your cube or office. Make sure that your boss feels comfortable with the way you work from home. Since you're not going to be in front of them as much make sure you establish clearly what they expect from you. Need to be heads down and work uninterrupted? Just let the boss know and give them an emergency way to reach you.

Some people that work from home feel that they should inundate their co-workers with e-mails and voice mails to prove that they are indeed working. Most people see right through that. Don't go overboard with the visibility thing, find a balance that closely emulates you working in the office.

5) Take care of yourself
One of the downsides to working from home is the easy accessibility of food. You get up to stretch your legs and there is a pantry or refrigerator just waiting to be raided. Sure, there may be snack machines in an office environment but they usually a) cost money you may not have handy and b) make you feel guilty as you walk by your co-workers several times a day inhaling a bag of Famous Amos chocolate chip cookies. If you don't have the self-control to handle easy access to unhealthy snacks then don't leave them around the house.

Getting some exercise throughout the day is also really important. When you work from home you drop a HUGE amount of walking out of your daily routine. Every couple of hours you need to get up, stretch and take a short walk. If you live within a reasonable distance walk or take a bicycle to get your lunch. If the weather is nice I will often grab my MacBook and move out to our deck to get certain types of work done.

You need to be careful not to become a shut-in once you start working from home.

6) Separate Work and Home Life
Once you set a work schedule make sure you stick to it as best you can. Though it's different when you are an entrepreneur (work is never really done), as a paid employee of a company you should try to wrap work up at a reasonable time and move to another part of the house to relax. Kick off the shoes, maybe even change clothes so that you mentally reinforce in your mind that you're done with work for the day.

I realize that these tips make it sound like I'm sucking most of the fun out of working from home. The reality is it's still called "work" and by definition it should generate results or achieve a purpose. If your employer is willing to trust you to get work done from home you should return the favor and not view it as a convenient way to slack off without getting caught.

The benefits of working from home include a lot more than setting your own schedule and working on your terms; add up the amount of time you get back by not having to deal with a commute. If you work from home 3 days a week and normally have a 30 minute commute you're getting back roughly 150 hours of time a year. You're likely cutting out over $600 annually in out of pocket fuel expenses, dramatically reducing the wear and tear on your vehicle and you are helping the environment by reducing your traffic footprint. If you manage it well everyone benefits from it.

Now that I've wrapped up this blog post I'm going to stretch my legs and find a snack upstairs. Hopefully something healthy.

Already working from home? Got another tip that will help people that do? Drop a note in the comments!

A Fast Way to Learn MySQL

I've been doing development work for quite a while and up until my recent switch to Mac I had been doing that work using Microsoft technologies; on the database side I was using Microsoft SQL Server. When I started playing around with Ruby on Rails I also needed to switch out the underlying database I was using, settling in on the wildly popular MySQL.

Though there is a huge amount of information available online for MySQL I still like purchasing technical books and I cast about for a decent entry level book on the topic. What I found was Ben Forta's MySQL Crash Course. If you are trying to learn MySQL, especially if you are new to SQL in general, this book is a must buy, especially given the price.

The presentation is consistent throughout and Ben frames most commands with Input, Output and Analysis. He demonstrates what a particular command looks like in Input, displays the results of the command in Output and then discusses the nuances of the command in Analysis. His writing style is extremely easy to understand and makes walking through the examples interesting and informative.

This book does not really cover installing MySQL in any kind of detail. Since that's highly dependent on the version you will be using, the OS you are running it on, etc. that's best handled by web resources or from the MySQL web site. The book very briefly covers things like backup and performance tuning but those topics are better served in other places. Finally, if you're already a SQL expert then this book may be of limited value to you. I was quite rusty in my SQL skills so this book served more as a refresher for me and covered some of the MySQL specific nuances like full text searching.

If you have been wanting to learn more about MySQL and want a good desktop reference book that will help you master the basics quickly I recommend you grab a copy.

Got another MySQL book you like / recommend? Please drop a note in the comments.

Mastering Twitter with TweetDeck

I'll be the first to admit that I didn't "get" Twitter. When I first heard about it and saw that "tweets" were 140 character micro-blog posts that contained such mindless drivel as "Heading out to work" or "Getting a haircut" I dismissed it as pointless.

A couple of months ago my good friend Jeff told me that I should give Twitter a go. Jeff's a bright guy so I ask him "Why on earth would I want to do that?". His response was "You don't blog frequently enough for me". Well, this was indeed true. As I've been working more and more on my startup I didn't have as much time to devote to blogging. I had lots of things I wanted to share but didn't want to take the time to put together a full blog post for it.

So in July of '08 I grabbed a Twitter account and started tweeting away. I only had a couple of "followers" (people that would see my tweets in their Twitter home page) for the first few weeks. They were close friends that were also playing with Twitter for the first time. At that point simply using the interface that Twitter provides on their home page was enough. I'd drop in my 140 character status, catch up with what my friends were doing and that was that.

After a couple of months I had done little more than checked in a couple times a day to see what people had "said" and try to drop in a pithy quote here or there. Then Jeff pointed me towards the Search feature in Twitter and mentioned the value in using key tags in a search. Since Jeff and I are both huge Washington Redskins fans he found that many people were inserting a #skins tag in their tweets. By searching for that we could see a global and very dynamic conversation that was going on with our favorite football team.

As new tweets came in for the search term a dynamic indicator at the top of the search page would indicate how many new results there were and provide a link to refresh the page. This was great and opened a whole new way for me to look at Twitter. It suddenly became more about participating in a global conversation on topics of interest, a cross between an old fashioned chat room and a forum.

While all this was great there was one little problem. I found myself constantly pulling up browser tabs with different searches on them that would allow me to see what was going on. Though the web interface for Twitter is very easy I found that the more I used it the more difficult it became to manage the various views I had for Twitter data.

Enter TweetDeck
TweetDeck is an Adobe Air Desktop application that runs on Mac, Windows or Linux. It provides a multi-column interface for accessing different views of your tweets. You can create multiple columns of the following types:

All Tweets: A collection of tweets from everyone you follow
Replies: Replies targeted to you regardless of whether you follow someone
Groups: A customizable list of people you want in their own column
Direct Messages: Non-public tweets sent only to you
Search: Enter search terms and every tweet that contains them appears
Favorites: You can get a list any tweet you have flagged as a favorite

Within any of these columns you can also set a filter to help limit what you actually see in the event your are tapping a tweet source that is very active. You can also mark tweets as read and have them removed from your view if you only want to see what's new. At the top of the All Tweets column is a number that shows you how many unread tweets you have though that's the only place the unread count appears for me on the current 0.20b version.

Individual tweets display the image for the person making the tweet that doubles as a menu for interacting with it. Mouse over it and you have the ability to Reply, Retweet, Send a Direct Message or mark the tweet as a favorite.

The area at the top of the window for entering tweets is spacious and clearly marks how many characters you have typed in, also giving you tools to insert a shortened URL or a TwitPic (always helpful when dealing with a 140 character limit).

The notification options for TweetDeck include playing a bird chirping sound whenever new tweets arrive (which for me became quickly annoying; I turned that off), as well as a small notification window that will tell you which of your columns has received new tweets:

This was also something I turned off. Iain Dodsworth, the developer of TweetDeck indicated in a recent tweet that it would soon offer Growl support.

TweetDeck works by talking to the Twitter APIs, pulling down the messages you are reading and dropping them into a database on your local machine. Though you can manually pull down tweets at any time Twitter limits you to the number of API calls you can make in a specified period of time. You have some control over this polling of the Twitter service if you feel like tweaking how quickly your tweets come in.

Using TweetDeck
I really enjoy using TweetDeck. Though I would like the user interface to be a lot more compact I can generally see most of what I want on a single screen if I make the window large enough. On my Mac Pro with two 1600x1200 displays I've found that TweetDeck works best with 4 visible columns. Unfortunately you cannot size the columns so on my 1600 pixel wide display I max out at 5 visible columns.

I love that it has shortcuts for URLs and pictures when I am creating a tweet and that I can Retweet something I find interesting to my group of followers. I really do wish the text entry area had auto spell checking though; since it's now embedded in virtually every editing surface I have I've become quite accustomed to seeing little red squiggles when a word is misspelled.

Getting beyond the UI, the biggest benefit to TweetDeck is that I can create a number of different columns that can track my interests, especially by entering a search term. This is where Twitter stops becoming just a cute little time waster and starts to become a very powerful networking tool. If you have a deep interesting in something just put it in a search column in TweetDeck and see what comes up. If it's an active topic the search window will dynamically update, providing you with an ongoing stream you can dive in to if you see something that catches your fancy.

I have had some problems with these dynamic search windows in TweetDeck on occasion. Some times they will simply stop grabbing new results and need to be closed and reopened in order to see new results.

TweetDeck is not perfect but it is by far the best tool I've used for accessing Twitter. If you've got a better tool for accessing Twitter please drop a note in the comments or feel free to follow me on Twitter and shoot me a reply.

Anti-virus software and Macs

Yesterday's Washington Post Security Fix disclosed that on November 21st of this year Apple put out a technical note where they recommend the widespread use of anti-virus software for Macs, including specific recommendations for Mac AV utilities.

I've never believed the "Macs cannot get a virus" mantra that some people spread. The reality is that any computer where the user has the ability to write to the hard drive or install applications is subject to a program doing evil deeds without their knowledge.

I've been a Mac user for 10 months now—a relative neophyte—but have learned a couple of things that have carried over from my Windows days. The single most important one is to be very careful about which software I allow to get installed on my Mac. When I install something that comes from the web I get a little confirmation dialog:

In addition when I try to run full installation programs I will often get prompted to enter the administrative password for my Mac:

Some applications, like those based on Adobe AIR's development platform include their own warning dialog:

In all of these cases it's critical to stop and think about what you are doing. This is a virtual knock on your door where you get a chance to either turn someone away or let them in your home. It's critical that you take a moment and think about what you are doing; don't just blindly enter your password or allow software to be installed. If you have gotten into the habit of blowing past these dialogs then you need to stop doing that and think it through.

The other thing is to stay current with Software Update. When that little globe is bouncing on my Dock Bar I generally install the updates that it recommends.

Do you run anti-virus software on your Mac? Though I'm very cautious with my own machines I do worry that my wife and teenage children will not be as diligent.