FreshBooks Cloud Accounting

FreshBooks Cloud Accounting

Products I Love

Much of my business happens when I’m not directly in front of my computer. Signing up new clients, tracking time, and entering invoices are all really important to capture quickly and efficiently, and when I first launched Taff Data Services, LLC. I sometimes forgot to enter an invoice or log some billable time, which translated into lost revenues. It was obvious that I needed to find a better solution.

After researching all the popular small business accounting products, I realized what would really move the needle for my budding business was to find an accounting system I could run from a web browser, tablet, or smartphone. There are lots of great products on the market, but I believe that FreshBooks Cloud Accounting is the best of them all. FreshBooks is very affordable and packs a ton of features. Here are just a few of my favorites.

  • Apps for iPhone, iPad and Android
  • Time Tracking and invoicing – great for freelancers and service providers!
  • Project management
  • Integrated customer portal
  • Expense tracking and reporting, including photo receipts
  • Easy-to-use tax reporting
  • Email and Snail-Mail Invoicing!

One additional nice feature is that if you’re just getting started and don’t have any paying clients yet you can start with the free edition and get some revenue coming in the door before you pay the very affordable price for this great accounting system.

I’ve been using FreshBooks for years without the slightest trouble or headache, and haven’t missed a revenue opportunity yet.  Whether you are in need of your first real accounting system, or just need something that’s simple and easy to use, I highly recommend FreshBooks Cloud Accounting.  If you sign up, I encourage you to use my affiliate link below.


Great By Choice by Jim Collins

Great By Choice by Jim Collins

Books, Self-help, Technology

Winner. Good book. Worth reading more than once. Listened to it on audiobook last year and am reading back through it again now in electronic print on my Kindle app. Couple of notes on the format: I normally choose print versus audio, because it sinks in better and is easier to reference at a later time. One exception is Jim Collins. He reads his own books and does so with enthusiasm and energy that makes the book anything but dull. Collins is a safe bet in audio.

Collins goes through some down-to-earth truths about breaking through from normal to extraordinary, such as:

  • Plan meticulously.  Plan for even worse than the worst.
  • Repeat your daily must-dos with religious fervor
  • Taking risks the careful way

This is book is a fresh batch of research presented in the traditional Jim Collins voice, and is well worth a the read.

Simple DIY: Create a Website Using WordPress


Many people in my circle have recently become interested in making a blog or website, so a few weeks ago I set out to document the process.  This is the second of two posts on the subject.  The first is geared toward those who are looking to quickly and easily set up a personal blog to share experiences or advice.  This post is directed toward those who want to use the simplicity of a powerful blog format to help them easily create a website for their business or organization.  Let’s get started.

For this project we’ll be using The first step is to pick a name for your blog.  Just like the first post I have chosen Bullfrog Song.

Success!  The name I want is available.  Save it using a password and register using an email address. (NOTE:  no fake emails allowed.  They will email you to verify you own the address)

After clicking “Sign Up” you have a fully-functioning blog, suitable for personal use.  In this case my URL was

Here’s what a brand new WordPress site looks like after you first set it up.  Click the Login link (shown in red below) to start moving in…

Nothing special here.  Use the username and password you specified in step 1.

WordPress welcomes you again after your first administrative login.  Such friendly folks, there at WordPress.

In typical geek fashion I’m wasting no time in upgrading.  These next steps allow me to become instead of just  Not only is this easier for visitors to remember when they’re looking for me, it looks more professional (well, except for the silly name).

In this dialog box we specify the name we want.  No need to add “WWW” to the front of it.  No need to fret about upper or lower case.  None of this is important to the Internet.  If you insist that one way is right, go with all lower-case letters, because caps means you’re yelling… and really, that would be the Internet equivalent of yelling your order into the drive thru speaker at McDonalds.  Unnecessary and unappreciated.

Nothing exciting or unexpected in the following example.  You want services, they want money.  You give them money, they give you services.  It’s a symbiotic relationship.  Everyone’s happy.

A yellow band of congratulatory text is your reward… that, and a brand spanking new domain name.  This will advance you far beyond the Joneses next door and their unpersonalized blog about bullfrogs.

As they requested, I waited 60 seconds, changed the main name for my new blog to the new domain I just registered, and clicked Update Primary Domain.

SCORE!  We have a domain name now and if we browse to it works just fine, showing everyone our site… which is, alas, very plain and boring.  We’d better log back in and set up some personalizations.

Let’s cruise this time down to the Themes section on the left side of the screen, and choose a new look for our site.  You can search by keyword, color, features, and so on.  WARNING: Theme surfing can be addictive and never-ending.   There are thousands and thousands of themes from which to choose.  Beyond that you can make your own theme from scratch, and you can buy them from places like (Thanks to Dan the Man from work for hooking me up with this resource.  Now can you not only search endlessly for free themes, you can pay endless amounts of money for non-free themes!)

I thought this one was nice, and the price was right.

Activate theme? check.

We’re looking pretty good.  Now to get REALLY busy.

This is where the article ends and your creativity begins.  Just a couple more screenshots of how to set up your widgets, but there is much more you can do.  You may want to consider creating a few static PAGES (which differ from posts) and spend some time surfing through WordPress help to get a good understanding of what all you can do.  WordPress manages to be a very flexible and robust platform while remaining simple enough for anyone to use.

Here we move to the Widgets section and drag a widget to our sidebar.  This allows us to keep static elements on the sidebar.  In this example I’ve added a place for visitors to sign up for email updates.  Now they can get email updates every time I post something new on my site.  This is really handy for when I’m selling something.  Anyone who likes my business is instantly up to speed. Pretty simple to do, too.  Just drag and drop from left to right.

Make any needed changes and click save.

And view the final result.  Notice that we now have an email signup form on the sidebar.

In conclusion, I found this project to be very simple indeed.  In fact, it took me significantly longer to write this post and add the images than to acquire and set up the blog.

Forklift 2008: Replace 2003 Domain Controller with 2008 R2 Using the Same Name



If you’d like me to update this guide for Server 2012 R2 and beyond, or to see a similar guide for SQL Server, drop a comment at the bottom of this page and let me know.

This document details the procedure for replacing an original domain controller running Windows 2000 Server or higher (referred to in this document as SOURCE) with another server running Windows 2000 Server or higher (referred to in this document as DESTINATION). During this procedure you will need a third server for temporary use (referred to in this document as TRANSITIONAL) – normally, this server is introduced in the form of a virtual machine, but a physical machine is also acceptable.

NOTE: this document assumes that all forest operations will be performed by a member of the Schema Admins group, all domain operations will be performed by a member of the enterprise admins group, and that all local operations will be performed by a member of the Administrators group local to the targets in question.

dcforklift-updated-2008R2 in Microsoft Word Format

Pre-migration Tasks

  • Create a standalone server running the same OS version as the replacement server. This server will be TRANSITIONAL
  • On SOURCE server, install the Windows Support Tools from the SUPPORTTOOLS folder on the respective operating system CDs.
  • Test the SOURCE server for problems
    • Click Start, Programs, Windows Support Tools, and click Command Prompt.
    • From the command line, enter the command netdiag, and address any problems that are listed
    • From the command line, enter the command dcdiag, and address any problems that are listed
    • Fill out FILE SHARE and PRINTER worksheets using information from SOURCE

File Shares Worksheet


Printer Shares Worksheet


Migration Steps

On the SOURCE server, insert the Server 2008 installation media (or browse to the shared files), navigate to the d:supportadprep folder, and execute adprep32 /forestprep.

Enter “C”

If it has not already been done, use Active Directory Domains and Trusts to raise the forest functional level to Windows Server 2003.

Launch adprep32 /domainprep, followed by adprep32 /gpprep

On SOURCE, perform adprep32 /rodcprep

Join the TRANSITIONAL server to the domain

On the SOURCE server, export the DHCP database using the following Net Shell command:
netsh dhcp server export c:dhcpdb

Shut down DHCP on the SOURCE server

Install DHCP on the TRANSITIONAL server

You will get an error after the selection of Global Catalog prior to the promotion. See

Copy the DHCP database backup from \[SOURCE]c$ to c: on the TRANSITIONAL server

Import the DHCP database from the backup

netsh dhcp server import C:dhcpcb

On TRANSITIONAL, net stop dhcpserver

On TRANSITIONAL, net start dhcpserver

Open dhcpmgmt.msc and confirm that your options migrated. If so, set the startup type of the DHCP service on SOURCE to DISABLED




On TRANSITIONAL, confirm proper active directory operation and allow adequate time for data to replicate




Connect to domain [domain.fqdn]

Connect to server [transitional.domain.fqdn]


Transfer PDC

Transfer RID Master

Transfer Intrastructure Master

Transfer Domain Naming Master

Transfer Schema Master

On SOURCE, check directory services logs to confirm that the changes took place as originated from the other server. This step helps prevent you from following false information reported by a server that has fallen out of replication. Initiating the sequence from one server and checking the result from another helps confirm that both servers have a consensus.

On SOURCE, open dssite.msc, navigate to NTDS Settings, and make SOURCE no longer a global catalog server.

On TRANSITIONAL, point the DNS client to itself, by updating the TCP/IP configuration in NCPA.CPL. NOTE: this step will cause inconsistencies for clients that have obtained IP addresses (and DNS client information) by means of DHCP. If you prefer, you may change SOURCE’s IP address to something new, update DNS host records, and add the original IP address from SOURCE to TRANSITIONAL. This guide assumes all operations will be performed in sequence and without significant pauses.

Open REPLMON on SOURCE to monitor both SOURCE and TRANSITIONAL to follow replication during procedures that occur during changed IP addressing. To do this, navigate to CN=Schema,CN=Configuration,DC=[domain],DC=[tldn]

NOTE: replmon is no longer available on 2008.

If both servers are replicating properly, and there are no significant DNS or Directory Services problems, demote SOURCE. NOTE: DO NOT check the “this is the last server in the domain” option.

Restart SOURCE and monitor logs to confirm that SOURCE is no longer participating in the DOMAIN

Disjoin SOURCE from the domain, restart, and then shut SOURCE down.

Rename DESTINATION to the name of the ORIGINAL server (in this example, DATASERVER)

Reboot the new server

Just a quick check of the domain:

Join the domain and reboot the NEW server

Log on to the DOMAIN after the reboot.

Configure the NEW server using the ORIGINAL server’s IP address, but point DNS to the TRANSITIONAL server

Promote the NEW server to a domain controller

Note the warnings here. See MS KB article 942564 for further details:

Don’t forget this password. It’s important and you’ll need it to restore AD if necessary at a later time.

Add the DHCP role to the NEW server

Accept the defaults on all options. We will be replacing the configuration options soon.

On TRANSITIONAL SERVER, export the DHCP database to a file, and shut down DHCP Services

Copy the backup file from \TRANSITIONALc$dhcpdbNew to c: on the NEW server

NOTE: in this step, for me the process kept erroring out. I had to use the CLI to get the operation done.

dhcp server
import c:dhcpdNew

Point DNS client on NEW server to itself

On the NEW server, execute ipconfig /flushdns and ping vmdomain.local. Check Director Services log for any problems.

Transfer roles to the NEW server using NTDSUTIL

Issue NETDOM QUERY FSMO on both NEW and TRANSITIONAL servers to confirm consensus

Check Directory Services logs for any errors before proceeding

Confirm that the NEW server is a Global Catalog. It should be if you selected that option during DCPROMO

NOTE: If you are enabling this for the first time, wait at least 5 minutes before proceeding to the next step.

On TRANSITIONAL, uncheck the box shown to remove the global catalog function from the TRANSITIONAL SERVER. Perform this action from the NEW server, and confirm it from the TRANSITIONAL server. This helps confirm that replication is working properly.

Confirm in the Event log as well as in Active Directory Sites and Services

Configure the TRANSITIONAL server to point to the NEW server for DNS. We will begin backing TRANSITIONAL out of the domain now

Ipconfig /flushdns and ping vmdomain.local

If it resolves to the TRANSITIONAL server, we need to update DNS records

On NEW server, issue ipconfig /registerdns.

On TRANSITIONAL server, issue ipconfig /flushdns, and ping the FQDN of the domain again. It should resolve to the IP address of the NEW server. If it does not, you can manually update DNS records from dnsmgmt.msc. At this point, we just need to get the DOMAIN resolving properly and make sure the involved domain controllers resolve propelry. We will be returning to dnsmgmt.msc to clean up DNS after demoting TRANSITIONAL.

Choose a local administrator password (you’ll need it to log in locally after disjoining from the domain.

Complete the wizard and reboot.

From Server Manager, click Remove Roles, and deselect DNS Server and DHCP Server.

Reboot TRANSITIONAL when prompted.

Wait for configuration changes to complete on TRANSITIONAL, and reboot TRANSITIONAL again

Disjoin TRANSITIONAL from the domain and reboot.

Shut down TRANSITIONAL server.

On NEW server, open dssite.msc and remove reference to TRANSITIONAL

In dnsmgmt.msc, make remove references to TRANSITIONAL in all zones, including the _msdcs zone.

Check DNS and Directory Services logs for problems.

You’re almost done! At this point you should have a server on new hardware, running a new operating system, with the same domain you had before you started. Group Policy Objects, Usernames, Groups, and most other Active Directory elements should have remained intact. Additionally, you should have NO NEED to visit workstations. The last steps you need to perform are to follow the worksheets and install your system applications and services, restore your data, shares, and printers. Then start up all services and make sure you can reboot.

Things to fix:

Printing. Server 2008’s printing will work differently, and it would be a good idea to set up scripts to remove the old printer connections from your workstations, and to add the new printer connections to them so you don’t have to visit any more workstations than necessary for the purposes of setting up printers. I believe printing should be one of the only things to require a visit to a workstation.

Shares and permissions. If you used backup software, restoring permissions is easy. If you manually printed out ACLs then you’re in for a long night, but you should be able to duplicate your file structure exactly.

Desktop applications

Roaming profiles. This is a dodgy one. Profiles changed dramatically in the new OS and behaviors may change when you log on for the first time.

SMB packet signing and encryption settings. This is especailly important when dealing with older workstations running Windows XP.

Virus Protection

Backup – make sure you get a backup of your server from this point forward!

I hope this guide has been a help to you. It goes without saying that this information is provided AS-IS with NO WARRANTY expressed or implied, and that you use this information at your own risk. I am in no way liable for any damage to your systems resulting from the use of this information.

quicker way to p2v on desktops


I’ve been seeing an increasing number of PCs come into the shop that have needed to undergo the p2v process for one reason or another: maybe their computer died right before payroll had to run, or maybe they lost the installation disks to that application they just can’t live without. Whatever the reasons, I’m seeing a bit of an increase in need for the very involved process of taking an ancient relic PC from the early 2000s, make it into a VM, and then make it easy for the end user to use.

Today I think I came up with a method that doesn’t involve 20 hours of nail-biting waiting. But first, a couple of the methods I have used in the past:

-used vmware server, attached the physical disk via (s/p)ATA to USB adapter, used a Ghost boot diskette image to mirror the physical disk to a virtual hard disk

-pulled the drive, installed it in a physical box, used disk cloning software to make an image to an external hard drive. used VirtualPC to create a dummy VM with two hard drives, booted an OS on the main drive, formatted the second drive, and used drag-and-drop to copy the clone image file to the second virtual drive. Then scrapped the first virtual hard disk, created a new one, and used cloning software to clone from the image file on the second virtual hard disk

-used dd to make a sector-by-sector copy of the original disk to a .IMG outfile. Then used vboxmanage convertfromraw to create a VDI, and then copied the resulting VDI to the end user’s computer and installed VM software of their choice.

They all worked perfectly, but oh, the stress and the fuss involved. Not to mention the waiting. It’s one of those jobs that is only worth doing because of the credibility it gains you or your company for pulling off what seems impossible to your customer.

In a datacenter world this task is easy. You have an ESX server chugging away waiting for more VMs so it can display its prowess in the data center. You run P2V directly from the physical box to the VM host and you’re done (give or take a few hours of waiting for SAN volumes to move, or terabytes of flat disk files to move from one place to another over SCP connections). But in a single-computer world it’s a bit more complicated. The customer doesn’t already have a VM host waiting to give up CPU cycles and RAM blocks. So you have to be creative…. hence the horrors listed above.

Today I found a procedure that has proven to be the quickest method I’ve used so far, and it was the product of dumb luck and the fact that i listened to the right podcast on the right day. So early this morning while i was comforting a screaming baby and trying to maintain sanity i listened to an episode of mike tech show ( (and by the way I found him by listening to another podcast – podnuts – that mentioned a ghost/acronis-style disk cloning utility called ShadowProtect. I checked out the website and thought to myself. Hrm, will have to remember that the next time a need comes up.

Didn’t think another thing of it until later in the day when I was exasperated on a P2V project that I had already sunken too many hours into, where I thought perhaps I’d have better luck using VMware’s P2V product to send the physical drive into virtualness and later just break down and install VMware server on the server or something of that nature. During the process I noticed that the supported disk image formats included this new software. After failing at Acronis and Ghost imaging on the drive I thought I’d give ShadowProtect a shot as a last ditch effort. To my surprise the 30-day trial requires no activation and will, in fact, allow you to back up an entire disk to an image. For the convenience any customer would gladly pay the $79 for the package, but in this case it seemed unnecessary since we were only using the product for one run. anywho, I then ran the VMware P2V converter, pointed it at the ShadowProtect image file, and waited about 30 minutes. The entire procedure took about an hour.

I installed VMware player on the customer’s computer and launched the VM to test and all is well except for the Windows repair and activation move I’ll probably have to go through once we fire it up in production. ***NOTE*** When you repair Windows, if the physical machine was running OEM Windows, you’ll have to purchase an XP upgrade, and you’ll need this floppy disk image:
you can get it here: