RSS

A new site

Published on 05/16/12

I am in the middle of starting up a new website that will be focused on getting web design leads here in the Pensacola area.

I’ve never really had to go out and actively look for leads. I can’t really think of any times since I started freelancing 5 years ago that I have had to look for work. As a reault (I think) most all of my clients have come from outside the Pensacola area.

This has worked really well for me because I think much more clearly when I am communicating via email than when I am sitting in a meeting with someone.

So my new little site entitled Web Design in Pensacola is going to be all about selling my design services to potential leads; trying to get them to call or contact me. I am planning on doing some small AdWords campaigns targeting “pensacola web design” just to try to drum up some business and see how it goes. It will also help me gauge how much a website’s flashiness converts into leads. I generally try to keep things simple just so communication is unencumbered. So the website will start out simple, but if it doesn’t drum up any business, then I can work on flashing it up a bit (animations).

New site design

Published on 05/15/12

I just updated the design of this site to a new responsive design template I developed. For my web design business, I offer design themes for ‘Net-at-hand’:http://net-at-hand.com that are based on a template. This lets me focus my design work on header graphics and overall color scheme while the layout remains set.

Many of my clients opt for this option as it is an inexpensive way to get a great website, usually keeping the cost of the project relatively low.

This weekend I completed a website for a friend and am now offering it as a responsive web design template. The overall layout of the site responds to the size of the screen and adjusts itself accordingly.

I’d love to know what you think of it.

Rolling restart of thin instances using monit

Published on 04/27/12

With Net-at-hand’s recent move to AWS EC2, I had a chance to build the new server from scratch.

In doing so I started using thin as my application server instead of mongrel, and I started using monit for monitoring my application servers instead of god. The main reason for the changes had mostly to do with memory usage by each of them. Monit uses much less memory and is more stable than god, and my rails app on thin is only using around 70MB instead of 110MB+.

One thing that I’ve always wanted an easy way to do is a rolling restart of my applications servers. A “rolling restart” restarts only a portion of the running applications at any given time so there is no time when there are no application servers available.

When configuring monit, you can assign a group to the running instance, but it turns out that you can assign more than one group by putting in multiple “group” directives for the same instance. So all the thin instances that are listening on even-numbered ports have the following lines in their configuration:

group thin
group thin-even

And then all the thin instances that are listening on the odd-numbered ports have the following lines in their configuration:

group thin
group thin-odd

So if I need to restart all of them at once I sould issue this command:

sudo monit restart -g thin

However, to do the rolling restart I just restart the “thin-even” group first, wait for a bit, then restart the “thin-odd” group. This is done automatically in my capistrano deploy.rb file by issuing a “sleep 10” in between the two restart commands. The restart task in my deploy.rb file looks like this:

task :restart, :roles => :app do
    sudo '/path/to/monit -c /path/to/monit.conf restart -g thin-even'
    sleep 10
    sudo '/path/to/monit -c /path/to/monit.conf restart -g thin-odd'
end

So now, I push code changes to Net-at-hand in the middle of the day with no hesitation because I know it isn’t going to cause an outage (of course, I do it all on the staging server first just to make sure nothing blows up :).

A new hard drive

Published on 11/18/11

I was finally able to get the SSD that I have been wanting to get for quite some time now.

Let me just say that I am impressed with how fast it is. Things are just snappy and instant. I am very pleased.

The thing I am even more happy about right now is how quickly I was able to set up my work machine with the new drive. I did a brand-new clean install of osx lion. It used to be that it would take me days to get a new machine set up. This time however I had icloud to get all my contacts, calendar events, and music onto the new machine. My apps were a pretty quick install through the app store.

Even my development environment for Net-at-hand went together really fast thanks to homebrew and rvm. It used to take me about a day to get ruby and everything I needed installed. I spent less than an hour on it tonight and I am done and ready for bed.

Very happy.

Steve Jobs

Published on 10/06/11

The death of Steve Jobs is a big deal.

Actually, as I write that sentence, I am struck with the simple truth that the death of any person is a big deal. Each person is a universe. We often get so caught up in what is happening in our own lives, the hurts and struggles and fears; we often feel overwhelmed by the bigness of our own lives. We are so self-absorbed in fact that we don’t stop to realize that every stranger we pass on the sidewalk has the same bigness going on within their own universe.

So it is the knowledge of this fact that makes my first statement seem a little, I don’t know, overblown. Steve Jobs crossed the same threshold that all mankind crosses, and he crossed it and faced eternity with the exact same opportunities that every other man has had who has died before him. So I feel odd drawing attention to the death of someone I didn’t know. I’ve never spoken with him. I don’t know his family. The fact that Steve Jobs was alive yesterday morning and is not alive today, doesn’t even really change my day all that much.

Obviously, Steve Jobs was immensely important to his family. They don’t get to wake up today and go about their day as they always have. They are the ones who are suffering and mourning profoundly. Eventually their lives will start moving forward again, but they will always feel the loss of Steve, as a father and husband.

My day, however, starts only with a sense of melancholy (which is why I am writing anything at all); I am still just going to work and raise my kids and love my wife as I always do.

So why any melancholy at all?

As I said, I’ve never spoken with Steve Jobs, but he has spoken to me many times over the last 14 years or so. My professional life has always been connected with Mac hardware, and I have always looked forward to the next great thing. I’ve been watching “stevenotes” for many years, hearing Steve describe the new mac, or ipod, or iphone, or ipad. I don’t really get into the whole Hollywood celebrity thing at all, but Steve definitely was a celebrity, and based on all the times I have seen him, I feel a connection to him as a person. He has brought so many cool gadgets into my life, and he had such passion about doing it, that I can’t help but feel the loss. As a businessman he absolutely was a role model to me. He never accepted the status quo and he worked tirelessly to make life better through technology.

I don’t have any idea what Steve Jobs’s spiritual condition was, but I respect the work he did. The tools he helped create, and led his teams to create, have been used for decades around the world to do great work. Who knows how things will be now compared to what they would have been if he had lived another twenty years. We will never know that, and there really is no point in wondering. All we can do is thank God for the abilities that he gave to Steve Jobs, and for the work that he was able to do while here on earth, and for the work that we can do better because of it.

How to resize a virtual machine’s disk with VirtualBox

Published on 08/23/11

I use VirtualBox for running windows on my Macbook Pro (mostly for browser testing). I recently decided to give Age of Empires Online a try but filled up my virtual hard drive that was running the system.

I the GUI interface in VirtualBox does not have any way to clone a drive and resize it at the same time, but I found this post that shows some of the underlying software does. It was dead easy to do.

The only difference for me, since I am running a mac, was the location of the command line utility that it uses. On OSX it lives at

/Application/VirtualBox.app/Contents/MacOS/VBoxManage

I hope this helps someone else!

Quickly make a new Evernote Note from selected text on OSX

Published on 08/02/11

As I’ve posted recently, I have started using Evernote for keeping track of all my stuff. I’ll put everything from passwords to files that my client sends to me in Evernote because Evernote makes it dead simple to find what I need later on, and I’ve got access to it from anywhere.

One thing I don’t like, though, about Evernote is how cumbersome it is to create new notes when I am in other apps on OSX. The best-case scenario was to select the text I wanted, copy it to the clipboard, and hit the key command for “Paste to Evernote”. This works alright except that it brings Evernote to the foreground and pulls up the new note dialog box. So the process for getting a new note was to:

  • Select some text
  • Hit Command-Option-C
  • Type in the title of my new Note
  • Close the window
  • Go back to my application I was in originally
  • Find where I was and continue on

It’s the last three steps that kill the flow of getting things done, so I decided to try to create a service in Automator that would make this simpler. The following applescript will take the selection, give a quick dialogue for a note title, and create the note in Evernote. During this process, you never leave the application you’re working in; there’s just a quick dialogue box to give the note a title.

I’m not going to give a tutorial about how to set up the Automator service, but it is pretty simple to do. Just change the title of the notebook in the applescript code below from “Default Notebook” to whatever notebook you want to put your notes into.

on run {input, parameters}
    set dialog_box to (display dialog ¬
        "Note title:" default answer ¬
        "Untitled Note" buttons {"Canel", "Save"} ¬
        default button 2)
    set button_clicked to button returned of dialog_box
    set note_title to text returned of dialog_box
    if button_clicked = "Save" then
        tell application "Evernote" 
            tell notebook "Default Notebook" 
                set new_note to create note with text input as string
                set title of new_note to note_title
            end tell
        end tell
    end if
end run