iPad SDK 3.2 Beta 4 Clears Up Facts About iPad Camera And Give Some Gestures TO Developers.
Google Maps Adds Biking Directions
App Engine joins the Google over IPv6 Program
Good Artists Copy, Great Artists Steal
Tech Tour: Cambridge Innovation Center
Nippon Oil and Hitachi aim at mass-producing microbe-derived biofuel
SCALE8x, OpenVZ goodies, and new kernels (including 2.6.32)
Strategy: Planning for a Power Outage Google Style
The island phone system adventure… « Baby is 60 – Tim Panton on voice and computers
Frameless laptop screens expected soon
The blind camera shows you someone else’s pictures
Princeton TPM-ICN series Bluetooth bracelet.
YouTube Blog: The Future Will Be Captioned: Improving Accessibility on YouTube
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
Microsoft FUD on VMWare: vmwarecostswaytoomuch.com
nmap builds zenmap topology maps
Don't forget about BarCampTampaBay
The LHC accelerates, and that's what it's all about.
Sun's launch of xVM, live webinar
Microsoft to give away Hyper-V for free, live migration by 2010
Ubuntu's Intrepid Ibex will be followed by Jaunty Jackalope
Why Xen traps negative segment offsets
Rails 2.1.1 more REXML bug fixes
Indiana OS2008.03 RN3 released - based on nv_b96
Skype Mobile Phone (Not in the US)
Youtube gets closed captioning support
Getting xVM to work on OpenSolaris 2008.05
How a VoIP E911 call is handled
MonetDB - a column based RDBMS, ideal for time series data
VMfaq's comparison of virtual storage IO
Xen and Solaris, a log of experience.
OpenSolaris CR#6654713 - 32G limit bug stemmed from bad USB hardware? Perhaps fixed?
OpenSolaris CommonArrayManager
Sharity-Light - smbfs derived samba clone
Drizzle, a thin mysql, generating buzz
VMWare to offer ESX hypervisor for free
Fan, the programming language.
Blackberry Thunder with Haptics keyboard
iPhone App Store Live Walkthrough now available
Overclocking tool for the Mac Pro
ADO.NET Entity Framework (Microsoft's new ORM) given a non-confidence vote by beta testers
Ruby interpreter flaws make the case for JRuby
AdvFS - Tru64 filesystem ported to Linux
OpenSolaris 2005.05 repository update to b91 - follow these instructions carefully
SXCE can ZFS install as of b90
Vertebra: EngineYard's Next Generation Cloud Computing Platform
Skype 4.0 beta overhauls video chat
Mozilla org receives traditional IE cake
Toyota Prius to go entirely Electric
Bill Gates steps down permanently for philanthropic activities
Men write code from Mars, Women write more helpful code from Venus
DRBD LVM Xen = Bug. A rather nasty one at that.
Intel unveils Ct as an extension for C/C to encourage threaded programming for multiple cores
VMWare ThinApp - Run any Windows app on any version of Windows
JRuby-Rack <-- a JRuby port of Rack
Rack <-- a lighter cousin to Merb, fully threaded and no Mutex.
Solaris Cluster Express (SCX) 6/08 released.
Changing solaris' default password hashing
Texas based service provider explosion affects 9,000 servers and 7,500 customers.
Jruby on Rails on Tomcat deployed as as WAR file
42 more of the best Linux games
Use Google's cached ajax libraries
Arduino microcontroller with OS/X
The metasploit page describing the full impact of the poor RNG.
Holger Bert's blog post on the openssl RNG fiasco
Cayac - Cherokee MySQL PHP5 phpMyAdmin
ZFS very slow under an xVM kernel
Dynamically editing libvirt xml configs while a VM is running to redefine reboot flags.
Chronoton - the time travelling robot who's best friend is a talking pie game
Rietveld - Google's code review tool
Opensource multitouch displays
Ono - an efficient way to locate nearby peers
Solaris CIFS integrated AD with ZFS acls
Samba Winbind and ZFS acl working together
Starting down the ActiveSalesforce path, my first goal was to do a simple dump of a class of objects to yaml using the API.
$ gem install activesalesforce
$ cat - <<EOF > dump_accounts.rb
#!/usr/bin/ruby
require 'rubygems'
require_gem 'activerecord'
require_gem 'activesalesforce'
ActiveRecord::Base.logger = Logger.new(STDERR)
ActiveRecord::Base.establish_connection(
:adapter => "activesalesforce",
:url => "https://www.salesforce.com/services/Soap/u/7.0",
:username => "yourlogin@yourdomain.com",
:password => "yourpassword"
)
class Account < ActiveRecord::Base
end
puts Account.find(:all).to_yaml
EOF
$ chmod u+rx dump_accounts.rb
$ ./dump_accounts > accounts.yml
Next step: figure out how to handle user authentication for Account Contacts...
The following is a post I've just made to the pgcluster-general mailing list. As it is blog worthy, it seemed appropriate to post here.
I've been testing a pgcluster running 1.5.0rc7 with pgbench 8.0.2.
I have 6 servers in a cluster:
2 pglb servers (2.6 kernel debian, amd sempron 2800, 1G RAM, 2 IDE drives software RAID1) 2 pgreplicate servers (2.6 kernel debian, amd64x2, 4G RAM, 2 IDE drives software RAID1) 2 postgres database servers (2.6 kernel debian, amd64x2, 4G RAM, 4 IDE drives software RAID10)
The pgbench page is:
http://www.sitening.com/tools/postgresql-benchmark/
It's a simple build:
$ wget http://www.sitening.com/pgbench.8.0.2.c
$ gcc -I/usr/include/postgresql -o pgbench pgbench.8.0.2.c -lpq4 -lm
After a bit of postgresql tweaking, I'm finally getting some good numbers (see below).
Things to remember when installing pgcluster:
Back to the pgbench numbers.
The fastest mode of operation is select() only (pgbench -S):
$ ./pgbench -S -n -v -c 10 -t 1000 -m 10
transaction type: SELECT only
scaling factor: 1
number of clients: 10
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 8394.268729 (including connections establishing)
tps = 12815.846538 (excluding connections establishing)
mean tps = 8399.209915 (including connections establishing)
standard deviation = 202.800265
mean tps = 12574.325714 (excluding connections establishing)
standard deviation = 428.241079
Running this in parallel with an insert()/select() mix doesn't seem to impact it much. Meaning, a select() running in parallel with an insert()/select() run only seems to drop the numbers by 1k-2k tps or so.
To run an insert()/select() mix, run pgbench with the -N flag:
$ ./pgbench -N -n -v -c 10 -t 1000
transaction type: Update only accounts
scaling factor: 1
number of clients: 10
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 115.539752 (including connections establishing)
tps = 116.069260 (excluding connections establishing)
These numbers are to be expected with a synchronous replication system like pgcluster. As long as the select() to insert()/update() ratio is at least 9:1 things should be usable.
Trying to run the full "TPC-B (sort of)" mode, pgbench starts throwing update() into the mix.
This is where pgbench starts to deadlock for me.
You can add the "-d" flag to pgbench to debug things if it seems frozen.
The first pgcluster "bug":
It looks like I deadlock almost immediately after spawning pgbench with the following arguments:
$ ./pgbench -n -v -c 1 -t 1000 -m 1 -d
pghost: pgport: (null) nclients: 1 nxacts: 1000 dbName:
message type 0x43 arrived from server while idle
message type 0x5a arrived from server while idle
client 0 sending begin
client 0 receiving
client 0 sending update accounts set abalance = abalance + 216 where aid = 52606
client 0 receiving
client 0 sending select abalance from accounts where aid = 52606
client 0 receiving
client 0 sending update tellers set tbalance = tbalance + 216 where tid = 7
client 0 receiving
client 0 sending update branches set bbalance = bbalance + 216 where bid = 1
*deadlock*
The odd part is that only that pgbench seems hung. I can spawn any number of "pgbench -S" and "pgbench -N" sessions I want while that one is stuck, and things seem to continue running.
My second pgcluster "bug":
While doing this testing, I've found that pglb chokes if you request more client connections than it can handle.
In my testbed, I upped the max connections to 300 per server (each search tuned to allow 500 client connections), leaving me with 600 pooled connection threads running on my pglb server.
If I hit pglb with 600 available pooled connections with, say, 1000 pgbench connection attempts, pglb goes into a dead state refusing to accept more connections, even after pgbench is killed.
$ ./pgbench -S -n -v -c 10 -t 10000 -m 1
transaction type: SELECT only
scaling factor: 1
number of clients: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
tps = 11486.270576 (including connections establishing)
tps = 11991.783709 (excluding connections establishing)
$ ./pgbench -S -n -v -c 1000 -t 10 -m 1
Connection to database '' failed.
pglb could not connect to server: no cluster available.
$ ./pgbench -S -n -v -c 10 -t 10 -m 1
Connection to database '' failed.
pglb could not connect to server: no cluster available.
or
Sorry, backend connection is full
After this state occurs, I need to kill off pglb and restart it, and sometimes this doesn't fix it (and I need to go through and restart the replication servers and the database servers).
In conclusion:
I actually have 3 distinct pgclusters going here, each containing 6 of the aforementioned servers, counting a total of 18 servers:
My question to the pgcluster list is: what version of pgcluster is "stable" enough to be used in a production environment?
I'd rather not need to go the direction of Slony-I with something like pgpool or dbbalance (to shunt writes to the master), first due to the complexity of managing these layers, and secondly due to the data coherency lost between the master and slaves (I want atomic synchronous replication).
Then again, this is all for hosting a Ruby on Rails application. We can make application changes as needed.
I hope this helps.
Subversion is a wonderful revision control system, until it breaks.
Historically, the BDB store was often corrupted and a "svnadmin recover" is required to rebuild the berkeley databases.
With newer versions of Subversion, FSFS has taken over as the preferred repository store. Faster and much more reliable than BDB, it has made Subversion far more stable than it has been in the past.
Unfortunately, FSFS appears to continue to have rare random corruption issues. Subversion developers are actively working on tracking down the cause, but it remains elusive at the moment.
Though much rarer than its BDB counterpart, repairing a corrupt FSFS store isn't as simple as running "svnadmin recover" - recover only works with BDB.
Recently, we stumbled upon such a cause. The symptoms appear much like the FAQ apr0.9.6 solution, with a difference: local file:// checkouts errored out just the same. As this is an Apache bug fix for poll(), a local checkout really shouldn't be using poll() at all.
Sadly, my users were continuing to commit changes to their subtrees in the repository. As long as they didn't try checking out the corruption affected tree, they could continue doing their work.
Trying to do a "svnadmin verify" results in the same error as the checkout, and an "svnadmin dump" fails just the same (as dump and verify appear to be very similar in nature). Without the ability to dump, it is neigh impossible to backup the revision history to restore to a repository elsewhere. The only daunting alternative was to checkout the various subtrees and hand-commit each revision checkout to another repository... I was suprised to find that an automated script to do such a thing hadn't been written yet.
Step 1 was to visit #svn on irc.openprojects.net and voice my concern at potentially finding an unanswered bug.
The folks on #svn immediately replied "go to #svn-dev and be prepaired to back your claims".
Step 2 then was to visit #svn-dev and lay out the above facts once again.
In the end, the developers suggested I send an email with all of the facts to the subversion user mailing list.
So I put the IRC chat together with the facts and posted "Repository corruption? Problem similar to FAQ#tiger-apr-0.9.6" to the subversion user list.
John Szakmeister soon replied with a suggestion to try:
http://www.szakmeister.net/fsfsverify/
This python script verifies the transactions in a given fsfs revision, and potentially repairs some of the more common problems found.
When run, the following error presented itself:
$ fsfsverify.py db/revs/653
...
NodeRev Id: 1st.g.r653/17936924
type: file
pred: 1st.g.r611/34703561
text: DELTA 653 1668558 16257066 24194048 c0bd2a8b7ee4db1ee816ea607392755d
prop: UNKNOWN 405 9727810 53 0 113136892f2137aa0116093a524ade0b
cpath: /cpp/Client/IE/Project/src/Observer.ncb
copyroot: 178 /cpp/Client/IE
starting length: 16257062
offset: 1668583
Decoded too many bytes
total: 14384890
remaining: 1872172
Traceback (most recent call last):
File "/root/fsfsverify.py", line 699, in ?
process(noderev, rev_file, options.dump_instructions,
options.dump_windows)
File "/root/fsfsverify.py", line 652, in verify
dump_windows)
File "/root/fsfsverify.py", line 289, in verify
digest = parse_svndiff(f, self.length, dump_instructions, dump_windows)
File "/root/fsfsverify.py", line 188, in parse_svndiff
raise 'svndiff error'
svndiff error
John suggested that Andrew MacKenzie also reported a similar issue, but he would need a copy of the revision to verify it was the same problem.
Attempting to use fsfsrepair.py's "-f" or "--fix-read-length-line-error" option didn't seem to affect anything at all.
I posted the revision somewhere John could access it.
After looking at it, John thinks this may be a new kind of corruption, and he'll work something into fsfsverify.py to fix it when he can find the time.
In the interim, John suggested truncating the file in the node revision using the following command:
fsfsverify --truncate=1st.g.r653/17936924 653
"This command will basically truncate the file to 0 length in that revision." - John.
Hopefully others will find this blog post along their search for an FSFS corruption fix and consider this potential "fix".
I'm not entirely sure what the data loss will entail, but it may very well solve your immediate problems dumping and restoring the repository elsewhere.
Note: always do an "svnadmin hotcopy" to make a test repository to test on, and immediately take a backup if you can.