<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4657016279337458545</id><updated>2012-01-15T19:00:36.927-08:00</updated><category term='Development'/><category term='ATC Client'/><category term='VATSIM'/><category term='General'/><category term='Ruby'/><category term='XSB'/><title type='text'>Musings on the Dogwatch</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-2287337529362583915</id><published>2011-12-19T23:42:00.001-08:00</published><updated>2012-01-15T19:00:37.259-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><title type='text'>Git advantages in the corporate environment</title><content type='html'>&lt;p&gt;I've come across a couple of  blogs and message board posts (some of them admittedly dated) lately which insist git is not usable in a corporate environment because:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;• git is not centralized.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Corporate environments MUST HAVE a centralized solution for backup purposes&lt;/p&gt;&lt;p&gt;&lt;strong&gt;• git does not have canonical revision numbers.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Corporate environments must have canonical version numbers.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p style="font-size: 21px;"&gt;&lt;strong&gt;The Backup Issue&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;The first point is of course, invalid.  Git can be used in a centralized manner, making all the backup monkeys happy.  Used in this manner, it's not different from subversion in that the repository exists on a server and it can be backed up.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;However, that ignores a far bigger point. What if your IT department isn't quite as awesome as they think they are?  What if you were told about the crack sysadmin team, only to learn the system admin is low-rate overseas hourly worker?  What if he didn't quite get that backup job done before the bus came?  What if he hasn't checked if the script he wrote 4 months ago is still working?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;One night your server stops responding, and after opening a case with IT, you learn to your horror that they're unable to restore the backup.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Not to worry, right?  Every developer on the team has a copy of your subversion repository, right?  Wrong.  They have a single checkout of repository.  One version.  Need to revert to a previous version? Can't do it.  Need to look at the changes involved in a particular bug fix?  Not happening.  Need to review the commit messages for a particular commit? Sorry, the entire log is gone.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;This differs markedly from the git world.  In the git world, should your centralized repository be lost, every single developer has a copy of the entire repository.  It is possible that if a developer hasn't updated between the time another developer pushed some commits and the central repository was lost, he might be a couple commits behind.  This is true in the subversion world too.  If developers hadn't updated before the repository was lost, only the last person who checked in will have the last few commits.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;It can't be stressed enough how much better your situation is with git.  Think about it.  With subversion, you'd figure out who had the up-to-date copy of the repository.  Then what?  You can't find out what revision your teammate had and send him a patch to bring his copy of the project up to date, since subversion can't generate a diff without access to the lost central repository.  I suppose the most up-to-date developer could put his copy on a file share somewhere and developers could manually diff the files and apply any changes.  Yeah, that's it, what fun.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;The other choice of course is just to take the most up-to-date developer's project and use it to create a new subversion repository.  That will work and the team will be able to check out an up-to-date copy of the project.  An up-to-date copy with no history, no previous versions, nothing. Certainly not what one would consider "enterprise-level source code management."&lt;/p&gt;&lt;p&gt;Oh, but it also gets better.  What if your team's discipline is really lacking, and nobody has a version checked out that actually works?  You're hosed - you can't revert to a known working version - you have no central repository anymore.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Now let's look at the git situation.  Like with subversion, the team is likely to figure out who has the most recent copy of the repository.  With one command he can generate patch files that his colleagues can run to bring their repositories up-to-date before any kind of centralized server is restored.  Depending on the size of the team, team members could be completely up-to-date, sharing changes again and productive again literally within a few minutes.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Oh and those patch files?  Not only do they update the code to the correct state, but they also include the log messages, commit hash, etc.  So when the patches are applied, the resulting repository looks EXACTLY like the repository from which it came.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong style="font-size: 18px;"&gt;The Revision Number Issue&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;I don't know who came up with this gem, but talk about a ridiculous argument. Someone tell me what a canonical version number is?  Is it sequential?  Is it unique? Is it alphanumeric?  Is it octal?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Although subversion has simple version numbers, they're not particuarly useful.  Sure, I can tell my team member - "Hey, create that branch off revision 2142 of trunk," but that doesn't do him any good other than pointing to a version.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;And while you would think you could figure out relationships between revisions using the revision number, it's actually difficult to do so, since revision numbers are global and increment when other developers check in, or even when some checks in on another branch.  So, think that revision 10 on trunk is the result of 5 commits on trunk since you checked in revision 5?  Could be, but it also could be that someone checked in 4 revisions to a branch, so that revision 10 actually follows revision 5 in trunk.  Not much value there.&lt;/p&gt;&lt;p&gt;Now, git has those super-complicated hex-looking numbers.  I mean, really.  We as developers are supposed to be able to deal with these hex strings?  How ridiculous is that?First of all, let's get the easy part out of the way.  Those big hex numbers are not difficult to deal with because we can shorten them dramatically.&lt;/p&gt;&lt;p&gt;In small repositories, four characters is sufficient.  In large repositories, 4, 5, or 6 characters is certainly going to be sufficient.  No more difficult than typing version "21042."  And of course we can use all sorts of symbolic names and expressions such as HEAD, HEAD^ (the parent of HEAD), time-based specifiers and others.&lt;/p&gt;&lt;p&gt;More importantly however, the commit is a hash of the branch at that particular time.  What this means is that you can GUARANTEE that code with the same hash is exactly the same.&lt;/p&gt;&lt;p&gt;Here's how cool this is:&lt;/p&gt;&lt;p&gt;Let's say for a minute that the repository that went down was a public project that my company exposes to the outside world and allows others to clone.  And now let's say that somehow, some way, I lost the last 5 commits out of that repository.  I have a copy of the log, so I know what the commits were, but I already checked with everyone in my company and nobody has a copy of those commits.Oh man, I'm in big trouble.  I don't have a trustworthy source.&lt;/p&gt;&lt;p&gt;Can I really just reach out to the some random 12-year-old on the Internet that has a copy of the repository and ask for a patch containing those commits?  Maybe I should find someone that works for another large company.  Surely that's a good way to make sure they're trustworthy.  Or maybe I can get my company to pay for a background check on someone.&lt;/p&gt;&lt;p&gt;The fact of the matter is, if you have the hash, you need not worry.  The code could come from the most notorious hacker group on the planet and as long as the hashes match, I know they did not change one single bit in my code.&lt;/p&gt;&lt;p style="font-size: 18px;"&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Wow.  That's a lot more than I intended to write.  But hopefully you can see now why such arguments are not only ridiculous, but just plain wrong.&lt;/p&gt;&lt;p&gt;For the Mercurial fans out there, readers should note that I'm willing to bet Mercurial has the same advantages as git in these areas.  Both are excellent DVCS systems and I wouldn't hesitate to use either.&lt;/p&gt;&lt;p&gt;Finally, I do recognize that there are situations for which a DVCS may not be appropriate.  If you have terabytes of data in your repository, git or hg is probably not for you without a lot of repository re-organization.  In those cases, by all means stick with your centralized VCS.  Just realize that because you have something preventing you from using a DVCS doesn't mean the DVCS advantages don't still exist.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-2287337529362583915?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/2287337529362583915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2011/12/git-advantages-in-corporate-environment_19.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/2287337529362583915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/2287337529362583915'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2011/12/git-advantages-in-corporate-environment_19.html' title='Git advantages in the corporate environment'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-5583645787525510511</id><published>2011-10-24T12:50:00.001-07:00</published><updated>2011-10-24T12:50:32.264-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>SQLite2 source and errors</title><content type='html'>Every once in a while, I come across a SQLITE2 database that needs to be converted to SQLITE3 format.&lt;br /&gt;&lt;br /&gt;Doing so is easy.  You just dump out of SQLITE2, and import into SQLITE3, such as:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;code&gt;sqlite2 mysqlite2db.db .dump &gt; sqlite2_mysqlite2db.dump&lt;br&gt;&lt;br /&gt;sqlite3 mysqlite3db.db &lt; sqlite2_mysqlite2db.dump&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;One problem is though, SQLITE2 is often not available anymore through any of the standard Unix package management systems.  So if you have a newer machine with an app that's utilizing a SQLITE2 database and you want to upgrade that app to a newer version that uses SQLITE3, it's tough to get SQLITE2 installed so you can do the conversion.&lt;br /&gt;&lt;br /&gt;What I did is download the SQLITE2 source code from:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;http://www.sqlite.org/sqlite-source-2_8_17.zip&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Then I compiled.  (Remove the tclsqlite.c file.  It's not needed)&lt;br /&gt;&lt;br /&gt;This is on Debian Linux, BTW.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;gcc -o sqlite2 *.c&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;That worked and got me a sqlite2 executable.  However, when I tried to use it on my SQLITE2 database, I got:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;sqlite2: btree.c:702: sqliteBtreeOpen: Assertion `sizeof(ptr)==sizeof(char*)' failed.&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Hmm...what the heck?&lt;br /&gt;&lt;br /&gt;I didn't carefully read the error and instead quickly went to googling.  However, I didn't find much in the way of help.  However, it quickly struck me that this was a 64-bit problem.  Aha!  I had forgotten to compile the program with the 32-bit flag.  No problem.&lt;br /&gt;&lt;br /&gt;(On OSX the flag would be -arch i386)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;gcc -m32 -o sqlite2 *.c&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;But that gave me:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;After a little googling on that, I discovered I needed to install the lib6c-dev-i386 package, since I was running on an AMD 64-bit system.  I installed the package, recompiled and everything is working fine.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-5583645787525510511?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/5583645787525510511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2011/10/sqlite2-source-and-errors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/5583645787525510511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/5583645787525510511'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2011/10/sqlite2-source-and-errors.html' title='SQLite2 source and errors'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-5038135806822828631</id><published>2011-09-07T13:34:00.001-07:00</published><updated>2011-09-07T13:34:41.937-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Installing Ruby 1.8.7p352 under rvm</title><content type='html'>I was recently trying to install Ruby under RVM on OS X, 10.6.8, running in 32-bit mode.&lt;br /&gt;&lt;br /&gt;For Ruby 1.9.2 p290, it was no problem.  rvm installed it without issue (using x86_64).&lt;br /&gt;&lt;br /&gt;However, Ruby 1.8.7 p352 would fail constantly, with:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;making ruby&lt;br /&gt;/usr/bin/gcc-4.2 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp  -fno-common -pipe -fno-common    -DRUBY_EXPORT  -L. -arch i386 -arch x86_64 -bind_at_load   main.o  -lruby -ldl -lobjc   -o ruby&lt;br /&gt;ld: warning: ignoring file ./libruby.dylib, file was built for unsupported file format which is not the architecture being linked (i386)&lt;br /&gt;Undefined symbols for architecture i386:&lt;br /&gt;  "_ruby_init_stack", referenced from:&lt;br /&gt;      _main in main.o&lt;br /&gt;  "_ruby_init", referenced from:&lt;br /&gt;      _main in main.o&lt;br /&gt;  "_ruby_options", referenced from:&lt;br /&gt;      _main in main.o&lt;br /&gt;  "_ruby_run", referenced from:&lt;br /&gt;      _main in main.o&lt;br /&gt;ld: symbol(s) not found for architecture i386&lt;br /&gt;collect2: ld returned 1 exit status&lt;br /&gt;lipo: can't open input file: /var/folders/rp/rprVpkCiGbKvS3sirOXX9k+++TI/-Tmp-//ccoGzQBh.out (No such file or directory)&lt;br /&gt;make[1]: *** [ruby] Error 1&lt;br /&gt;make: *** [all] Error 2&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can see above that files are getting correctly compiled with both the -i386 and -x86_64 -arch flags.  That was confusing.  I verified that the Makefile included the arch flags on both the CFLAGS and LDFLAGS variable.&lt;br /&gt;&lt;br /&gt;I traced the problem to the following line of output:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;cc -dynamiclib -undefined suppress -flat_namespace -install_name&lt;br /&gt; /Users/wwilliam/.rvm/rubies/ruby-1.8.7-p352/lib/libruby.dylib &lt;br /&gt;-current_version 1.8.7 -compatibility_version 1.8   array.o bignum.o &lt;br /&gt;class.o compar.o dir.o dln.o enum.o enumerator.o error.o eval.o file.o &lt;br /&gt;gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o &lt;br /&gt;parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o &lt;br /&gt;sprintf.o st.o string.o struct.o time.o util.o variable.o version.o  &lt;br /&gt;dmyext.o  -o libruby.1.8.7.dylib&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the dynamic library is being linked here without any architecture flags.  What needed to be set is the LDSHARED variable. &lt;br /&gt;&lt;br /&gt;My first attempt was to modify the Makefile by hand, adding the -arch flags to LDSHARED.  That worked - somewhat.  I was able to run make and get everything compiled.  However, that didn't solve the problem completely, because whenever I tried to install via rvm again, my changes were overwritten since rvm ran configure again.&lt;br /&gt;&lt;br /&gt;Naturally, for my next attempt, I did a "export LDSHARED="-arch i386 -arch x86_64" in the terminal in which I was running rvm install.  That also did not work.  I checked and config.log DID show my additions to LDSHARED.  Hmmm...WTH?&lt;br /&gt;&lt;br /&gt;It turns out that the configure.in defines LDSHARED explicity for each machine type and does not use the value that configure picks up.&lt;br /&gt;&lt;br /&gt;For darwin, it was:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        darwin*)        : ${LDSHARED='cc -dynamic -bundle -undefined suppress -flat_namespace'}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So the fix in this case, was to change it to:&lt;br /&gt;&lt;pre&gt;        darwin*)        : ${LDSHARED='cc -arch i386 -arch x86_64 -dynamic -bundle -undefined suppress -flat_namespace'}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I did submit bug #5295 against Ruby 1.8 for this issue.  Whether it will get fixed or not, I don't know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-5038135806822828631?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/5038135806822828631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2011/09/installing-ruby-187p352-under-rvm.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/5038135806822828631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/5038135806822828631'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2011/09/installing-ruby-187p352-under-rvm.html' title='Installing Ruby 1.8.7p352 under rvm'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-7880780635579076866</id><published>2011-06-04T14:17:00.001-07:00</published><updated>2011-06-04T14:17:46.096-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VATSIM'/><title type='text'>Update on VATSIM work</title><content type='html'>I realize I haven't posted on this blog in many months, but I thought I'd do a short update just to talk about the things I've been working on.&lt;br /&gt;&lt;br /&gt;Most of my work recently has gone into the VATSIM FSD.  None of the changes have been earth-shattering, but they have involved things like updating the FSD to work with sqlite3, changing its build system to Cmake and improving its method of locating its configuration files.  None of those changes will be noticed by VATSIM users, but they make life easier for those of us who work on the code and support the servers.&lt;br /&gt;&lt;br /&gt;For those of you waiting with bated breath on the upper-layer wind improvements I've been working on, the bad news is it's still not finished.  The good news is I've started working on it again.  I'm currently in the process of changing the backend database from MySQL to Postgres.  Once that's complete, I'll be able to go back to finishing up the wind management code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-7880780635579076866?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/7880780635579076866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2011/06/update-on-vatsim-work.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/7880780635579076866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/7880780635579076866'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2011/06/update-on-vatsim-work.html' title='Update on VATSIM work'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-1303046248572291680</id><published>2010-07-22T14:04:00.001-07:00</published><updated>2010-07-22T14:04:37.182-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><title type='text'>Converting Bazaar Repositories to Git</title><content type='html'>I have enjoyed using Bazaar.  Its flexibility is tremendous. I've always used whatever SCM system I was using from the command-line and avoided turning on integration in the IDE since it seemed to cause more problems for very little benefit.&lt;br /&gt;&lt;br /&gt;However, after watching some of the Xcode 4.0 WWDC videos, I've realized the writing is on the wall. Xcode integration of svn and git will now provide useful benefits.  I also realize that as the third most popular DVCS, Bazaar is unlikely to ever see support in Xcode.&lt;br /&gt;&lt;br /&gt;So, with that in mind, I've decided to switch from Bazaar to Git (unless something goes horribly wrong).&lt;br /&gt;&lt;br /&gt;The positive news is that so far, the conversion has been about as painless as it could possibly be.  Certainly far more painless than the conversion from CVS to Bazaar.&lt;br /&gt;&lt;br /&gt;To convert from Bazaar to Git involved the following steps:&lt;br /&gt;&lt;br /&gt;1)  Install the Bazaar fastimport module&lt;br /&gt;&lt;br /&gt;2)  Install git&lt;br /&gt;&lt;br /&gt;3)  Create a git repository into which to convert&lt;br&gt;&lt;br /&gt;	git init git.repo - (use --bare if it's going to be on a central server)&lt;br&gt;&lt;br /&gt;	cd git.repo&lt;br&gt;&lt;br /&gt;&lt;br /&gt;4)  Run a command to export the bazaar repository, piping the result to a command to import into git&lt;br /&gt;&lt;br /&gt;In this example:&lt;br&gt;&lt;br /&gt;~/bzr_repo - the bazaar repository to convert&lt;br&gt;&lt;br /&gt;~/git.repo - the new git repository&lt;br&gt;&lt;br /&gt;&lt;br /&gt;(command is being run from the git.repo directory)&lt;br /&gt;&lt;br /&gt;bzr fast-export --export-marks=../marks.bzr ../bzr_repo/ | git fast-import --export-marks=../marks.git&lt;br /&gt;&lt;br /&gt;That's it.  You're now done.  You can now clone that repository and go to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-1303046248572291680?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/1303046248572291680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2010/07/converting-bazaar-repositories-to-git.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/1303046248572291680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/1303046248572291680'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2010/07/converting-bazaar-repositories-to-git.html' title='Converting Bazaar Repositories to Git'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-6561407216171002852</id><published>2010-07-06T07:37:00.001-07:00</published><updated>2010-07-06T07:37:36.486-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Doctors' payments</title><content type='html'>Does anyone else hate trying to pay their doctor as much as I do?&lt;br /&gt;&lt;br /&gt;First, you can never figure out how much you owe them.  Typically, a huge bill comes first.  But you know you don't owe that much, since insurance is going to cover the majority.&lt;br /&gt;&lt;br /&gt;So you wait for your next statement to see what you really owe.  But now you're past-due.  And woe be to you if you visit the doctor more than once in 30-days; you'll be lost in an impossible maze of charges and insurance reimbursements.&lt;br /&gt;&lt;br /&gt;Ok, fine.  My doctor sent me a "please pay now" notice, so I'm pretty sure this is what I actually owe.  No problem.  While I'm sitting here paying bills online, I'll just quickly go to their website and pay online.&lt;br /&gt;&lt;br /&gt;Except that they don't accept online payment.  Are you freaking kidding me?  An industry that has massive trouble collecting payments does not provide a way for patients to pay online?  Yep, that's right.  Ninety-nine percent of doctors have no way for you to pay online.&lt;br /&gt;&lt;br /&gt;I could pay with my regular online bill payment service.  However, it seems like I have about 12 different accounts associated with the doctors we see.  So it's awfully inconvenient to have 12 different payees in my payment service.&lt;br /&gt;&lt;br /&gt;Fine.  I'll call them.  Oh wait - it's 11 pm and an industry which has trouble collecting payments only has its billing office open from 9-5 on weekdays.&lt;br /&gt;&lt;br /&gt;Fine.  I wait until tomorrow.  I call the business office during their advertised hours and listen on hold for 20 minutes while the voice response system tells me my call is important.  After 20 minutes, it routes me to a voice mail box.  I leave a voice mail.  Four hours later, after receiving no call back, I call again.  20 minutes later I leave another voice mail.  Four hours later after no call back, I call again.  Twenty minutes of repeated "your call is important to us" later, the system tries to transfer me to an operator, but it hangs up instead.&lt;br /&gt;&lt;br /&gt;The business office is now closed for the day.  To make a long story a little shorter, after two more attempts the next day, I finally get through and pay my bill over the phone with a debit card.&lt;br /&gt;&lt;br /&gt;In short, absolutely unacceptable.&lt;br /&gt;&lt;br /&gt;Yes, I realize I could just write a check, get a stamp, put it in the envelope and mail it.  However, that's not the point.  The point is, I want to pay my bill NOW.  Online.  And you're not letting me do it.&lt;br /&gt;&lt;br /&gt;No wonder you have problems getting paid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-6561407216171002852?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/6561407216171002852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2010/07/doctors-payments.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/6561407216171002852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/6561407216171002852'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2010/07/doctors-payments.html' title='Doctors&amp;#39; payments'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-6582498258299125321</id><published>2010-06-25T22:16:00.001-07:00</published><updated>2010-06-25T22:16:55.952-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ATC Client'/><title type='text'>Status of the Mac client</title><content type='html'>As some of you may have guessed by my lack of posts, the Mac client has basically been stalled.  My real-world job has been absolutely crazy, summer means all sorts of kids' activities and I've picked up additional responsibilities at VATSIM.&lt;br /&gt;&lt;br /&gt;I have no intentions of abandoning the project though.  In fact, I'm considering adding some additional team members to help speed things up.  Things I'd likely farm out would be the things that can be easily compartmentalized like alias and POF file handling, flight strips, etc. &lt;br /&gt;&lt;br /&gt;I haven't made a final decision yet, but if you know Objective-C and want to help, let me know.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-6582498258299125321?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/6582498258299125321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2010/06/status-of-mac-client.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/6582498258299125321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/6582498258299125321'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2010/06/status-of-mac-client.html' title='Status of the Mac client'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-7019342945661945083</id><published>2010-02-14T20:37:00.001-08:00</published><updated>2010-02-14T20:37:03.296-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ATC Client'/><title type='text'>Some network goodness</title><content type='html'>More &amp; more pieces are coming into place in the Mac client.  This week I wrote an Objective-C wrapper around the VVL network code. Good chance by the end of next week I'll be able to login and start testing sending and receiving text messages on the network.&lt;br /&gt;&lt;br /&gt;Additionally, it won't be difficult to wrap the voice code either, so it may not be too much of a stretch to get voice working before much longer as well.  The Mac voice code all needs to be rewritten as it's still VERY old SoundManager code (yech) which frankly I'm surprised still works.  However, it does work, so I'll probably start off with just using it as is at first, so we can get something out the door without having to wait on me to rewrite the code with CoreAudio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-7019342945661945083?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/7019342945661945083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2010/02/some-network-goodness.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/7019342945661945083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/7019342945661945083'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2010/02/some-network-goodness.html' title='Some network goodness'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-2426337244322511460</id><published>2010-01-30T19:43:00.001-08:00</published><updated>2010-01-30T19:43:11.563-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ATC Client'/><title type='text'>Things are looking up</title><content type='html'>With the heavy snow (well heavy by our standards) snow in Nashville, the family hasn't been able to get out of the house, so I've had a little more time to sit and program rather than running all over creation.&lt;br /&gt;&lt;br /&gt;I've gotten a not completely insignificant portion of the interface wired up with Interface Builder and have moved on to start working on the text windows.  This part is going to be a bit challenging since I'm trying to integrate traditional Cocoa controls on top of an OpenGL view.  It can be done, but not having attempted it before, it's going to take some playing with.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-2426337244322511460?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/2426337244322511460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2010/01/things-are-looking-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/2426337244322511460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/2426337244322511460'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2010/01/things-are-looking-up.html' title='Things are looking up'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-3634263669015111383</id><published>2009-12-27T14:27:00.001-08:00</published><updated>2009-12-27T14:27:35.956-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ATC Client'/><title type='text'>Some more progress</title><content type='html'>Nothing too exciting to report, but given the extra time over the holidays, I have been making more progress than I normally can.  I've started hooking up some of the user interface items and am working on the preferences dialog.&lt;br /&gt;&lt;br /&gt;Still tons to do, but bit by bit it's starting to look like an application rather than just random code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-3634263669015111383?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/3634263669015111383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/12/some-more-progress.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/3634263669015111383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/3634263669015111383'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/12/some-more-progress.html' title='Some more progress'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-3201905313867780364</id><published>2009-10-22T15:29:00.001-07:00</published><updated>2009-10-22T15:29:46.274-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ATC Client'/><title type='text'>Time...never enough</title><content type='html'>I realize it's been a while since I've posted, so I wanted to post something.&lt;br /&gt;&lt;br /&gt;Things are going more slowly than I'd like.  There's really no technical reason; work has been killing me lately, and with two eight-year-olds around, there's an activity nearly every evening.  Most of my development time has been coming in 30-45 minute spurts, and as developer will tell you, it's difficult to work like that. You barely can get your mind focused on where you were when you left off and suddenly it's time to quit.&lt;br /&gt;&lt;br /&gt;The good news is the transition of the drawing code to Vertex Buffer Objects (VBO's) is complete.  While not necessary for performance, it allows me to avoid a rewrite should the rumored removal of Immediate Mode in OpenGL 3.0 come true.&lt;br /&gt;&lt;br /&gt;I'm currently working on figuring out how to set all the colors for all the objects.  My hope is to be able to set colors on individual line segments, rather than just a whole class of objects.  While perhaps not the most mind-blowing feature, I'm sure people would enjoy the extra level of customization.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-3201905313867780364?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/3201905313867780364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/10/timenever-enough.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/3201905313867780364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/3201905313867780364'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/10/timenever-enough.html' title='Time...never enough'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-2288585912417345506</id><published>2009-08-31T18:48:00.001-07:00</published><updated>2009-08-31T18:48:00.868-07:00</updated><title type='text'>Another Windows Beep of Death Fix</title><content type='html'>A new version of XSB is coming soon, but until then, Windows users need a new beep-of-death fix, so here it is.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dogwatchsw.com/xsb/XSquawkBox_VATSIM_VoiceFix.zip"&gt;Windows Voice Fix&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-2288585912417345506?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/2288585912417345506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/08/another-windows-beep-of-death-fix.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/2288585912417345506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/2288585912417345506'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/08/another-windows-beep-of-death-fix.html' title='Another Windows Beep of Death Fix'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-7361875368604800798</id><published>2009-08-21T07:48:00.001-07:00</published><updated>2009-08-21T07:48:33.102-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ATC Client'/><title type='text'>Latest on the ATC Client</title><content type='html'>Not much to report on the ATC client.  I've been working on a new version of XSB and meeting some deadlines for my other project (Targetware), so that's consumed the majority of my time.&lt;br /&gt;&lt;br /&gt;I did switch from using an NSOpenGLView to a GLView subclass.  This gives a lot more flexibility.  The OpenGL context can be on multiple screens, it can have Cocoa controls on top, etc.&lt;br /&gt;&lt;br /&gt;Right now I'm in the process of moving the drawing code from Immediate mode to Vertex Buffer Objects.  It's an optimization that's completely unnecessary given the trivial requirements of a radar client, but Immediate Mode is slated to go away at some point, so better to change things to use the "right" way now.&lt;br /&gt;&lt;br /&gt;I should get some more time near the end of the month to work on the client, and should have good things to report then.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-7361875368604800798?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/7361875368604800798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/08/latest-on-atc-client.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/7361875368604800798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/7361875368604800798'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/08/latest-on-atc-client.html' title='Latest on the ATC Client'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-628829221436066755</id><published>2009-07-21T12:49:00.001-07:00</published><updated>2009-07-21T12:49:32.302-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSB'/><title type='text'>Looking for a web designer</title><content type='html'>Copied from my post on x-plane.org:&lt;br /&gt;&lt;br /&gt;Ben and I are in the process of moving the XSB website to a Content Management System so that I can directly edit the VERY outdated FAQ and other documents. It also will allow me to post new releases without having to take away from Ben's X-plane development time.&lt;br /&gt;&lt;br /&gt;The problem is, Ben and I are both programmers, and are absolutely awful as web designers.&lt;br /&gt;&lt;br /&gt;So here's your chance to contribute. We're looking for someone who either has experience working with the Drupal content management system, or just has high-quality CSS skills. Additionally the person needs to have good design sense too. Just knowing how to install a web server and MySQL isn't what we're looking for. We're looking for someone who considers themselves an actual web designer and can do crazy things like match colors.&lt;br /&gt;&lt;br /&gt;This will likely be a one-time time commitment. That is, once the site is designed and up, there likely won't be anything left for the site designer to do. So it will not require a long-term time commitment. Additionally, we're only talking about a few templates/pages. This is NOT a major design project.&lt;br /&gt;&lt;br /&gt;Anyone that's interested, please email me at wade@dogwatchsw.com&lt;br /&gt;&lt;br /&gt;http://forums.x-plane.org/index.php?showtopic=39623&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-628829221436066755?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/628829221436066755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/07/looking-for-web-designer.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/628829221436066755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/628829221436066755'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/07/looking-for-web-designer.html' title='Looking for a web designer'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-7684411627305346647</id><published>2009-07-05T21:16:00.001-07:00</published><updated>2009-07-05T21:20:44.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ATC Client'/><title type='text'>Some work on the Mac ATC client</title><content type='html'>After many months of having no time to devote to the Mac radar client, I had a little bit of time over the weekend.&lt;br /&gt;&lt;br /&gt;To properly set expectations on where things stand, right now it's just loading the sector file and drawing it.  I had been having problems with zooming and panning that were bugging me, but those have been resolved.&lt;br /&gt;&lt;br /&gt;However, despite my warnings of the rudimentary state at which we're at, I can't resist a small teaser:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_59SZ8Rb-GLY/SlF3qwcpeCI/AAAAAAAAABc/sMBMG8TW5Yc/lax_mac_client.jpg?imgmax=800" alt="lax_mac_client.jpg" border="0" width="568" height="453" align="right" /&gt;&lt;br /&gt;&lt;br /&gt;That boys and girls, is KLAX from the ZLA sector file. (Only airports, runways and geo's are being drawn in this example.)  The colors no doubt need adjusting, but any ZLA controller will certainly feel at home looking at that diagram.&lt;br /&gt;&lt;br /&gt;So what's up next?&lt;br /&gt;&lt;br /&gt;Before I get too far, I need to optimize the drawing routines, so that's probably next.  Then I'll start wiring up the interface to allow the enabling / disabling of drawing of all the various sector file elements without having to change code.  After that I'll start working on the text system (chat windows and such).  Once all that is done, we'll be ready to start delving into networking and making planes move.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-7684411627305346647?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/7684411627305346647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/07/some-work-on-mac-atc-client.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/7684411627305346647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/7684411627305346647'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/07/some-work-on-mac-atc-client.html' title='Some work on the Mac ATC client'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_59SZ8Rb-GLY/SlF3qwcpeCI/AAAAAAAAABc/sMBMG8TW5Yc/s72-c/lax_mac_client.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-6275306769535539583</id><published>2009-05-28T10:16:00.001-07:00</published><updated>2009-05-28T10:16:03.162-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSB'/><title type='text'>Hope for the Linux Sound Bug</title><content type='html'>I'm traveling to visit some family next week, and when I return, I should have a spare PC in my possession.  My intent is to use that PC to install Linux and hopefully track down the Linux sound bug.&lt;br /&gt;&lt;br /&gt;I won't return with the PC until June 11th and it will probably take some time after that to find the bug, but at least there's a glimmer of hope on the horizon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-6275306769535539583?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/6275306769535539583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/05/hope-for-linux-sound-bug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/6275306769535539583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/6275306769535539583'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/05/hope-for-linux-sound-bug.html' title='Hope for the Linux Sound Bug'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-8723409217447544770</id><published>2009-05-15T14:17:00.001-07:00</published><updated>2009-05-15T14:19:46.577-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ATC Client'/><title type='text'>One known fact about the future VATSIM Mac radar client</title><content type='html'>I announced a few weeks ago on the VATSIM forums that I do have a Mac radar client for VATSIM in development.&lt;br /&gt;&lt;br /&gt;In still in the early stages and I don't know whether it will take 3 months, 6 months, a year, or two to finish.  There's always the possibility that I never finish it.  Now, before I depress you too much, I do think there's a &lt;strong&gt;very&lt;/strong&gt; good chance I will finish it and probably sooner rather than later.&lt;br /&gt;&lt;br /&gt;One thing I do know is when published, it will require OS X 10.5 or later.  I originally started the project targeting 10.4, but there's just too much nice stuff in 10.5 of which I think I'm going to be able to take advantage - if not in the first version, than in a later version.  Things like CoreData for persistent data storage (such as aircraft details), CoreAnimation for creating various layers, fast enumeration and probably garbage collection. &lt;br /&gt;&lt;br /&gt;So I want to go ahead and get the word out now, rather than later.  Let me say it again - 10.5 will be the minimum.  &lt;br /&gt;&lt;br /&gt;If you don't have 10.5, you don't have to run out and buy it right now.  In fact, I wouldn't.  I'd wait and buy 10.6 when it comes out.  &lt;br /&gt;&lt;br /&gt;But heads up now - requests to make the radar client run on 10.4 and 10.3 will fall on deaf ears.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-8723409217447544770?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/8723409217447544770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/05/one-known-fact-about-future-vatsim-mac.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/8723409217447544770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/8723409217447544770'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/05/one-known-fact-about-future-vatsim-mac.html' title='One known fact about the future VATSIM Mac radar client'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-1786923002179541633</id><published>2009-05-04T08:11:00.001-07:00</published><updated>2009-05-04T08:11:51.178-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSB'/><title type='text'>Delay in posting Linux test version</title><content type='html'>So, the promised test version has not yet appeared.  I did the required coding, but I've been completely unable to test.  With no OpenGL support in my VMWare environment, X-plane is just killing my Ubuntu VM.&lt;br /&gt;&lt;br /&gt;If you want, you can download and try:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dogwatchsw.com/xsb/xsb_vatsim_lin.zip"&gt;Linux Test Version&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However, to be very clear, I'm not at all confident it will work correctly.  If it succeeds, it will create a file called XSBLinSoundDebug.txt in your home directory.  &lt;br /&gt;&lt;br /&gt;I'm working on some angles to get some sort of real Ubuntu machine setup so I can do actual debugging.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-1786923002179541633?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/1786923002179541633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/05/delay-in-posting-linux-test-version.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/1786923002179541633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/1786923002179541633'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/05/delay-in-posting-linux-test-version.html' title='Delay in posting Linux test version'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-5328916169180034106</id><published>2009-05-02T13:05:00.001-07:00</published><updated>2009-05-03T12:46:26.588-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSB'/><title type='text'>New Windows Temporary "Beep of Death" fix</title><content type='html'>(Whoops - if you downloaded this patch already and the Connect menu was disabled, download it again - I have corrected the mistake.)&lt;br /&gt;&lt;br /&gt;The temporary patch I had out for the "Windows Beep of Death" has expired.  A new version is posted at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dogwatchsw.com/xsb/XSquawkBox_VATSIM_VoiceFix.zip"&gt;Windows Voice Fix&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The next regular release of XSB will contain this fix.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-5328916169180034106?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/5328916169180034106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/05/new-windows-temporary-of-death-fix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/5328916169180034106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/5328916169180034106'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/05/new-windows-temporary-of-death-fix.html' title='New Windows Temporary &amp;quot;Beep of Death&amp;quot; fix'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-2787995560329372817</id><published>2009-04-28T07:58:00.001-07:00</published><updated>2009-04-28T08:01:16.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSB'/><title type='text'>Linux test version by the end of the weekend</title><content type='html'>I was hoping to combine the latest XSB update with the additional Linux sound logging code.  However, it's taking longer than I wanted to get the next version out.  &lt;br /&gt;&lt;br /&gt;It's taking longer because I decided to add an additional preference window for a new setting, which allows the user to specify the width of the text window and chat bar.  This is especially handy for those using the Matrox triple-head solution, because X-plane sees that as one screen and thus would stretch the text box all the way across all three screens.&lt;br /&gt;&lt;br /&gt;The reason a simple dialog box is taking a bit of time is because it's more complex than you might think. Each coordinate of each element in the dialog box must be specified manually.  Try to place some things, compile, launch X-plane, test.  Move them a little bit, compile, launch X-plane, test.  Wash, rinse repeat.&lt;br /&gt;&lt;br /&gt;And of course the biggest time consumer is that real-life things are getting in the way, like my seven-year-old son's baseball season.&lt;br /&gt;&lt;br /&gt;However, I know Linux users are tired of waiting, so I'm going to go ahead and put up a private download by the end of the weekend for Linux users.  It will contain only additional logging code for sound - no other new features.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-2787995560329372817?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/2787995560329372817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/04/linux-test-version-by-end-of-weekend.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/2787995560329372817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/2787995560329372817'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/04/linux-test-version-by-end-of-weekend.html' title='Linux test version by the end of the weekend'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-5070308750317488253</id><published>2009-04-10T19:08:00.001-07:00</published><updated>2009-04-10T19:08:22.794-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSB'/><title type='text'>So what's up with XSB?</title><content type='html'>I'm getting ready to release an update for XSB that fixes three things:  the "Windows Beep of Death," adds some extra text window controls, and resolves the lack of automatic download of the VATSIM server list.&lt;br /&gt;&lt;br /&gt;I've had a fix available for the Windows "Beep of Death" for a while and have been handing it out privately to anyone who needs it.&lt;br /&gt;&lt;br /&gt;The VATSIM server list doesn't sound like a big deal, but it's been awfully confusing for new users to download XSB and then have no idea what to put in the server field, so a fix is long overdue.&lt;br /&gt;&lt;br /&gt;Additionally, I'm going to be handing out a private update to Linux users who wish to test it that will include additional logging code to try to find the "sound disappears after 30 minutes bug."  I know this one has really been annoying the Linux users and I hope I we can find the problem.  Linux troubleshooting is particularly difficult for me because I don't have a Linux machine on which to debug - I simply have a VM on which I can build.&lt;br /&gt;&lt;br /&gt;I have other features on "The List" which I plan to implement when I have time.  Several are big requests of many users, but they take quite a while to implement or have other logistical or legal entanglements which need to be sorted out first.&lt;br /&gt;&lt;br /&gt;	&lt;strong&gt;"The List"&lt;/strong&gt; (pretty much in the order I think things will happen)&lt;br /&gt;&lt;br /&gt;	• Setting a reasonable visibility for airports not reporting anything for visibility (currently they get zero visibility)&lt;br /&gt;&lt;br /&gt;	• Find the reason some users are getting lots of CSL loading errors&lt;br /&gt;&lt;br /&gt;	• COM2 support&lt;br /&gt;&lt;br /&gt;	• SELCAL support&lt;br /&gt;&lt;br /&gt;	• Upper-level wind&lt;br /&gt;&lt;br /&gt;	• Using the OBJ model for CSLs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This list isn't by any means comprehensive and is always subject to change.  &lt;br /&gt;&lt;br /&gt;If you want to add additional feature requests, please log in to my bug tracking database, at &lt;a href="http://dogwatchsw.com/mantis"&gt;dogwatchsw.com/mantis&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-5070308750317488253?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/5070308750317488253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/04/so-what-up-with-xsb.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/5070308750317488253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/5070308750317488253'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/04/so-what-up-with-xsb.html' title='So what&amp;#39;s up with XSB?'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4657016279337458545.post-961247649466282467</id><published>2009-04-10T15:47:00.001-07:00</published><updated>2009-04-10T15:54:58.423-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>So, what's a Dogwatch?</title><content type='html'>Dogwatch:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	1.  Nautical. either of two two-hour watches, the first from 4 to 6 p.m., the latter from 6 to 8 p.m.&lt;br /&gt;&lt;br /&gt;	2.  The complete failure of a developer to come up with a company name, thus having to revert to his Navy days for something - anything at all. (This definition obviously mine)&lt;br /&gt;&lt;br /&gt;Yep.  A while ago I was thinking about publishing some shareware, so I needed a company name for such individual projects, as opposed to the stuff I do with Mark 9 Systems, LLC (Targetware).&lt;br /&gt;&lt;br /&gt;So in a fit of desperation, I came up with Dogwatch Software.  Why?  Well, I was in the Navy, the dogwatch is a Navy watch in the evening and I do most of my work at night.  And with that massive effort and reasoning, I had a company name, and then decided not to finish the software products.&lt;br /&gt;&lt;br /&gt;I've never been tremendously happy with the name, so I'm always open to suggestions.  The best names are short and easily remembered.  Bungie, Panic, Blizzard, Pangea, etc.  But I haven't come up with any of those and I'm now several years into Dogwatch, so I'll stick with it until I think up something better.&lt;br /&gt;&lt;br /&gt;So there you go, the very unremarkable history of the name.  &lt;br /&gt;&lt;br /&gt;The purpose for the blog is to catalog my independent projects, which at this point, primarily consists of XSquawkBox (http://www.xsquawkbox.net), the VATSIM client (http://vatsim.net) for X-plane.&lt;br /&gt;&lt;br /&gt;Often I'll talk about the motivations for working on one feature versus another, particular difficulties I'm facing, or just other random facts and trivia.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4657016279337458545-961247649466282467?l=dogwatchsw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dogwatchsw.blogspot.com/feeds/961247649466282467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dogwatchsw.blogspot.com/2009/04/so-what-dogwatch.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/961247649466282467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4657016279337458545/posts/default/961247649466282467'/><link rel='alternate' type='text/html' href='http://dogwatchsw.blogspot.com/2009/04/so-what-dogwatch.html' title='So, what&amp;#39;s a Dogwatch?'/><author><name>Wade Williams</name><uri>http://www.blogger.com/profile/04370577153221019073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
