2009-03-24

DNS Update Speed: A TTL Primer Plus Tips

Just a real quick primer/tip on DNS updates. Keep in mind that this doesn't help if you haven't planned ahead, but if you know a day or two ahead of time that you are GOING to be changing DNS, you should go in and adjust the TTL values for the records you intend to change DOWN to a lower number.

For example, a TTL of 7200 means that the record in question can be cached on a client for up to two hours before the client MUST go back and request a "fresh" record. The problem is, changing the TTL is still subject to the *current* TTL, so if you change the TTL from 86,400 (1 day) to 300 (5 minutes), it will take a day before clients realize they can only cache records for 5 minutes. So this goes back to what I said originally, if you know you're are GOING to be changing DNS in a few days, lower the TTL ahead of time so the clients put themselves on short updates cycles. When you make your REAL DNS changes, they will happen almost instantly, and you can also bump the TTL back up to "normal" at the same time.

The reason you use a longer TTL is because it can pretty significantly affect the traffic load you place on your DNS server. A long TTL means fewer overall requests, because they get cached more. "Good" registrars like Network Solutions allow you to set your own TTL values. "Bad" registrars (**cough*GoDaddy!**coughcough***) don't.

2009-03-11

Working for a Living?

It seems I only want to write here when something is going really right, or really wrong. Right now, I'd be leaning towards the latter part of things. I'm annoyed because I'm opinionated. I have a pretty good idea what I want right now, but I can't see a good way to get there. Of course, as soon as I'm there I will probably revise and update "what I want," but that's to be expected-- I just want to be moving down that path at some speed other than "standing still".

The thing of it is, I like writing software for myself. I even like solving other people's problems when I care about them (which admittedly happens pretty frequently.) What I've really been trying to avoid is writing "installed" software for other people. I guess I'm just a typical engineer in that regard: I think I know what's best, and I want you to both pay me, and leave me alone long enough to come up with software that will fix your problem for you in the way I think is best. I don't think it's unusual to not want to worry about deadlines, or even being accountable to a supervisor (or a client). I want to control my own destiny, so to speak.

I am so envious of the guys at 37 signals and Twitter I could just tear my hair out. I'm envious because they just freakin build whatever they want, however they want, and they've managed to find enough people who like what they turn out to support themselves. They decide if they want to add or remove a feature, and they do it when they feel like it, not when their manager says, "have this module done by Wednesday." If their clients don't like it, they cancel their Basecamp and Backback accounts and take their business elsewhere, but they are one-hundred-percent in control of their own products.

There is more I'm envious of too. I like writing custom software solutions, but I hate leaving a client in the lurch. I could write great stuff for my current clients, but what happens to them and their investment in the software if I leave the company I'm at? I work in IT right now, and we deal with a lot of old, abandoned pieces of software that our clients cling to like life rafts because it's all the know and all they have. I don't ever want to be responsible for releasing software like that out into the world. When you write web-based, service-based software, you get to update your code ONCE, and every single one of your client just installed the "patch" immediately and with zero effort. (The flip side with web software is that if you do go out of business, your clients don't even get the "consolation prize" of the last version of the software you released.)

With web services though, support is provided to your paying customers as a part of the service you are offering, instead of an annual service contract that costs more than the software you "sell" (or license.) I also hate software installations as a matter of routine. We're working on an internal web software project right now that has some nasty nasty ugly make-you-want-to-gag-it's-so-distasteful hacks in place in order to get it to talk to Quickbooks. I see this as a HUGE potential point of failure, and again, what are the consequences of my company investing time in me building this software if it's going to be so damn FRAGILE in places like this? I HATE having to worry about integration with other products! I'd rather be the one producing the API that others need to talk to my app!

There's just so much that appeals so strongly to me about hosted web services like Twitter and StackOverflow and (gods forbid) even Facebook. Right now though, I'm totally overwhelmed by the single most important part of that process: thinking up a great idea. I'm not even worried about executing it, or scaling it, or monetizing it. I would LOVE for my biggest worries to be: 1) How to handle a million page views an hour, and 2) How to convert a million pages views an hour into revenue! I would be just THRILLED to have those problems. But no, my problem is that I'm stuck on an even earlier problem: What problem do I have that I need to solve.

I believe in scratching your own itch, but everybody out there is doing such a good job for me, that I'm largely itch-less. My biggest beef with my iPhone used to be that I couldn't sync my calendar with my wife's calendar, so every week we had to sit down and manually type each other critical appointments into our respective phones. But now Google has released that feature using Exchange protocols, and they've done it for free no less, and it works so well for me and my wife that I'm happy. . . . . . so there's nothing for me to do myself!

At my current company, our techs frequently want to bounce ideas off the world in general and get thoughts and suggestions about cases we have. Well, there's a place you can do that for programming problems called StackOverflow.com, and guess what, they're working on an IT version already! Dang.

I can't believe I'm actually saying this, but I wish I had a serious problem I could solve with a good web service!

What I need to bring all this back to is that I don't think I'm going to be happy working for someone. I would be thrilled to be working with people, but not for, not anymore. I crave freedom, and if I didn't have a mortgage payment and a wife that deserves some of the niceties of life, it might be a lot easier to take a big risk in that direction.

Of course, it doesn't help that I'm generally a conservative guy anyway. I'd love to have my cake and eat it too. If the guys at 37s are hiring, I'm available. (I'm just not sure I'm quite sharp enough to work with that crowd.)