Structure and Practices of the Video Relay Service Program
The YouTube Video You Don’t See
Shop with confidence across the web
Helicopter view of your driving directions on Google Maps
Google CIO and others talk DevOps and "Disaster Porn" at Surge
Burning Man 2011 - Yes we were there.
Getting Started on the Google API
CACertMan app to address DigiNotar & other bad CA’s
Custom Class Loading in Dalvik
TWO REPORTS OF ADVISORY COMMITTEES ON DISABILITIES ISSUES RELEASED
Join the White House Disability Group Monthly Call on July 27
Multiple APK Support in Android Market
Forever alone involuntary flashmob
PS3 root key released - sign and run anything
Don't have a front-facing camera?
Mobile phone product testing: Models
How Can the LHC withstand 1 Petabyte of Data a Second?
Linus Torvalds is now officially a US Citizen
Portland bike lanes get mario symbols
Skype RC4 claimed reverse-engineered
Measurement Lab - Google IO BigQuery session is live querying 60 billion rows instantly
All you need is a little egotism, and $6
Convert IDN punycode to/from native characters
Sparkfun free day tomorrow: 1/7
Need a recursive DNS server? Use 8.8.8.8 and 8.8.4.4
JIQL - Java JDBC wrapper for Google DataStore
Unicorn == Mongrel delayed_job
Remus - Transparent HA for Xen
Crossbow Virtual Wire Demo Tool
Eucalyptus MySQL SOLR RabbitMQ Varnish == Nebula.nasa.gov
Apple drops ZFS due to legal concerns
Peering disputes between Cogent and Hurricane Electric
Equinix to acquire Switch and Data for $689 million
Project kxen renamed project HXEN
Lessconf Jacksonville - followed the next day by Barcamp
Stick-figure guide to advanced AES crypto
Why you should pay attention to Google Wave
rails-primer - how to easily host rails projects on appengine
AppEngine-JRuby on google code
Ruby on Google AppEngine: appengine-jruby video
Detecting Spammers with SNARE: Spatio-temporal Network-level Automatic Reputation Engine
Proxmox VE - OpenVZ KVM Cluster appliance management
Sun/Oracle kill of SXCE: Sysadmins everywhere cry in horror.
making water drinkable through nano-filtration
Pigin 2.6.1 adds Xmpp voice and video support
Setting up a Layer-3 tunnel VPN using ssh 4.3 and -w option tun devices
shadowserver.org - botnet hunting resources
OpenBSC - a Siemens BS-11 microBTS or a ip.access nanoBTS == your own GSM tower
Karesansui Project - a Xen management harness from Japan
Pygowave Server - Run your own Google Wave server
Xen clocksource0 time went backwards
Internet vs World Population stats
Apple pulls Google Voice app from iPhone - AT&T's fault
live-android boot ISO - very neat
How to update your GeoIP information in addition to SWIPping
Google Wave hackathon on 20th/21st, if you happen to be in Mountainview
Did I mention OTOY here before?
STuPiD - STUN/TURN using PHP in Dispair
Browser based Server-side 3D gaming from OTOY
Cisco's replacement for the WRT54GL is the WRT160NL
Spinn3r.com - Index the blogosphere
Parts of galaxy Messier 87 are missing
DRAEGER ALCOTEST 7110 MKIII-C Evaluation of Breathalizer Source Code
How Michael Osinski Helped Build the Bomb That Blew Up Wallstreet
Bruce Perens - A Cyber-Attach on an American City
How Google and Facebook are using R
adito - the new gpl fork of the old sslexplorer project
IP Address geolocation for free
Shapeways - $50 "3-D poem rings" until the end of the month
GrandCentral to become Google Voice
TurboVNC VirtualGL == FAST network GL
Ben Rockwood's presentation at the OpenSolaris Storage Summit: ZFS in the trenches
The Crisis of Credit Visualized on Vimeo
10gen - a java based app hosting infrastructure
Engineyard Vertebra - another cloud infrastructure management harness
Eucalyptus - an opensource EC2 compatible hosting infrastructure
railsbrain.com <-- ajaxified rdoc
AP IMPACT: SWAT Teams Deployed in 911 fraud
Lessons learned by people who have quit Google
Makwana indicted for Fanny Mae malware
Zentific svn repo: alpha available
DACS - Distribution and Configuration System - version 2.0
Video of Cisco IOS attack talk at Chaos Computer Conference
Cosmic radio background noise 6 times higher than expected
Grow your own bioluminescent algae
Quartz Composer and Cruise Control status
Sunay Tripathi's Solaris Networking Blog
Merry Christmas from Chiron Beta Prime
Google's Native Client... the next ActiveX?
kenai.com - xVM Server Project site
58% Spam Drop from one colo shutdown
Xenomips - a Xen friendly domU version of Dynamips - Emulate a Cisco 7200
Debian and Android dual-boot on the G1
Sipper (SIPr) - a SIP testing framework in ruby
DBslayer - a SQL abstraction layer using JSON
Fingerworks keyboard in a MacBookPro
The Phoenix BIOS hypervisor is Xen
Do you live in a Constitution-Free zone?
Puppet presentation at NYCOSUG this month
XenSmartIO - Infiniband IO for Xen
Starting with b100, OpenSolaris has virtual consoles
OpenSolaris testfarm build server interface now available
Firefox M9 Fenric - Maemo alpha
SystemZ - aka Sirius - a port of OpenSolaris to IBM System Z mainframe OS running in z/VM mode
Solaris and ZFS on a Dell 2950, tweaking notes
Early Access Windows PV drivers for xVM
Economics: The Theory of Interstellar Trade
The Financial Crisis: What Happened and What's Next?
Cisco to run Windows 2008 on their appliance virtually for services
Packetfence: an OpenSource Network Access Control system
persist.js - an alternative to gears
Chinese building "impossible" EM drive
COMSTAR SMTF - solaris FC, SAS, and iSCSI targets
Flexiscale - yet another control panel?
RightScale - cloud control panels?
Criticial ESXi remote vulnerability in openwsman
While deploying a new Ruby on Rails based webapp to development/QA/production clusters, I found a novel way to differentiate the environments without modifying the Rails environment.rb for each.
The first discovery was that Ruby-MemCache is generally deprecated for speed in favor of memcache-client. See the memcache-client docs for more information on its deployment.
After adding that to the metapackage deployment, it was a matter of modifying the environment.rb to use a memcache instead of file session store. HowtoChangeSessionStore covers this readily.
Then I stumbled on bin-environment for lighttpd. With it, you can set multiple environment variables for the FastCGI you are about to spawn.
Each server in a functional cluster runs in a specific RAILS_ENV mode. Likewise, each cluster has its own group of memcached servers as a makeshift distributed filesystem of sorts.
To set these indepenndently for each environment, you can define some environment variables and reference them from within environment.rb.
Here is an example lighttpd.conf snipppet that sets the environment variables:
server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".fcgi" =>
(( "socket" => "/tmp/fastcgi.socket",
"bin-path" => "/var/www/public/dispatch.fcgi",
"bin-environment" => (
"memcache_servers" => "192.168.0.2:2222,192.168.0.3:2222",
"RAILS_ENV" => "development"
),
"max-load-per-proc" => 25,
"min-procs" => 1,
"max-procs" => 5,
"idle-timeout" => 60
))
)
server.error-handler-404 = "/dispatch.fcgi"
index-file.names = ( "dispatch.fcgi" )
server.dir-listing = "disable"
Then you need to reference the environment variable from within environment.rb:
# ...
# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(FILE), 'boot')
require 'memcache' if ENV['memcache_servers']
memcache_options = {
:compression => false,
:debug => false,
:namespace => "app-#{RAILS_ENV}",
:readonly => false,
:urlencode => false
} if ENV['memcache_servers']
memcache_servers = ENV['memcache_servers'].split(",") if ENV['memcache_servers']
Rails::Initializer.run do |config|
# ...
config.action_controller.session_store = :mem_cache_store if ENV['memcache_servers']
# ...
end
if ENV['memcache_servers']
CACHE = MemCache.new(memcache_options)
CACHE.servers = memcache_servers
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.merge!({ 'cache' => CACHE })
end
# ...
Pretty slick.
There are suprisingly few guides to using memcache with Rails and lighttpd, but none of them seem to cover all of this in any all encompassing detail:
On to more fun, with Paul's new Ruby bindings for Xapian...
William Reading on the LOPSA list mentioned some useful bits about EV-DO Revision A rollout plans that seemed worth posting to the blogosphere:
Thus spake William Reading:
Well, I probably should have noted somewhere that Sprint has currently deployed EV-DO Rev. 0. The problem with that is that you get the nice speeds down, but you're still limited to 1xRTT speeds (slightly worse than speeds you'd get with EDGE, but a lot better than GPRS). Supposedly Sprint is looking into deploying Rev. A in 2007-2008. That's supposed to get you something like 1.8Mb/s down and 3.1Mb/s up--though I'm not sure they have the backhaul everywhere to get those kinds of speeds just yet because I'm near a tower and don't hit the maximum 2.1Mb/s possible. (But I do get the 700-800Kbps they promise). Verizon doesn't seem to have announced a date for their EV-DO Rev. A. I'm not so sure that they're keen on deploying it just yet because then you'd actually be able to use it for heavy-duty VoIP applications and all the other fancy stuff that they prohibit in the TOS.
While Verizon's EV-DO network rollout is older and larger than Sprint's, it sounds like Sprint may be upping the ante with revision A service sooner rather than later.
Interesting.