Author Archives: chuck

Best Small Business Software

Are you a small business owner?  Do you like to keep costs low and productivity high?

Check these sites out.  These are all web-based applications.  No software to download.  I use them all, and highly recommend them.  (Full disclosure:   Like I saidI use them, and the links below contain my referral codes)

Freshbooks – very low cost accounting tool.  With this you can:

  • Import customers,
  • Create one-time and recurring Invoices. Can send invoices through email or snail mail (extra fee).  Customers can view invoices online.
  • Setup recurring email reminders for past invoices overdue.
  • Create one-time and recurring Expenses.
  • Accept online payments through PayPal or your Credit card processing company
  • Customers can create Support Tickets, create multiple staff logins to manage customer service, etc.
  • Customize with your own logo and text.
    Freshbooks gets my highest recommendation.  If you are not using it, then you are wasting your time.

Shoeboxed.com – Free trial – store all your recepits online.  Categorize them and you’re all set for tax season.

Outright.com – (now owned by GoDaddy and renamed GoDaddy Bookkeeping) Free bookkeeping package.  Can pull your income and expenses from Freshbooks and generate usefule P&L statements and other reports.  Upgrade monthly pricing $9.95/mon for invoicing capability.  Looks like the got rid of the EOY contractor 1099 generation (bummer).

Dropbox – Awesome place to store your files and share without having to think about it.

DreamHost – Good web site hosting, and cheap too.

Agile Estimation

Follow are a few thoughts on proper agile estimation and planning

Agile principles that apply to this conversation include:

  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  • Business people and developers must work together daily throughout the project.
  • Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  • The best architectures, requirements, and designs emerge from self-organizing teams.

Here’s examples of how traditional estimation/effort and planning fails:

  • The design is done early, but is not documented well enough for the developer to simply pick up and do the work.
  • The resulting story is broken down further into smaller stories that provide little or no context, again making it difficult to do the work.
  • Acceptance criteria are not defined. How can we prove that the finished product meets the requirement?
  • By the time the estimated story gets picked up, several sprints have gone by, and we’ve forgotten what we were doing or why we estimated it the way we did.
  • Handoffs add an inherent level of miscommunication. Each hallway conversation, email, written design document, etc. adds noise to the line of communication.

Agile estimation should be limited to a very wide estimation based on level of effort with no design; it is best to leave the low-level analysis and design to the team that picks up the story.

The Agile Estimation Process

The most common Agile Methodology concept is a User Story. It is a simply a written sentence or two that states succinctly what we’re going to do. A story can come from anywhere: customers, product managers, developers, support, etc.. Here is an example of a well written story: “As a bank, I want the flexibility to assign limits and review rules to a user or group of uses each time the user begins a transaction.” Note that the story does not specify how we will achieve this, only what we need.

So let’s discuss the estimation process. The estimation process should be simple and quick. There are three simple steps:

1. Presentation – The story owner (a.k.a. stakeholder) presents the story. It should be written down for everyone to see. In 5 minutes or less, give any background, context, or vision for the story.

2. Discussion – This is where everyone else gets to ask questions. I like to timebox discussions at 5 minutes. Anything longer invites deep design conversations, which are unnecessary at this point. Remember that we are just estimating. We don’t need to design it. Design should be left up to the team that picks up the story in their sprint.

3. Estimation – Everyone votes on how long it will take to implement the story. Usually, the estimation is in some form of time, or effort. If all are not in agreement, others may explain why they think it will take longer/shorter to do the work. This should take no more than 2 minutes.

Introducing 3 People in a Room

Every feature estimation needs to have at least 3 people in the room. This is actually a good rule to follow for ANY conversation about the story.

1. The customer – provides context for the feature. The customer says “We want to do this for these reasons”

2. The developer – understands software architecture, provides design advice.

3. The tester – understands the what and how of the design, so that we can prove that it works. The tester provides valuable insight into how long it will take to proof a feature.

Are you a good communicator? (part 1)

I’ve been reflecting recently on professional communications here at work, and I thought it would be good to jot down some notes. Remember that communications is a two part process: sending, and receiving. This part just talks about the sending part, not the receiving/listening end.

Face-to-Face/Video chat

This is the best form of communication. Responses are immediate. It’s most effective if the conversation is followed up with documentation afterwards, especially if action items are defined.

Following are some rules of etiquette to keep in mind:

  • If you suspect your conversation will take longer than 5 minutes, schedule a meeting/time where they can plan to be prepared to talk about your topic. Be prepared for your meeting. Prepare an agenda if you are discussing multiple issues.
  • If stopping by someone’s cubicle/office, ask them if they have a minute. If they say no, then ask when would be a good time to chat about the subject. If they are in a conversation already , do not interrupt.

Telephone

This is the next best form of communication (sans body language). Face-to-Face rules apply here too.

Email

Email should always be addressed to a person or persons. Mass communication is mostly ignored. If you send an email blast out to everyone, chances are many of them will simply ignore it. Especially if you do this frequently. How to address your email:

  • Directly addressed (To:) – These are the people that must read this email. They are expected to reply (if asked them to reply) in a timely manner.
  • Carbon copy (Cc:) These addressees SHOULD read the email, but may not. Do not expect them to reply, but only to be informed.
  • Blind carbon copy (Bcc:) – Use this to inform someone without other addressee’s knowledge. It is a way to secretly keep others aware of the communication. I like to call this email feature “bringer of certain cursewords”. I strongly urge that you do not use this email feature as it infers deception and may backfire on you. For example, you send a message to Joe that he has done something incorrectly. You BCC: Joe’s boss. Joe’s boss immediately ‘replies all’ and hammers Joe for doing something wrong. Joe inspects the original email and notices that his boss was not on the email list, but knows intimate details about Joe’s failure. Now Joe is angry with you for (what looks like) secretly trying to get him in trouble. It’s just not worth the hassle.

The following are some points to remember when composing your email message:

  • Addressing – TO: the people who must have the information. CC: the people that might need to be informed. Do not BCC: anyone. Ever.
  • Use a meaningful and descriptive subject line (e.g. ‘Meeting minutes from Product X meeting on January 4, 2012’)
  • Write clearly and concisely. Do not leave room for interpretation.
  • Use appropriate headings, fonts, bolds, underline, lists.
  • Proofread your email. Check for the implied tone your words convey. For instance, when I got someone else to proofread this read this message, I found out that my tone was originally a bit terse.

Generally speaking, email requests should not be expected to be returned in less than 24 hours. Some people on check email only twice each day. Also, email is not a guaranteed form of delivery. It could be caught by a SPAM filter or mistakenly deleted. If you need a guarantee that someone has read your email, call them to confirm.

When responding to an email, you should consider the following:

  • Read the entire message. There may be additional context in the forwarded messages.
  • Will your reply contribute substance to the conversation?
  • Use ‘Reply All’ sparingly. Does everyone really need to know what you are about to say?
  • Proofread your response.
  • It is never appropriate to write an inflammatory or derogatory email, whether provoked or not. Never. Remember that your email communication becomes part of the permanent record of the company, and according to new laws, must be retained for several years. Would you want your flaming email to be viewed by a lawyer 5 years from now?

Blog/website

This is communication to no one person in particular, but to everyone. Assume that it will be consumed by everyone, even those that may not be familiar with the subject matter. Most good blog entries are informational. They contain the WHO, WHAT, WHERE, WHEN, HOW, and WHY of a specific point. I think the best blog entries are also entertaining. They include personal stories exemplifying the subject matter.

Snail mail/FedEx/UPS/USPS/Fax

I almost lumped all of these methods together in a category called ‘No longer effective’, but there are still some uses:

  • permanent legal documents;
  • documents that require signature;
  • Documents that require a certification/guarantee of delivery.

Note: Faxes are not a guaranteed form of communication. Faxes get lost. People are not always around to pick them up. Faxes should always be followed up immediately by confirmation of delivery.

Living without a cell phone

First, Let me say that I hate being stuck with the phone I buy for 2 years.  But I’m cheap, so that is what I usually do.  Then I “upgrade” to another device with the same carrier. Now European, Asian, and others continents get to buy they phone they want and use it on whatever carrier they want. Only the dumb cattle here in the U.S. put up with the antiquated style of marketing that only big U.S. companies can provide. I can’t wait for domestic carriers to catch on to this trend. Right now they make too much money off of us suckers.

Second, I really hate Apple. I love their products. But I hate the walled garden that they put around their hardware (and software).   Imagine only being able to wear that fly Tommy Hilfiger oxford inside the Sak’s where you bought it.  Stupid, right?

But I digress.  Last Christmas, I received a 3rd gen 32 GB iTouch as a gift.  I really do like the device for its capacity to store and keep updated the volumes of podcasts and plethora of bohemian music that I regularly consume.  Love it!  Plenty of nice apps, and I can use Skype.  Hmmmm….

So I dumped my Palm Treo 650 (purchased in 2005, don’t laugh) with its pathetically slow data speed, and “upgraded” to the Novatel Mifi 2200 device .  It’s the same as the Verizon branded one.  The device is sleek and did the job very well.

Novatel Wireless MiFi 2200

Novatel Wireless MiFi 2200

Not bad.  I can surf the web while I’m driving along in my car.  AND… since I got Skype on the iPod,  I have a phone, too! Well this was working out pretty good for me, but I got greedy.  First, there were a couple of dead spots driving around town, and occasionally Skype would just die on me.  Secondly, I had to pay extra for any exorbitant amount of data I was using (2 GB) limit.

So I “upgraded” to Sprint’s Overdrive 3G/4G Mobile Hotspot device instead.

Sprint Overdrive 3G/4G Mobile Hotspot by Sierra Wireless

Overdrive 3G/4G Mobile Hotspot

Nice!  So I get 4G speed if I can, and I can download the whole internet over 4G and not have to pay for it.  But alas, the Sierra device spends more time switching from 4G to 3G and then looking again for 4G that it’s almost worthless unless you’re standing still.

I’ve had a some other problems with this device, too.  If the device is plugged in, it just wants to charge.  No connecting to the web, just charge. Also, if the device is too hot, it won’t charge.  And occasionally, it just won’t shut down.  I spend quite a bit of time popping the battery out just to turn it off.

Both devices get red hot if you’re moving a lot of data, so you don’t want to go sticking these things in your breast pocket.   But if you’ve got a place to sit down and get comfortable, I highly recommend either one of them.

What’s that fishy smell? It’s electrical

For the last few days, it’s been life at the Marable household as usual, except we’ve had a few extra guest in the attic. So I set the usual trap and hoped for the best. We were surprised by the occasional fishy smells that were drifting down from the attic, but figured the smelly little beasts had done something unmentionable.
But there seemed to be a pattern. Every time someone took a shower in our master bedroom, the foulest fishy odor would greet you as you exited the bathroom into our bedroom. Gentlemen, this does not make for a good stories in any way.

Naturally, we googled about the smell, and it turns out that the odor is often related to electrical connections and appliances burning too hot, usually due to faulty wiring or wires having worked their way loose over time. After a very brief investigation, we found that the elecrtical outlet on the wall inside our bedroom as you enter the bathroom was hot (not warm, but hot) to the touch. Bam! As you can see from the picture inset, the outlet was toast. Literally. It crumbled apart when it was removed.
As it turns out, taking a shower just exacerbated the faulty electrical switch because the bathroom wiring was routed through that outlet. So the fish smell was greatest after having been in the bathroom with all of the lighting on for 15-20 minutes.
While I’m not certain why this happened, I have a theory. That outlet was essentially used as a junction box for all the wiring of the bedroom and bathroom. As such, the electricians should have used a heavy duty outlet. What you can see above, they used a normal use outlet. Which worked fine for several years. But with a TV/DVR combination plugged into it and running a hair dryer, curling iron, and 12 40 watt bulbs in the bathroom next door, it couldn’t stand up to the pressure over time.
Either way, the outlet’s been replaced. This post serves as a reminder to me, and a warning to you. Do NOT ignore that fishy smell. It could be the warning that saves your life.

Deploying My 1st ASP.Net MVC site

So I’ve been kicking around the idea of re-doing my consulting business web site for a while now.  My last design sucked.  I was quite embarrassed to send anyone to the site.  I finally got the motivated after having attended atlantacodecamp and then hearing about ASP.Net MVC 1.0 finally being released this week.

Luckily, I’d already started a prototype from an earlier beta release.  I’ll blog more about writing the code later.  I’d been tinkering with lightweight Business Objects. cool mock unit tests, and SubSonic data layers to keep my mind off of doing any real work.  But the real problem was that I had a lousy looking site.  All my designer buddies were pretty busy (why is it that everybody wants a new site design in the Spring?), but I finally managed to find a nice clean CSS layout for free on the web.  With that in hand, I was fresh out of excuses.  My site was ready.  Not functionally, but at least it looks better.

ASP.Net MVC 1.0 needs the Microsoft .Net Framework 3.5 SP1 installed.  This sucked for me, because my web server was already low on space.  The service pack is a 220Mb download that requires at least 300 Mb free before even thinking about installing on your system drive.  I think I had maybe 100 Meg free.  But I was desperate.  So it was time to try something crazy.

So I just uninstalled .Net entirely.  Backwards.  Control Panel, Add/Remove Programs.  First, remove 3.5. Then 2.0. And then 1.1. Next, I installed 3.5 SP1.  Voila!  Since 3.5 SP1 is cumulative, it reinstalls everything again!  Finally, install MVC.

Next, I deployed my site.  Nothing to it.  Build.  Copy.

So you’d love to hear that I deployed my site and everything worked fine.  No such luck.  IIS 6 has a little problem with MVC’s routing engine. This is solved quite easily by just clicking the Configuration button of your site in IIS Manager (on the Home Directory tab). On the Mappings tab, add a wildcard application map using C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll.  Make sure you uncheck the option to verify that file exists.  Now if this were a big production server, I’d have a problem with this step.  You can read more elsewhere about it.  But my site is not a huge production site.  So I’ll let it slide for now.

Check it out  www.pm-consult.com.  Now if I could just find a writer to put some content out there.

Atlanta Code Camp

I must say I am looking forward to Atlanta Code Camp.  My main man Paul Lockwood is going to give a lecture on the MVC stuff he did recently.  That was pretty intense, and I’ll be glad to finally see what he did.    I’m also looking forward to a presentation on Ruby by  Chris Rauber.   And an introduction to Amazon S3 by Doug Ware.

In all, it promises to be a fun-filled, geeked out kind of day.

Sysinternals Live from the Web?

Sysinternals Live is a service that enables you to execute Sysinternals tools directly from the Web without hunting for and manually downloading them. Simply enter a tool’s Sysinternals Live path into Windows Explorer or a command prompt as http://live.sysinternals.com/<toolname> or  \\live.sysinternals.com\tools\<toolname>.

You can view the entire Sysinternals Live tools directory in a browser at http://live.sysinternals.com.

Go here.  All the latest tools are online.

Google Notebook put to pasture

So I’m a little late, but I see that Google has discontinued development on its Notebook product (Official Google Notebook blog). I am very disappointed in this news. I use it for:

  • a Work Journal – it’s how I know what I did and when I did it. This works out especially well as a software contractor.
  • a Diary – Sometimes, I just want to rant, but really don’t want anyone to read it. And I figure whenever I get famous, it’ll make the autobiography that much easier.
  • a Tech Manual – I’ve got all my crib notes on various technologies organized here. Things like how to install ASPNet membership services correctly, SQL Server 2005 database performance and tuning tips, and Apache /Subversion setup instructions. This is extremely useful.
  • A Client journal – I have a Notebook specifically for client information. I write down all the crazy ideas that clients have dreamed up, and cross them off when I complete them.

After Gmail and Calendar, Google Notebook is probably the most important app that I use. I’m sorry to see it shelved.

I am trying to give EverNote a chance, but their interface doesn’t really impress me thus far. I do like the fact that I can download an app for my PC and edit notes offline (a whopping 54Mb download). But when am I ever offline? And why would I want more software cluttering up my PC?