You need XCode and libgd installed and then the following script should work pasted into a terminal window:
cd /tmp
curl http://www.erlang.org/download/otp_src_R12B-2.tar.gz | tar xz
cd otp_src_R12B-2
./configure --enable-smp-support --enable-hipe --enable-darwin-universal
# If you see an ODBC warning don't sweat it
make
sudo make install
cd ..
Posted on December 20th, 2007 by dysinger
Filed under: @work | 5 Comments »
I have been using Apple’s default Mail.app client as a front-end to my new domain’s email provider, “The Goog” apps. I find it to be really a good client and I have no complaints. One thing to remember is to, after you have the mail account configured as IMAP, go in and high-light the right google mail folders and select Mailbox -> Use this for -> …trash… etc… to let Mail.app in on how google works. After that it works like a champ.
Posted on December 20th, 2007 by dysinger
Filed under: @work | No Comments »
You have to try out these two new services. It will alter your life - we’ll maybe - it is altering mine.
I Want Sandy! a free personal assistant to help you track to-dos, remind you of your calendar at the right times, remind other people about things, keep track of people, etc. It is really, really cool. Go sign up, read about “her” and start using the service today! It’s free!
Jott a free(!) dictation service. You can call a number and talk and it will send your dictated message by email, sms, iwantsandy, twitter etc. No more trying to scribble notes on a note pad while you are out. I just threw out my pocket note-pad. I’ll use my cell phone and this service from now on when I’m not at the computer.
You can dictate with Jott right to Sandy also. Wait a minute - maybe you didn’t hear that last sentence. Let me repeat it. You can dictate straight to Sandy. Now I can be at the store and call jott and say “Sandy, remember my meeting with Terry tomorrow at 3:30pm.” Jott will send a perfectly dictated email to Sandy. Sandy will put the appointment on my calendar (ical!) and send both Terry and I a reminder via RSS, SMS and email at the appropriate time. It’s crazy-cool and useful. It rocks my world.
Thanks Jott! Thanks Sandy!

Posted on December 20th, 2007 by dysinger
Filed under: @home | No Comments »
Ruby and Rails comes on Leopard. Yahoo! That’s great. Oh wait, it’s a slightly out of date Ruby 1.8.6 and Rails 1.2.3. Hmm It’s owned by root too and you might fsck it up walking around as sudo all the time. So… Here you go. Make sure you have XCode 3.0 installed and then open a terminal and paste in the following:
cat >> $HOME/.profile << \EOF
export PATH=/usr/local/bin:$PATH
EOF
source $HOME/.profile
cd /tmp
curl -O http://mirrors.ibiblio.org/pub/mirrors/ruby/1.8/ruby-1.8.6-p111.tar.gz
tar xvzf ruby-1.8.6-p111.tar.gz
cd ruby-1.8.6-p111
# README: http://www.ruby-forum.com/topic/129201
curl http://chopine.be/lrz/ruby-osx-patches/dot-darwin.diff | patch -p0
curl http://chopine.be/lrz/ruby-osx-patches/etc-irbrc.diff | patch -p0
curl http://chopine.be/lrz/ruby-osx-patches/ignore-gsetcontext.diff | patch -p0
curl http://chopine.be/lrz/ruby-osx-patches/md5_sha1_commoncrypto.diff | patch -p0
curl http://chopine.be/lrz/ruby-osx-patches/use-dyld.diff | patch -p0
curl http://chopine.be/lrz/ruby-osx-patches/use-setreugid.diff | patch -p0
curl http://chopine.be/lrz/ruby-osx-patches/words-bigendian-from-arch.diff | patch -p0
./configure --enable-pthread --enable-shared
make
make install
cd ..
curl -O http://files.rubyforge.mmmultiworks.com/rubygems/rubygems-1.0.1.tgz
tar xzvf rubygems-1.0.1.tgz
cd rubygems-1.0.1
sudo /usr/local/bin/ruby setup.rb
sudo gem update --system
cd ..
curl -O ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.24.tar.gz
tar xvzf libpng-1.2.24.tar.gz
cd libpng-1.2.24
./configure
make
sudo make install
cd ..
curl -O http://www.ijg.org/files/jpegsrc.v6b.tar.gz
tar xvzf jpegsrc.v6b.tar.gz
cd jpeg-6b
ln -s `which glibtool` ./libtool
export MACOSX_DEPLOYMENT_TARGET=10.5
./configure --enable-shared
make
sudo make install
cd ..
curl -O ftp://ftp.remotesensing.org/libtiff/tiff-3.8.2.tar.gz
tar xvzf tiff-3.8.2.tar.gz
cd tiff-3.8.2
./configure
make
sudo make install
cd ..
curl -O http://www.littlecms.com/lcms-1.17.tar.gz
tar xzvf lcms-1.17.tar.gz
cd lcms-1.17
./configure
make
sudo make install
cd ..
curl -O http://download.savannah.gnu.org/releases/freetype/freetype-2.3.5.tar.gz
tar xvzf freetype-2.3.5.tar.gz
cd freetype-2.3.5
./configure
make
sudo make install
cd ..
curl -O http://jaist.dl.sourceforge.net/sourceforge/wvware/libwmf-0.2.8.4.tar.gz
tar xzvf libwmf-0.2.8.4.tar.gz
cd libwmf-0.2.8.4
./configure
make
sudo make install
cd ..
curl -O http://ufpr.dl.sourceforge.net/sourceforge/ghostscript\
/ghostscript-8.60.tar.gz
tar zxvf ghostscript-8.60.tar.gz
cd ghostscript-8.60
./configure --disable-cups
make
sudo make install
cd ..
curl -O http://ufpr.dl.sourceforge.net/sourceforge/ghostscript\
/ghostscript-fonts-std-8.11.tar.gz
tar zxvf ghostscript-fonts-std-8.11.tar.gz
sudo chown -R root:wheel fonts
sudo mv fonts /usr/local/share/ghostscript
curl -O ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.6-10.tar.gz
tar xvzf ImageMagick-6.3.6-10.tar.gz
cd ImageMagick-6.3.6
export CPPFLAGS=-I$HOME/include
export LDFLAGS=-L$HOME/lib
./configure --disable-static --with-modules --without-perl \
--without-magick-plus-plus --with-quantum-depth=8
make
sudo make install
cd ..
# And install the gems
sudo /usr/local/bin/gem install rails capistrano sqlite3-ruby rmagick ruby-debug-ide
Posted on December 19th, 2007 by dysinger
Filed under: @work | 2 Comments »
Amazon announced SDB late last week. I have been using it under NDA for a bit and have written a Ruby API for it. I have opened up a RubyForge project to deposit the code and will be doing so in the upcoming days.
There has been a lot of chatter on the internets about SDB over the last few days. Some of it correct. Some of it not. Some say it “takes on the relational database” while others say it “removes the database scaling wall” or it “lets you run some calculations on your data.” TechCrunch, of all places, says it “takes on Oracle and IBM” (/me chuckles). …….Plll-e-e-ease, people. You are missing it.
SDB is NOT a real-time or transaction db (that’s got to be 95% of the DBs out there). SDB doesn’t have transactions and has “eventual consistency”. This means if you query for a record that was updated, it may or may not give you back the updated version you just stored. Eventually, they promise to give back the updated version - they promise. SDB, today, would be a really poor choice for data store where a user interacts with a UI. ( IE: “What do you mean my order can’t be found?! I just paid you on the last screen with my credit card!” ) SDB doesn’t do joins (across domains) or ANSI SQL.
SDB is still a very, very useful tool to put in your belt for your EC2 cluster. Here’s the real-deal. Amazon is giving their users Google’s ‘BigTable’ for their EC2 cluster. This is a massive read-mostly hash database, a tuplespace, a directory, warehousing, reporting, search indices or metadata system that can be layered on S3. It fits well where the data is write-once-in-while but read-mostly.
If you really want an eye-opener on what Amazon intends this for then read up on Google’s MapReduce and BigTable. Then go back and read the docs for EC2 / SDB and your brain will :click => :bingo
Posted on December 17th, 2007 by dysinger
Filed under: @work | 6 Comments »
A handy tip for all you Mac OS X users out there: Have servers to deal with over SSH? You can download and install MacFUSE and SSHFS. Once you have installed both, you can fire up the SSHFS app.  SSHFS can mount a remote server as a local drive on your mac. Then you can edit files in place and drag and drop files to transfer securely to the remote server.
It’s pretty cool. Thanks to the FUSE team for writing it. Thanks to Google for porting it to the Mac.
http://code.google.com/p/macfuse/
Posted on December 15th, 2007 by dysinger
Filed under: @work | No Comments »
Rails 2.0 was released friday and it’s already been patched to 2.0.1 over the weekend. I’ve been on edge (pun intended!) so long it will be nice to freeze to a release for a while.
Posted on December 9th, 2007 by dysinger
Filed under: @work | No Comments »
We had high winds that actually shook the house last night. Trees in our neighborhood fell over and I found a half dozen roof shingles in my lawn this morning. I guess the winds were about 60 mph at times (hurricanes start at 74 mph) and Kauai had a 24-hour total of 3.23 inches of rain.
Apparently the storm is not done with us and is hovering north of the island chain. It may still come back to smack us around a few more times before the weekend, say the forecasters.
I need to build an ICF home to live in soon. It was unnerving having the house shake.
Posted on December 5th, 2007 by dysinger
Filed under: @home | No Comments »
Just wanted to acknowledge my father as he turns 60 today. I really admire you and all of your accomplishments. You have always taken the time to talk with me and be a mad-scientist-mentor to me. My first gunpowder-bombs, tool-boxes, fishing-poles, camping-gear, snow-sleds, mini-bikes, tree-forts, computers and other fun stuffs came from you, dad. Thanks for teaching me that moving forward requires persistence and persperation. Thanks for encouraging me on my way with many a computer-gift and a pat on the back for encouragement.
I love you, dad.
Posted on December 2nd, 2007 by dysinger
Filed under: @home | No Comments »
I need a way to configure servers at boot - to bootstrap them. Even if I have puppet to configure my AMIs on the fly, there are still some basic settings that need to happen to get puppet bootstrapped and working - like setting the hostname, notifying dyndns, setting the puppet server hostname, restarting puppetd, etc.
What I do is I add the following to my /etc/rc.local script on my AMI images.
/usr/bin/ruby -e "\
require 'open-uri';\
userdata=eval(open('http://169.254.169.254/2007-01-19/user-data').read);\
eval(open(userdata[:script]).read, binding);\
"
and then I place a bootstrap ruby script on one of my webservers like so (helloworld example):
#!/usr/bin/env ruby
open('/tmp/helloworld', 'w') do |f|
f < < "The secret was '#{userdata[:secret]}'"
end
then when booting the new image I provide a Ruby hash as the ‘userdata’:
{
:script => 'http://lolcat.com/bootstrap.rb',
:secret => 'i can has cheeseburger?'
}
You can see with this setup I can pass any script into the AMI with any variables the script may need. This sample script above puts a /tmp file on the box thas says “The secret was ‘i can has cheesburger?’” However, with this pattern, anything is possible. You can change the :script at launch time to point to any ruby script you want.
Posted on December 2nd, 2007 by dysinger
Filed under: @work | No Comments »