ithought

Pulse for Cash-Flow Mangement

A long time ago I signed up for Pulse for managing cashflow for ithought. It was kindof neat, but wasn't much of anything that I couldn't just do in a spreadsheet, so I pretty mugh forgot about it. This past Tuesday, they emailed me to let me know about a new version with lots of fancy graphs, and (as you may know) I'm a sucker for fancy graphs, so I loaded all of my cashflow information back in and signed up for the paid version which gives me a 30 day free trial to play with all the extra features.

bottom of the bar graph boxes is $0 cash on hand
the bottom of the bar graph bars is at the 0 line on the scale for the blue line which represents cash on hand. Anything below the bars is negative cash on hand.

The new graphing functionality is pretty nice. For any time range, it's possibile to get pie charts for showing breakdown by category of income and expenses. It's also possible to show a "cash on hand" graph over a time range that presents cash on hand every month, as well as income and expense totals for the month. It sure beats using the spreadsheet I have (though it will export your data into a csv file) , but is it worth the $9/month or more?

Unfortunately, my list of negative things is longer than my positive ones:

  • It would be nice if cash flow view had net in/out row in addition to cash on hand, perhaps color coded? As it is, I have to manually compare this months cash on hand to last months cash on hand, using raw data from a report or the cash flow page. I'd think that net gain/loss for the month would be prominently displayed.
  • It's goofy that "add expense" has a - icon next to it. I associate that icon with deleting something, and have never seen it used this way.
  • It's a little pricy. For a business that doesn't 'make' any money (I try and break even on income/expenses), $108 for a year of graphs that I could really make in Open Office is a little steep, and the free version is crippled witout any reporting functionality at all. Not even a basic graph with a non-customizeable timeline?
  • The user interface isn't as snappy as other web based applications.
  • The way that companies are organized is kind of weird for an organization like mine. Perhaps someone familiar with Basecamp (which Pulse imports from) can enlighten me on the "Right Way" to do this, but It seems like I'd have to create separate "projects" for each of my hosting clients to get that to show up, and each "project" would only have one income entry.
  • While I know that modeling future revenue is hard, I know when I'm going to invoice people, but I want to keep all their payments under one income entry. Pulse only allows entire income entries to be marked as active or inactive, and there is no way to mark individual transactions as inactive while leaving old ones as active. This effectively prevents me from being able to use Pulse to see what my numbers will look like 6 months from now.

All that said, I do like Pulse, but it's been a long time since their last update and I don't know what the timeline for future updates is. This is a service I'd pay for if it let me do everything I needed, and adding a tiny bit of basic client management (just names and contact info) and basic invoice management (just reminders to send invoices for $X on a certain day and reminders to follow up on people that haven't paid) would make this worth significantly more to me.

The graphs are great, and gave me some insights about my business that I somewhat knew but had never seen visualized on my cashflow data. Pulse helped me realize that since January 2006:

  • Getting new clients is a slow but steady process, but revenue slowly rises from one several-month-span to the next.
  • 40% of my income comes from yearly web hosting, and my monthly hosting customers, advertising revenue, fastermustache related things, and web design projects bring in higher percentages than expected.
  • ithought was cash negative after the initial outlay for first server for a year, but then started climbing. These days, I typically build cash reserves before most purchases that fully cover them. The last major purchase was an exception, but should last for some time and pay for itself over less than 2 years. You can see the sudden drop into negative cash-on-hand in the graph above.
  • As of May 2009, I'm cash positive $88.41 since Jan 1 2006 in this venture, so my "I spend all the money I make on hardware upgrades and services" still holds true. This year looks like it's going to be a fantastic year of growth for ithought so there should be some very cool hardware on the way before this time next year!

Perhaps Pulse will keep improving over the next few months (like mint.com has), or perhaps it will be years before the next update. I'll keep using it for a month or two and see if the graphs are worth it as revenue comes in and I can see them change, but I could always just spend a weekend with a spreadsheet tool and come up with my own system. Getting the issues above addressed will be key to keeping me on as a paying customer!

Starting a Sole Proprietorship In Atlanta

For quite a long time, I've been doing business as "ithought" but people have always paid me in cash or checks made out to me. I recently received a check made out to "ithought", but when I tried to deposit the check into my personal checking account, my bank turned me away and told me that I needed to register my business and provide them with several pieces of information to be able to deposit the check. This took a while to take care of and what follows are what you'll need to do if your find yourself in a similar situation. Read the whole thing so that you can combine steps (like money order acquiring and form notarizing) and avoid time wasting things (like going to the bank several times, or waiting on hold).

  1. Pick a name for your business. If this is your name, you can skip the next step, but if you want to make up your own name, continue on
  2. Register your "Doing Business As" (DBA) name.
    • Print out this form: http://www.fcclk.org/tradename.pdf
    • Take it to a public notary and get it notarized. (You can try and do this at the Fulton County/City of Atlanta buildings down town but they will bounce you all over the place, and you're really just better off doing this at your bank or something ahead of time.)
    • Take this notarized form and $29.25 to:
      Clerk of Superior Court
      136 Pryor St SW
      Atlanta, GA 30303

      Note that you'll need to go through metal detectors to get in here, so no bicycle helmets or weapons allowed inside!

    • Then find Room TG200. To get here from the main courthouse entrance, take the hallway to the right, go down the escalator on your left, and take a left up a long ramp and go into the office on the left labeled something like "Real Estate Filing" which doesn't make a lot of sense, but that's ok! Wait in line, and be prepared to fill out a short form there that they will give you.
    • In a few weeks, you'll receive an official document in the mail, but the stamped copy of the notarized form that they hand back to you (this is what the $0.25 is for) is sufficient proof of having an official DBA name.
  3. Register your business with the City of Atlanta. This is not required for a checking account, but I didn't find this out until later. It's called a "Business Tax Registration" in some places and a "Business License" in other places, and I'm pretty sure it's a good idea to have.
    • Pick up a $75 money order or certified check. (Probably a good idea to do this at the bank when you get the name registration form notarized above.
    • Head to
      City of Atlanta Business Tax Division
      55 Trinity Avenue, SW
      Suite 1350
      Atlanta, Georgia 30335-0317

      Note that you'll need to go through metal detectors to get in here, so no bicycle helmets or weapons allowed inside! There is a "take a number" machine that apparently has been broken for a while, so just do what you need to do to talk to the person at the counter.

    • Ask them for a business registration form and fill it out, then have them verify that it looks ok.
    • The will tell you to go upstairs to the Zoning board. I'm pretty sure this was on the third floor, but they will tell you which one, and it's in a desk in the back corner of the room with a sign over it that says "Business Registration" or "Business License." They will fill out a part of your form, and send you back downstairs.
    • Once approved in the Business Tax Division office again, they'll send you to the cashier's office in the building atrium to pay, you'll take the receipt back to the Business Tax Division office, and at some point they will hand you your temporary business license. You'll get the official one in the mail in a few weeks.
  4. Get your federal EIN here and make sure to have it delivered to you online. Write down the number somewhere, and print a copy of the document they provide you with.
  5. Head to your bank with a printed copy of your EIN document, the stamped copy of your name registration, and a photo ID and they will take care of the rest.

And that's it! You'll be able to use the check made out to your business as your opening deposit. Some additional information about all of this is available at:

Hopefully this will save you some time, but you may be waiting in line for a while at many or all of the places above, and some of them have odd hours. Note that many City of Atlanta facilities are closed on Fridays now due to city budget shortfalls.

ithought. now with a website!

I've finally gotten some things racked at a new datacenter and thought this might be a good time to launch the new www.ithought.org. Everything that used to be at /hosting here has moved there, and theres a lot more new stuff! If you have hosting with me and have questions, or want to refer anyone to me for hosting or consulting stuff, thats the place to send them! If you have hosting with me and want to link to this site instead of ckdake.com, there are some images at the bottom of the new support page.

More updates to come including a far superior status page.

Scaling with PowerDNS and EveryDNS

Ah DNS, the often overlooked aspect of running websites. Many people I've spoken to bought a domain from Network Solutions, then one from GoDaddy, and maybe one or two from their web-hosting provider. Settings are all over the place, and they use the tools provided by each registrar to manage the DNS for domains purchased there. While this certainly works, it can become quite a hassle to change things around especially if you want an overview of all of your domains or need to change the IP address of a server.

Several years ago, I found out about EveryDNS which is a great free DNS hosting service. They've been very solid and while they have been down a few times from DDOS attacks at 50Mbps+, they definitely can scale better than my little rack of servers. I donated some money to them and currently have about 60 domains with ~600 DNS entries total hosted with them. With EveryDNS, all of my DNS entries are in the same place and when someone purchases hosting from me, I have them set the authoritative nameservers for their domain to the EveryDNS nameservers. This means that I don't need access to their account information, but I can have quick and easy access to DNS entries if I need to move anything around.

I'm preparing to make some big changes to my servers and the hassle of the point-and-click interface becomes a bit to much. ~1800 clicks or so is a lot more complicated than it needs to be! Additionally, for almost everything else I do on the internet, I prefer to own the hardware and software that my information lives on. To address both of these, I installed PowerDNS with a MySQL backend on a server, and then set up DNS replication to EveryDNS (docs on this). PowerDNS with MySQL let's me change the IP address of a server with one SQL statement instead of lots of mouse clicking, regardless of how many domains I have. This setup also allows me to include DNS configuration as part of my web hosting provisioning scripts which greatly simplifies the process of adding a new website to one of my servers. My DNS server is not listed in the authoritative servers list for domains, so the only queries that it responds to are the AXFR queries from EveryDNS. The only negative of this is that EveryDNS only checks once an hour so I can't do any tinkering with short TTLs, but thats a price I'm willing to pay for now! Hopefully they will enable DNS Notify support in the future which would allow for instantaneous updates, and if my hosting operation gets big enough, I'll just roll my own live DNS servers.

busy couple of weeks!

It's definitely been a busy couple of weeks. We've had a few weekend events at work as we slowly are moving things to a setup that will prevent us from needing to do anything on weekends, and there's been a whole lot of bike riding. But first, my most recent tinkering with HDR photography:

Thats three exposures of one of the trees in my backyard, taken at 11mm on the new tripod with a remote shutter. On to what I've been up to the past few weeks that you might be interested in:

  • Tomorrow morning I'll hit 2000 miles of road riding this year, with 1750 of them on the newest road bike. That's bringing me pretty close to 4000 miles so far since February 1st, so hopefully I'll round off the year with 5000+?
  • I got new wheels on my track bike and will be training on that this winter for next years season (assuming I don't break anything between now and then!). I've been mountain biking a couple of times and am getting back into the habit of 30mile+ mountain rides, and I'm slowly working out a training plan so that I can maybe win some races next year.
  • After 20 or so years of never having a real camera tripod and taking pictures, I finally purchased one. Here's a crummy picture of the Acratech Ultimate ballhead with Leveler mounted on the Gitzo Explorer Basalt legs. It's sturdy, light, easy to use, and I'm looking forward to using it a lot. Hopefully it will last me another 20 years or so.
  • I was able to get a Wii Fit for list price! Daniel couldn't have said it better: the internet rules.
  • FM.24.08 happened again and was an even bigger success than last year. The tracking system worked great, but I unfortunately didn't take as many pictures as at FM.24.07 last year. Here is this year's good set.
  • The final Dick Lane Velodrome Festival of Speed of the year went down and I was able to take plenty of pictures there since almost nobody else from Faster Mustache showed up to spectate! Friday Night Sprint pics and pictures from Saturday. After sprints on Friday, I rode around town and took some awesome night shots from the top of a building in downtown Atlanta, and before FoS started on Saturday San and I went by Connolly Nature Preserve and I got some shots of the champion trees there. (Read more about the trees here).
  • Lastly, I'm slowly whipping my mini-web hosting company into shape. If you're looking for hosting, head to ckdake.com/hosting and keep your eyes peeled on www.ithought.org for some exciting news sometime in the next month or so.

10+ years of internetting

I just realized that my yahoo profile is now over 10 years old! I apparently created it on February 12, 1998, and while I know that I had AOL at home before that for perhaps around a year, I can't find any indication that they provide account creation dates anywhere in their system. (And back before AIM was properly integrated, I had to switch from ckdake to theckdake when we canceled AOL and didn't get to switch back to ckdake until perhaps college?)

Before AOL, I got online once or twice at a friends house, but I know my first experience online was at the 99X booth at some olympic experience thing at the 1996 Atlanta Olympics. They had a web browser, I typed in "games" in the address bar and alas, couldn't get to any games. Needless to say I didn't realize that the internet was good to have until later.

In 1999, I purchased my first domain name: ithought.org (for $70 a year or something stupid expensive from Network Solutions) and it's still the one I use for all my servers. ckdake.com finally showed up in 2004.

Things sure have come a long way in ~12 years!

Servers and hosting

I ordered a new server today to take over as a primary web hosting server so I can clean some things up on the other two boxes. Initially I was going to use Dell but I had some issues with a recent order with them however they resolved those (more on that later) and when I was specing out things today, they had a great coupon: Buy a $2800+ server and get $850 off. Cool! My budget was $3k for this thing, and this deal enabled me to get faster CPUs for significantly less money. So Dell it is. (I'm a fan of having 1 phone number to resolve warranty issues with for 3 years at a reputable company, which Dell gives me. One of my servers is from Monarch Computer which went out of business 9 months after purchasing and it's having a problem with it's RAM or the motherboard :/)

A Dual QUad Core Intel Xeon E5410 2x6MB Cache at 2.33GHz with a 1333Mhz FSB with 8GB of 667Mhz 2GB Dual Ranked DIMMs, a PERC 6i Serial-Attach SCSI PCIe RAID controller with 256MB Cache, 2 146GB 15K RPM Serial-Attach SCSI 3.5in drives, and mounting rails is on the way! (or will be soon atleast.)

When this shows up, all my websites will move onto it (~40 at last count), and the stuff I outlined in my last post can start to happen. Exciting!

Infrastructure and Switching

Not only is it that time of year again, but due some externalities, it's time to upgrade my server setup again. Right now I have 2 1U servers installed, each doing their own thing, and bandwidth purchased by the GB. I'm switching over to a setup with initially 5U of space: 1U for a switch, 3U of servers for me (including a server I'll be purchasing in the next few weeks) and a 1U server for a friend. I'm also switching my bandwidth billing to 95% burstable billing which will allow me to push substantially more traffic for the same amount of money. My monthly cost is only a 33% increase, and the cash flow already works out that it makes sense to do.

This means a few fun things:

  • I'll finally have a new server with a new warranty that I can set up from scratch the "right way" and move sites over to it one by one. It will have all the good suexec and apc things that I've talked about on this site before, and will be set up in such a way that I feel comfortable giving my customers direct access to it. And it will 4x the number of cores and 4x the amount of memory as the current webserver.
  • When that happens, I can finally troubleshoot the faulty memory in aurora and figure out which stick or pair needs replacing, and it can be reborn as a database and mail server with twice the memory of the current db/mail server.
  • Pudge can finally get the reformatting it needs, and will come back as as the admin/stats/monitoring/backup server including acting as a live mysql slave for aurora as well as a backup mailspool.
  • A switch will be in place so I can move data around between servers without having to go through the network in the colo, and can do mysql on a different machine than the webserver without getting nervous. I'll also be able to talk snmp to everything and make more fun graphs
  • Thanks to 95% billing, I can do complete offsite backups with rsync on weekends by setting rsync's maximum usage rate to something that will keep me below my bandwidth commit rate. (Right now, I primarily just do backups of dynamic content like databases)

I'm pretty excited about the new server, and was pretty excited about the switch. Until it arrived today....

I bought a Linksys SRW2016 from Amazon for around $300. 16 Gigabit ports, full VLAN support, web access, as well as management over com, telnet, and ssh. It sounded like a cheaper solution than a Cisco switch that would allow me to be able to easily configure things. It's definitely cheaper. The telnet/com/ssh interface is completely ridiculous. First of all, the navigation is very awkward. Say like you want to log in:

  1. ssh admin@192.168.0.254
  2. press return to activate the login form
  3. type in user, down arrow, password
  4. press escape and wait 1 second to activate the menu
  5. press return to submit the form and wait 1 second for "operation successful"
  6. press any key to get to the next menu

After this there are a shocking small number of menus that let you ping, upload a new firmare, check and change port administrative and operational status, change passwords, restart the switch, and thats about it! Compared to the list of features of the switch... yeah. Nothign about QoS, VLANs, Link Aggregation, SNMP, etc. I wasn't expecting it to be amazing, but it completely lacks the ability to even associate ports with VLANs and everything takes a lot of typing and pausing. Compare this to a Cisco switch:

  1. ssh admin@192.168.0.254
  2. user, return, password, return
  3. "enable" (or just "ena"), return, password, return
  4. "configure terminal" (or just "conf t")
  5. ANY CONFIGURATION COMMAND YOU WANT

Ah well, I can use their web browser interface... so I thought. Firefox on Linux: Nope, FF on Mac OS X: Nope, Safari on Mac: Nope. "IE 5.5 or newer recomended". So I fired up Windows Vista in VMWare on the Mac and was able to get in that way. Another awkward interface with the "save" button for each screen below the scroll and hidden by having the same background color as the logo in the bottom right corner. It won't let me set the administrative VLAN to anything other than 1, relies on popups, and is a complete pain to use.

If the plan for this switch wasn't to configure it once and then drop it in place, I'd return it. If you're thinking about using this switch for any complex network or any network that ever changes, don't buy it. It took me about an hour to get all this figured out and set up how I like, and hopefully will never have to configure anything on this switch again. ~$300 for a 16 port Gigabit switch advertised as fully non blocking that supports VLANs for partitioning, it's still a pretty good deal but yeah.. There is a reason that the biggest sticker on the box and the only paperwork in the box is advertising how you can trade up this switch to a Cisco product right now and get cash back. If only the comparable Cisco switch with a usable command line interface wasn't over $1k. *sigh*