Streaming Live Via Ustream.TV
Friday, March 28th, 2008I just started playing around with Ustream.tv today. It seems interesting and maybe I’ll try to do some Video Podcasting with it.
I just started playing around with Ustream.tv today. It seems interesting and maybe I’ll try to do some Video Podcasting with it.
With the Euro shooting past 1.57 dollars you can forget outsourcing to India. Places like GetFriday now charge $15 per hour for offshore workers where there is a language barrier. Instead, try posting gigs on Craigslist and you may get people near minimum wage at $6.55 per hour.

Back in 2007 I started using git after watching linus speak about it.
Currently there are 11 domains that I’m working on and I needed a quick way to create directories to store the apps, make a blank README file, and then create the remote repository. You may find this post helpful for setting up a remote git repository with gitosis.
#!/usr/bin/env ruby
def run_subdir(command, subdir)
`cd #{subdir};#{command}`
end
subdir = ARGV[0]
`mkdir #{subdir}`
run_subdir("git init", subdir)
run_subdir("git remote add origin git@server.yourdomain.com:#{subdir}.git", subdir)
run_subdir("touch README.txt",subdir)
run_subdir("git add .", subdir)
run_subdir('git commit -m "added blank readme"', subdir)
run_subdir("git push origin master:refs/heads/master", subdir)
Here is my Capistrano deploy.rb thats used to deploy to a remote server from one of my git repositories. The app is a simple merb app without a DB.
set :application, "yourappname"
set :scm, :git
set :repository, "/home/git/repositories/yourappname.git"
set :deploy_to, "/www/apps/#{application}"
#put the user you use to do deployments here
set :user, "deploy"
role :app, "server.yourdomain.com"
role :web, "server.yourdomain.com"
role :db, "server.yourdomain.com", :primary => true
#no mongrel cluster in this app
#set :mongrel_conf, "#{deploy_to}/current/config/mongrel_cluster.yml"
set :runner, nil
task :after_update_code do
# no need for a database in this app
# run "rm #{current_release}/config/database.yml"
# run "ln -s #{deploy_to}/#{shared_dir}/config/database.yml #{current_release}/config/database.yml"
end
# I added the task below because the cleanup task was trying to sudo which I didn't need
desc <<-DESC
Clean up old releases without sudo. By default, the last 5 releases are kept on each \
server (though you can change this with the keep_releases variable). All \
other deployed revisions are removed from the servers. By default, this \
will use sudo to clean up the old releases, but if sudo is not available \
for your environment, set the :use_sudo variable to false instead.
DESC
task :cleanup, :except => { :no_release => true } do
count = fetch(:keep_releases, 5).to_i
if count >= releases.length
logger.important "no old releases to clean up"
else
logger.info "keeping #{count} of #{releases.length} deployed releases"
directories = (releases - releases.last(count)).map { |release|
File.join(releases_path, release) }.join(" ")
run "rm -rf #{directories}", :via => run_method
end
end
namespace :deploy do
desc "Merb it up"
task :restart do
#restart_mongrel_cluster
run "cd #{current_path};merb -k 9090"
# run "cd #{current_path};env EVENT=1 merb -e production -c 1" # for evented mongrel
run "cd #{current_path};merb -e production -c 1 -p 9090" # plain old mongrel
#run "mongrel_rails cluster::restart -C #{mongrel_conf}"
end
end
Now a directory called websites is on my Mac Pro and MacBook, in that I have 11 subdirectories where I can do most site changes without logging on to the remote DB/Application/Web server. When you want to run 100 unique sites, everything possible must be automated.
If you ever need to get past some firewall or proxy blocking MySpace or any other site, checkout my new site ClearMyPath.com. Using this simple web app, you can bypass screens like the one below. Another plus is that your browsing also becomes anonymous to the sites you are visiting because your IP address is hidden.

This site launch comes 4 days after my last site IsWebsiteDown.com.
What do you do when you see a screen like this?

Over the weekend I made a new site called IsWebsiteDown.com that lets you see if there is a problem with a website or your connection to that site. A toolbar widget for one click checking of sites is available. No install is necessary, you just click and drag a link on the homepage of IsWebsiteDown to your browser’s toolbar.
The site was build in ruby with the merb framework in just a few hours. The design needs work, and I’m working on a few new features. In the next few months, I hope to launch more small sites as a foundation for launching some larger projects.
-dan
In WordPress the default ping list is small but can easily be changed by going to Options > Writing > Update Services. A ping lets other services like searching engines know you have added new content to a website.
I ping the following popular ping services:
http://api.feedster.com/ping
http://api.moreover.com/RPC2
http://api.my.yahoo.com/RPC2
http://xping.pubsub.com/ping/
http://ping.blo.gs/
http://ping.feedburner.com
http://ping.syndic8.com/xmlrpc.php
http://ping.weblogalot.com/rpc.php
http://rpc.blogrolling.com/pinger/
http://rpc.icerocket.com:10080/
http://rpc.newsgator.com/
http://rpc.technorati.com/rpc/ping
http://rpc.weblogs.com/RPC2
http://topicexchange.com/RPC2
http://www.blogdigger.com/RPC2
http://www.blogstreet.com/xrbin/xmlrpc.cgi
http://www.newsisfree.com/RPCCloud
http://ping.weblogs.se/
http://blogmatcher.com/u.php
http://coreblog.org/ping/
http://www.blogpeople.net/servlet/weblogUpdates
http://bulkfeeds.net/rpc
http://trackback.bakeinu.jp/bakeping.php
http://ping.myblog.jp
http://ping.bitacoras.com
http://ping.bloggers.jp/rpc/
http://ping.blogmura.jp/rpc/
http://xmlrpc.blogg.de
http://1470.net/api/ping
http://bblog.com/ping.php
http://blog.goo.ne.jp/XMLRPC
If you were curious, here is what the HTTP Request Header and the XML Message looks like for a ping:

I just switched away from Mephisto for my blog (Ruby on Rails based) to WordPress but found the default install horifically slow. I switched to WP because its popular (powering 1.8% of the internet) and its coded in PHP instead of Perl (Movable Type).
The WordPress slowness can be fixed by installing WP-Super-Cache. The initial install yielded only 16.45 requests/second (on a very powerful server). After installing WP-Super-Cache performance jumps to 1587.07 requests/second.
-dan