RSS

A word of warning to new web designers and developers about setting up email hosting

Published on 04/19/10

If you are just getting started as a freelance web designer and developer and are planning on offering hosting for your clients (which you should do), and you have a little bit of linux systems admin experience under your belt, and you feel pretty comfortable setting up a server—I have a little warning for you.

First off, website hosting is no big deal. There are plenty of options available, my very own Net-at-hand included. You can get everything from shared hosts to dedicated servers and they are pretty simple to set up.

Email servers, however, are not quite as simple to set up. My email server has five different pieces of software that all have to be configured to work together, and it is the biggest pain you can imagine. It would be fine if I were setting up a server like this for a living, but I only mess with it every few years. So each time I have to re-educate myself and try to make heads or tails out of a bunch of config files.

This last friday, I found that the version of ClamAV that I had installed was no longer supported. So that link in the chain of programs that make up an email server stopped working so email delivery halted completely. There was no package for my linux distro of choice that would update it like I needed, so I ended up installing everything but the MTA and MDA from source. I spent two days messing with it and fell behind on my real work.

I would have been much better off paying a huge monthly bill for dedicated email hosting than what I am doing. It is done now, and should last me for awhile, but I sure hate it.

Things, Omnifocus, and Postbox

Published on 04/03/10

I am planning on writing a more in-depth article on each of these at some point in the future, but my business is starting to get a little bit organized (Ingrid is working as my office manager and is a huge help to me (thanks, babe)), and the tools I use have been changing to help my workflow become smoother.

Things vs. Omnifocus

I had been using Things for task management ever since it was available as a public beta. I really liked it and was just getting to the point where it was really starting to work for me (rather than me working for it). I use both the iphone and mac osx versions of the app and was pretty happy with it overall, except for one thing…

Syncing between the iphone and the mac version was a pain, and worked inconsistently. There would be occasions where one of the copies would have todos without names or some similar problem. The point of a task manager like this is for me to put things down and not think about it until it is time to think about it. If I have to keep track of it and make sure that it is doing what it is supposed to be doing then it kind of defeats the purpose of the software.

The nail in Things’ coffin came when my wife started acting as my office manager and I started looking for a way for keep two mac copies synced together. I use Dropbox and read the posts about using that service to keep the same Things database on two different macs. But I have dealt with two people using the same file before and I absolutely did not want to go there. It might have worked with one person using two different computers, but not with two people who might have the document open at the same time and be making changes. Things just isn’t set up for that (I know they might eventually, there is much discussion about features that are coming, but I am busy now and I don’t have time to be messing with it).

I started looking at Omnifocus because of this and tried it out for a couple weeks. First off, let me say that there is no comparison between the user experience of Things vs. Omnifocus. You start using Things immediately and there is virtually no learning curve. As you use it, you learn more about it and start using parts of it that you left alone previously just because you didn’t know (or care) that you needed them.

Omnifocus is not that way. There is an hour long video tutorial called “Getting started with Omnifocus”. Do I need to say anything more about that? Omnifocus has more settings and options and whatever than you could possibly have any desire to figure out. But Omnifocus’ killer feature (for me) made me stick it out. I eventually found a way of using that would work really well for me and I knew that it was time to switch because—

Syncing between multiple macs and iphone with Omnifocus is flawless. I set up a webdav server on my old mac server (that makes my living room sound like a datacenter) using Apache2 (the Apache installation that came with osx 10.4 didn’t work quite right with webdav and omnifocus). Now syncing happens automatically and I don’t really have to think about it. There is a sync button on both the mac and iphone version, but if you enable autosyncing then you usually don’t even need to think about that. It just works. Also, Omnifocus for iphone lets you do a quick entry even if the app is syncing.

Also, the iphone version has much better functionality when compared to the iphone version of Things. It just feels much better integrated with the mac version. So I have switched. I might be able to switch back some day, but I don’t know if I really will want to. Once is enough.

Postbox

There isn’t a huge market for third-party email clients on OSX. Mail.app that comes standard is such a great client that there isn’t really any need for anything more.

The one thing I always wanted, though, is an easier way to manage emails. I usually set up folders for different jobs or clients, and keep the entire conversation in that folder. But when you have a bunch of email to go through it gets to be kind of a pain to drag all the messages to the folder they go in. I would much rather just be able to assign tags using the keyboard. Then I have the trouble that arrises when an email belongs in both the folder named “leads” when I am working on getting a job but also in the folder for a particular job because it has information about both situations on it.

So I google for “osx email client tags” and not much comes up. There is a plugin called “MailTags” for mail.app that is supposed to be pretty good, but I read about some problems with IMAP which is what I use exclusively. Every couple months I would try again to find something, but didn’t have any luck until yesterday.

Postbox does everything I want it to. I can set up “topics” which are just like tags. So when an email comes in, I can read it, hit “t” and assign any topics I want to it, and then hit “a” to archive it. I can get through my inbox pretty quickly and put things where I can find them when I need them, but out of my way.

It also has great integration with the Omnifocus service option so I can highlight some text and turn it into a todo item for my Omnifocus in-box (yes, Things will do the same thing). Pretty sweet.

Ok, this has turned into a long post. I might not need to do a longer article after all.

Process monitoring and load balancing a Rails application

Published on 03/17/10

The last three days have been spent setting up a system for monitoring my application servers and a more robust load balancer

I really enjoy this kind of work. Each time I do something like this a learn a lot about building a robust infrastructure for ruby on rails. To think that when Net-at-hand was first making its way into production almost three years ago, I was running the application via fcgi on a shared host.

Now I have my own server and I have specially configured web server, and application servers, and now process monitoring and load balancing. I have learned a bunch. I’m not going to take a bunch of time fleshing out this post with all the details, but I have spent so much energy on this I have to say something.

Process monitoring

The process monitoring system that I have put up watches how much ram and cpu usage each of my mongrel instances is using. If these go over a certain threshold then the process is restarted automatically (killed if need be).

With the introduction of a plugin architecture last year for Net-at-hand, there are several problem areas within specific plugins that need to be addressed. In the worst case scenario, a plugin would use up so much ram and cpu that it would grind my server to a halt. When this happened, I would get a text message and I would have to manually go in and restart the processes.

This worked fine when this didn’t happen often, but it had been happening more regularly over the last weeks and last Sunday night I slept through one such instance and Net-at-hand was down for about four hours (when one of my resellers was going live with a big client site).

Now I don’t even have to think about this, because it happens automatically. Of course I am still manually checking the health of the system, but it doesn’t need nearly as much involvement from me.

Load balancing

The web server that I use has a built in reverse proxying function and simple load balancing. This works pretty well for the most part, until I introduced the plugin architecture and some requests started taking too long to render. What happens is nginx happily continues to send requests to a busy mongrel and these get piled up behind a slow one. So Net-at-hand was sporadically slow when this happens.

I spent a day testing a load balancer I had used previously (pound) before I realized that it didn’t do any better. It would skip a backend server if it was down (which I wanted), but it would still send requests to one that was up but bogged down doing something else.

After a bunch more googling, I found that haproxy is able to limit the number of requests that it sends to backend servers, effectively letting me queue the requests at the load balancer and then sending them to the backend servers one at a time. This way, if one backend is busy, faster requests don’t get held up because they go to the backends that aren’t busy.

So far, I am very happy with how it is working. We’ll have to see if I stay happy, but it looks like I should be able to use this setup for a very long time.

My thoughts about the new iPad

Published on 01/28/10

I am not a tech journalist. So the three people who actually might be reading this far probably won’t even care what I have to say, but I have been watching Apple keynotes for a long time and I want to say a few things about the iPad that his Steveness introduced yesterday.

New attached image

Living up to the hype…

Whenever there is keynote-type event where Steve Jobs gets up and announces a new product, there is a huge amount of hype in the weeks and months leading up to it. Everyone in tech journalism writes about what they think is going to be announced and all the great things that the new device is going to do. There is always a boat-load of speculation about what the device will be, what it will look like, and how humans will interact with it.

Without fail, after the keynote, there is a collective groan/sign. It is never what people are expecting or hoping for; it doesn’t have all the expected features. You will invariably see a feature comparison list that will show that the new device from Apple doesn’t have anything more than what may already be on the market, or coming to the market soon.

So everyone, including Apple fan boys, comes away a little disappointed. It might be super cool, and they might still want one, badly, but it isn’t all emotional bliss. They’re not as excited about the product as they were expecting to be.

...over time

The thing about Apple is that they have a knack and a passion for getting the fundamentals right. They make products that go beyond being a list of features, to having what my freshman design instructor called the “it factor.” It is the idea that the product becomes more than the sum of all its parts. That when you look at a work of art (or in this case a product) you don’t think about what it took to make it, or any of the pieces that make the whole. Everything just works and you engage with it whole-heartedly.

Apple products may not always wow us right out of the starting gate, but they are fundamentally something different. Over time they change how we do what we do and become a part of our lives. A year or two from now, if the iPad is a success, we won’t be thinking about all the things the tech journalists are thinking about right now. We’ll just be using it and living it.

But will it be another cube?

In 2000 Apple introduced the G4 Cube which was kind of a cool design for a computer. All the nerds were talking about it, but it never took off and was killed in 2001. The main problem with it was probably the cost, as it was more expensive than similar models that Apple sold.

Any product can end up dead if it doesn’t sell, and the money-carrying public can go in unexpected directions.

So will the iPad end up in the same place? Only time can to say for sure.

The iPhone was the watershed moment

The interaction paradigm that was established by the iPhone three years ago was the big change in the fundamental way we interact with computing devices. Before the iPhone we interacted with the data that computers display using secondary devices (keyboards, mice, styli). After the iPhone, we all understand that it is more natural to interact with it directly using our fingers. It feels right. We don’t use a mechanism to turn the page of a book; we just pick up the book and use it. The iPhone established this as a way to use a computer, and the computer industry will never be the same.

The iPad is the beginning of taking this paradigm into mainstream computing. What could be more natural than taking a thin device like the iPad and holding it in your hands and viewing the web, viewing video, or writing email? It takes the new way that the world consumes information (and by that I mean the web and all that entails from newspapers to video entertainment) and moves it to a much more comfortable, old-school way of consuming information in the palm of your hand. You no longer have to go to the household computer desk or grab the big laptop out of the laptop bag to do all this stuff. It has all the convenience of grabbing a book.

You also are no longer confined to the small screen of the iPhone. For all its greatness, the iPhone is a pocket device that is meant to go with you anywhere. You can sit and watch a movie on it if you have to, but I would much rather see it on a larger screen. We are willing to trade off the size of the screen for the fact that it is always in our pocket and available.

It’s finally here

Ever since Apple introduced handwriting recognition into OSX, I have been waiting for a tablet. Getting rid of everything and leaving only the data that the device displays has always seemed to me like the direction computing should go.

Now that the iPad is here, it certainly isn’t what I always dreamed of. It’s probably more than that.

Jailbroken iPhone

Published on 01/26/10

Several month back I decided to jailbreak my iphone in order to enable tethering on the phone. I had been using another solution previously but I really wanted to bring my phone up to the newest iPhone OS 3.1.2 and that solution didn’t work with the update.

Jailbreaking my phone was easy to do using blackra1n and I have had no bad effects from it at all.

Now, before you get all judgmental on me, I am not doing this to try to avoid paying any charge that AT&T might add for tethering. AT&T doesn’t offer tethering on the iphone for some reason, and I really need it. Whenever AT&T does start offering it I will gladly pay the extra and use the official tethering method.

Two other huge benefits of the jailbreak are GV Mobile and Siphon. GV mobile lets me easily make calls with my Google Voice number which is what I use for my business phone. Siphon is a SIP voip phone that lets me connect to my Gizmo5 account for making free calls. Google Voice and Gizmo5 give me an easy way to make cheap calls for my business so I don’t use up all my cell phone minutes.

The reason I am writing this now is that I just got off the phone with one of my clients using Siphon and Google Voice. The call quality is excellent and it makes me smile to know I didn’t have to pay anything for the call.

Virtualbox is awesome

Published on 12/30/09

I’ve been using Parallels on my macbook pro for about two years. For the most part I have been pretty happy with it. It works reasonable well, however, I was thinking about upgrading to the newest version to get some of the speed improvements that it mentions in the list of features.

The problem is that I am two versions behind in the upgrade chain and to upgrade now I have to pay full price. It is only $50, but that is still a good amount of money when are newly self-employed (2.5 years) and you don’t use credit cards.

Two days ago I found Virtualbox which is a free product built by Sun Microsystems. I’ve been using it for two days now and I am completely satisfied. The speed is much better than the versions of Parallels that I was using, and it made it easy for me to duplicate my virtual machine once I had Windows XP installed. I used this to set up different machines for the different versions of Internet Explorer. I had been using one of the multiple ie solutions out there. However that fell apart recently when I used conditional comments to target different versions of IE. The multiple versions of IE render properly, but they don’t parse conditional comments properly.

Anyway, virtualbox is a great solution for running virtual machines on a mac. Just throwing it out there for anyone interested.

Logan’s Prayer Requests

Published on 12/10/09

Last night at church, my son, Logan, gave a prayer request that made me chuckle and smile. It reminded me of some of the requests he used to give before bed time each night when he was about four, and my father had a copy of them that he sent back to me. These make me chuckle even more.

  • that Boomer [our boxer] won’t wag his tail when we are looking angry at him
  • that all the men in boats will keep from tipping over
  • that all the light bulbs will never burn out
  • that Emmie’s [his sister’s] lamp will work again
  • that all the rhinoserouses will keep out of America (I think he was terrified of rhinoserouses at the time).