David McWilliams


My personal top 10 right now, it’s eclectic to say the least…

(Source: Spotify)

Meet The Family


Meet Dieuseul, his wife, Madame, and four of their thirteen children. This is the family who’s house you helped build! They are residents of Kenscoff, Haiti, a village in the mountains south of Port-au-Prince. I was able to meet them a few weeks ago during a trip to Haiti with Help One Now. Their house will be completed soon, if not already, and will be very similar to the house pictured below. The houses are “small”, only 3 rooms, but are engineered to provide a good foundational structure that can be easily added on to.


Below is their current dwelling, it’s a simple shelter with a pup tent next to it. You can easily see what providing a house like the one above provides for a family. They no longer have to worry about the next storm or continually maintain the non-permanent structure.


I was able to spend a few minutes with them. Long enough to scribble down names, view the construction, and snap a few pictures, but I never told them anything about the campaign to raise the money or even my name. Some may think that’s strange but there is a purpose to it, all of this work is being led by the local church with Help One Now only working behind the scenes in the States to provide resources the local church may not have. I learned that to this family, this house is a symbol that they are being cared for by their fellow brothers and sisters in Christ in their local community. After learning this, I simply wanted to be a silent member of the body of Christ that was given the opportunity to help strengthen their community and faith. I hope you feel the same way.

Below are some pictures of the construction. Again, thank you to those who prayed for and supported this work, If you want more details please get in touch, I’d love to share more about the trip.




All the block is made by hand, we tried to calculate how many blocks this man was making a day. It took him about 57 seconds to make a block so if he worked an 8 hour day he would make ~500 blocks.



Missions and Web 2.0

The following is an idea that I’ve had rolling around in my head and weighing on my heart for the last three months. People I talk to say nothing like this is out there, is that true? That’s why I want to ask a broader audience. Is something like this out there? If not, would it be useful? I want to hear your feedback.

Lately I’ve been thinking a lot about how missions, para-church and international aid organizations communicate the work God is doing in their organizations. From what I’ve learned and observed, please correct me if I’m wrong, the way most organizations communicate both internally and externally has not changed much in the last 20 years. From monthly newsletters via snail mail or email to an occasional update on the website or a visit when the missionary is on sabbatical, it all seems pretty old school these days. It’s not because organizations have not wanted to update the way they communicate, but there has not been a toolset created which would allow them to do so.

With all the internet has to offer from social media to mass email, keeping supporters and donors up-to-date and more involved in what is happening in your organization should be fairly simple, but its not. It’s hard to aggregate all those tools into one cohesive process. So I have this idea…

What if it was simpler, what would that do? What if one simple message posted from a little village in South Africa was able to notify the world about an immediate need? And what if there was a person on the other side of the globe who just happened to check Twitter on their iPhone and wanted to help? And what if that need could be met automatically by that person?  How would that change missions?

When you get down to the basics I see three elements to a missions organization: projects, people and places. Each organization has one or many projects (some may call them programs) that their ministry focuses on. Examples range from orphanages to disaster relief. Those projects occur in specific geographic places and are supported by people far and wide. People could be interested in a specific project if that project involves something they are passionate about: children, AIDS care, evangelism etc. If they have travelled to a specific place during a short-term mission trip they may be more interested in what is happening in that place across all projects. The question comes back to how do you keep those supporters up-to-date and engaged in the work?

If you can keep supporters engaged and up-to-date I think it gives you a lot. First, you can build a more passionate group of supporters who will spread the word about your work and bring in more support. Secondly, if communication can be streamlined and more support raised, there is less need to return home to fundraise so the work can continue on.

I think about all this and I think I see where the web could help solve this problem, I’m still thinking over what that solution might look like, but I see one there. The question I have for you is, do you see the need? Would you be interested helping me? I look forward to hearing from you.

Jun 6

Regex validator for Google Analytics account

I was adding Google Analytics support to ChurchTechies and I wanted to validate the form field I gave the user in their account settings for adding their analytics account info. A quick Google search didn’t give me what I was looking for so I ended up just writing my own regular expression for it. Hope this helps someone else too.


If you want the full Rails validation code its:

validates_format_of :google_analytics, :with => /\AUA-[0-9]+-[0-9]+\z/, :message => " code is invalid.", :allow_blank => true

Setting up a basic Rails server

I’ve been setting up quite a few Rails web servers in the last few weeks on Slicehost andAmazon’s EC2 service so I want to document the basics. On EC2 I’ve been using Amazon’s flavor of linux which, like RedHat/Fedora/CentOS, is RPM-based so I’m using Yum to manage the packages. I’m sure this could be further automated using Chef or Puppet but I don’t really need that kind of efficiency at the moment.

Update the system and install the basics:

sudo yum update
which gcc make git
sudo yum install make gcc-c++ zlib-devel openssl-devel gcc git curl curl-devel

Install and secure MySQL:

sudo yum install mysql-server mysql-libs mysql-devel
sudo /etc/init.d/mysqld start

Install SQLite

sudo yum install sqlite sqlite-devel

Install Ruby

sudo yum install ruby ruby-devel ruby-libs ruby-mode ruby-rdoc ruby-irb ruby-ri ruby-docs ruby-mysql ruby-sqlite3

Install RubyGems

mkdir src
cd src
wget http://rubyforge.org/frs/download.php/73882/rubygems-1.4.2.tgz
tar xzf rubygems-1.4.2.tgz
cd rubygems-1.4.2
sudo ruby setup.rb

Install Rails

cd ~/
sudo gem install rails --no-rdoc --no-ri
sudo gem install json --no-rdoc --no-ri
sudo gem install sqlite3-ruby --no-rdoc --no-ri
sudo gem install mysql --no-rdoc --no-ri

Install Apache

sudo yum install httpd
sudo yum install httpd-devel

Install Passenger for Apache

sudo gem install passenger --no-rdoc --no-ri
sudo passenger-install-apache2-module

After Passenger installs, add the following lines to the httpd.conf file so Apache knows how to handle Rails apps.

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2
PassengerRuby /usr/bin/ruby

If you are using virtual hosts, remember to point it to the public dir in your Rails app.

<VirtualHost *:80>
ServerName www.yourhost.com
DocumentRoot /somewhere/public

Restart Apache

sudo /etc/init.d/httpd start