Home › Archives for: mike
While there are some great diff tools out there, there are very few good merge tools. My favorite diff tool is Kaleidoscope. And there are several others I wouldn’t mind using.
However, Kaleidoscope does not do merging. Too me, software development requires much more merging then diff’ing. And many times, github.com’s HTML diff view is more than sufficient. Heck, even command line diff works just fine for small differences. Looking at diff’s is easy and paying money for a tool that only does diffs is something I find hard to swallow.
<Read on…>
Phatness.com is the personal blog of Mike Wille
I'm a developer with a passion for building products.
You can find my slides from the M3 Conference in Columbus, OH here.
Most days, you can find me stirring the cauldron at Brilliant Chemistry.
By default, git is colorless. What decade is this again? “Squirt” this crap in your prompt and things will be better.
git config --global color.ui "auto"
git config --global color.branch "auto"
git config --global color.status "auto"
git config --global color.diff "auto"
Because I totally flaked on Number 3 getting a mention when it was time, he gets two pictures.
Welcome, Lane Matthew Wille.

Don’t bother sending in your address, ladies. He is too shy for dates…

He is 7 months old now. 6 in these pictures.
This is one of the best tips if you are developer working with git on the terminal. If you are inside a directory or project managed by git, this will append the working branch your code is on to the prompt!
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\ \[\1\]/'
}
BOLD=$(tput bold)
RESET=$(tput sgr0)
export PS1="[\u@\h \W]\[$BOLD\]\$(parse_git_branch)\[$RESET\] $ "
The key here is, of course, the bash function created called: parse_git_branch(). Then we are modifying the default bash prompt and including the result via: $(parse_git_branch)
I do like to throw in a little color for the branch. So my actual prompt is:
export PS1="[\u@\h \W]\e[0;35m\[$BOLD\]\$(parse_git_branch)\[$RESET\]\e\[m $ "
The default prompt for bash on Mac OS X is wrong, err, different. I spend a lot of time on linux servers through terminal and like to keep things consistent. Append this to your ~/.bash_profile: to keep things in line with Red Hat:
export PS1="[\\u@\h \\W]\\$ "
If you want to get more original, here is a list of codes you can use instead:
- \a : an ASCII bell character (07)
- \d : the date in “Weekday Month Date” format (e.g., “Tue May 26″)
- \D{format} : the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
- \e : an ASCII escape character (033)
- \h : the hostname up to the first ‘.’
- \H : the hostname
- \j : the number of jobs currently managed by the shell
- \l : the basename of the shell’s terminal device name
- \n : newline
- \r : carriage return
- \s : the name of the shell, the basename of $0 (the portion following the final slash)
- \t : the current time in 24-hour HH:MM:SS format
- \T : the current time in 12-hour HH:MM:SS format
- \@ : the current time in 12-hour am/pm format
- \A : the current time in 24-hour HH:MM format
- \u : the username of the current user
- \v : the version of bash (e.g., 2.00)
- \V : the release of bash, version + patch level (e.g., 2.00.0)
- \w : the current working directory, with $HOME abbreviated with a tilde
- \W : the basename of the current working directory, with $HOME abbreviated with a tilde
- \! : the history number of this command
- \# : the command number of this command
- \$ : if the effective UID is 0, a #, otherwise a $
- \nnn : the character corresponding to the octal number nnn
- \\ : a backslash
- \[ : begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
- \] : end a sequence of non-printing characters
On Mac OS X, the Terminal output isn’t colorized by default. Add the following to ~/.bash_profile:
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad
And uncheck “Use bold fonts” in Terminal preferences under Text. Monaco font in bold looks hideous.
While we are at it, make sure you are using the Pro settings scheme as a default. Which you use is really personal preference, but if you are a beginner, let’s start you off on the right foot with Pro.
For as long as I can remember, I’ve hated the tools out there for managing domains. Except for a brief, very happy period when I hosted my own bind servers, I’ve been using the
services of others. And they all stink. Off the top of my head I’ve used:
- Inexpensive Domains
- GoDaddy
- Moniker
- Gandi.net
Inexpensive Domains was actually great until they adopted the GoDaddy interface. GoDaddy is just the suck and is one of the worst internet companies in my opinion. Moniker looks like someone outsourced the development of the tools and neither party spoke the same language. I’ve looked at many others but they aren’t worth mentioning.
I started using Gandi.net a little over two years ago. They have been good for a few reasons:
- You can register international domains
- Very powerful DNS management. Though it is confusing and difficult to get the hang of.
- Did I mention flexible DNS? You can set any TTL you want. You have complete control of the zone file. Love it.
However, Gandi.net has some negatives. The management interface is very slow to load. (Not as bad as GoDaddy, though) You can’t auto renew a domain unless you pre-purchase and store funds in your account. They are in France which triggers a fraud alert every.single.time. I put my card through. The death stroke is that it takes 15 minutes for a zone file edit to get pushed to their name servers. Grrr, that one can piss you off during an application upgrade.
And then today, I found DNSimple. These guys look like they have it all. Auto renewals. International domains. Full control over DNS records (though not at the raw zone file level). And very reasonable pricing. It’s cheaper than Amazon’s DNS service. Plus they offer RapidSSL certificates. Finally, a one stop shop.
I just signed up. I’m going to give them a test and then migrate the rest Check them out: DNSimple. If you use that link, you can get 2 free months of service!
First off, I do love Groovy & Grails. We’ve built a product with it: http://bounceoff.com. And I advise any dev shop that is Java focused to stop all development and switch immediately to G&G.
However, there are dirty little things that always ruin an otherwise perfect experience. This could be a very long post, detailing all of the tiny nits I have with Groovy & Grails. It wouldn’t be fun to write and it wouldn’t be fun to read.
Instead, I can encapsulate everything that is wrong with Groovy & Grails in one quick example. <Read on…>
Independent Incompetence
Before I go any further, I need to point out that the jerk-offs who come out to setup DirecTV are not employees of DirecTV. They are independent contractors who work for themselves. Hence, the above title.

Notice the carefully placed sticker.
If DirecTV’s business model depended on the quality of work of their installers, they would not exist. Luckily, their service is pretty good once you are up and running. I’m happy now that everything is over.
What started off as a happy move from Comcast turned into a sloppy mess. I put off writing this article because I got so pissed every time I sat down to transcribe my notes and crop pictures. Argh, even after all this time my blood pressure is rising. This install originally happened in December of 2010.
<Read on…>