<?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-35653547</id><updated>2012-01-27T13:18:35.085Z</updated><category term='android tether eclipse proxoid'/><category term='kids games'/><category term='virtualbox'/><category term='android'/><category term='adt'/><category term='rocketry FTH'/><category term='uMMC Arduino FTH'/><category term='m2e-android'/><category term='android tether proxoid'/><category term='eclipse'/><category term='ipad iphone html5 touchmove touchstart'/><category term='ubuntu'/><category term='html5 iphone webos'/><category term='arduino protoduino fth'/><category term='heroku nodejs'/><category term='usernames unicode symbol-based-domain'/><title type='text'>Pure Geek Joy</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default?start-index=101&amp;max-results=100'/><author><name>MichaelS.</name><uri>http://www.blogger.com/profile/08041412351177004535</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>146</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35653547.post-4112361996449533297</id><published>2011-12-24T08:35:00.004Z</published><updated>2011-12-24T08:55:40.200Z</updated><title type='text'>jslint config in sublime-jslint</title><content type='html'>I'm new to &lt;a href="http://www.sublimetext.com/"&gt;Sublime Text&lt;/a&gt; but I'm quickly becoming a fan.  Based on Kelly's recommendation, I installed &lt;a href="http://www.sublimetext.com/blog/articles/sublime-text-2-beta"&gt;Sublime Text 2&lt;/a&gt; and &lt;a href="http://wbond.net/sublime_packages/package_control"&gt;Sublime Package Control&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After doing some basic editing I decided to go get a &lt;a href="http://www.jslint.com/"&gt;&lt;em&gt;jslint&lt;/em&gt;&lt;/a&gt; package.  I installed &lt;a href="https://github.com/fbzhong/sublime-jslint"&gt;sublime-jslint&lt;/a&gt; and ran it.  Easy peasy but I got warnings because I like 2 space indents instead of 4 in my code and some node-specific stuff.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;jslint:mystuff.js:5:12:'require' was used before it was defined.&lt;br /&gt;jslint:mystuff.js:6:3:Expected 'winston' at column 5, not column 3.&lt;br /&gt;jslint:mystuff.js:7:3:Expected 'service' at column 5, not column 3.&lt;br /&gt;jslint:mystuff.js:9:1:'exports' was used before it was defined.&lt;br /&gt;jslint:mystuff.js:10:3:Expected 'use strict' at column 5, not column 3.&lt;br /&gt;jslint:mystuff.js:11:3:Expected 'var' at column 5, not column 3.&lt;br /&gt;jslint:mystuff.js:12:5:Expected 'server' at column 9, not column 5.&lt;br /&gt;jslint:mystuff.js:13:7:Expected 'winston' at column 13, not column 7.&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I changed my user settings in the jslint package to add configuration options.  The documentation from sublime-jslint had the info on how to configure it but it wasn't totally clear so took me a couple tries to get it right.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-pXnXOQyRWik/TvWS9rhWdCI/AAAAAAAAAUk/5ZNK7E_6NPY/s1600/Settings%2B-%2BUser%2Bsublime-jslint.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 137px;" src="http://4.bp.blogspot.com/-pXnXOQyRWik/TvWS9rhWdCI/AAAAAAAAAUk/5ZNK7E_6NPY/s320/Settings%2B-%2BUser%2Bsublime-jslint.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5689615292604773410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here are the entire contents of my sublime-jslint.sublime-settings file:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt;    // https://github.com/fbzhong/sublime-jslint/wiki/Available-jslint4java-options&lt;br /&gt;    "jslint_options": "--indent 2 --node"&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now when I use jslint (by clicking ctrl-j) I get nice results.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;mystuff.js lint free!&lt;br /&gt;jslint: ignored 0 errors.&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4112361996449533297?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4112361996449533297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4112361996449533297&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4112361996449533297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4112361996449533297'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2011/12/jslint-config-in-sublime-jslint.html' title='jslint config in sublime-jslint'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://4.bp.blogspot.com/-pXnXOQyRWik/TvWS9rhWdCI/AAAAAAAAAUk/5ZNK7E_6NPY/s72-c/Settings%2B-%2BUser%2Bsublime-jslint.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-1918888194925683825</id><published>2011-12-09T08:16:00.006Z</published><updated>2011-12-09T08:30:50.713Z</updated><title type='text'>Remap fn on MacBook Pro in VirtualBox</title><content type='html'>I use LinuxMint 12 in VirtualBox on my MBP for non-work projects.  I think that OS X is an excellent environment for software development but I am also mighty pleased with LinuxMint.  I use a VM for non-work projects just to make sure that everything stays very separate.  I decided today that I'll never get used to where the Control key is so I went looking for a way to swap the fn and Control keys.  I saw a couple separate sites reviewing &lt;a href="http://pqrs.org/macosx/keyremap4macbook/"&gt;KeyRemap4MacBook&lt;/a&gt; so I decided to try it even though most forums said that you can't remap the fn key.&lt;br /&gt;&lt;br /&gt;I use Lion so I downloaded version 7.5.0 for Lion.  The zip file drops a pkg.  I installed that and got a System Preference added to my system.  (I did have to reboot.)  The new preference is KeyRemap4MacBook: at the center of the bottom row.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-0bqPmFHgi-8/TuHFcHjHhyI/AAAAAAAAATk/TIZ-yibO03Y/s1600/KeyRemap4MacBook.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 276px;" src="http://3.bp.blogspot.com/-0bqPmFHgi-8/TuHFcHjHhyI/AAAAAAAAATk/TIZ-yibO03Y/s320/KeyRemap4MacBook.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5684041291571627810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I opened the widget and was immediately dazzled!  &lt;em&gt;Fn to Control_L (only in virtual machine, RDC)&lt;/em&gt;  I enabled that, fired up VirtualBox (I'm using v4.1.6), and booted my VM.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-aChHD-cRUzg/TuHHKExABSI/AAAAAAAAAUU/7RQ50xXChig/s1600/remap%2Bin%2Bvirtualbox.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 314px;" src="http://4.bp.blogspot.com/-aChHD-cRUzg/TuHHKExABSI/AAAAAAAAAUU/7RQ50xXChig/s320/remap%2Bin%2Bvirtualbox.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5684043180610159906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I could hardly wait to try it...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-4X9SaaxwGQ4/TuHG-xduK2I/AAAAAAAAAUI/-epIm0C-Fu4/s1600/fn-Control%2BC.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/-4X9SaaxwGQ4/TuHG-xduK2I/AAAAAAAAAUI/-epIm0C-Fu4/s320/fn-Control%2BC.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5684042986450463586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Woohoo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1918888194925683825?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1918888194925683825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1918888194925683825&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1918888194925683825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1918888194925683825'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2011/12/remap-fn-on-macbook-pro-in-virtualbox.html' title='Remap fn on MacBook Pro in VirtualBox'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://3.bp.blogspot.com/-0bqPmFHgi-8/TuHFcHjHhyI/AAAAAAAAATk/TIZ-yibO03Y/s72-c/KeyRemap4MacBook.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-6227473309944005562</id><published>2011-11-20T20:46:00.005Z</published><updated>2011-11-20T22:43:58.428Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='heroku nodejs'/><title type='text'>moving simple node app into heroku</title><content type='html'>I went thru the &lt;a href="http://devcenter.heroku.com/articles/clojure"&gt;Getting Started With Clojure on Heroku/Cedar&lt;/a&gt; last night.  Great instructions and I love the model but I wanted to play more.  I don't have any fragments of real Clojure projects available that I can send to Heroku so I tried sending a nodejs project today.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Getting Started Article&lt;/h2&gt;&lt;br /&gt;There is a great article in the Heroku devcenter: &lt;a href="http://devcenter.heroku.com/articles/node-js"&gt;Getting Started With Node.js on Heroku/Cedar&lt;/a&gt;.  Smooth and easy to follow.  There are a couple minor variations that I made from it: I named my app and I switched from the &lt;em&gt;express&lt;/em&gt; module to the &lt;em&gt;http&lt;/em&gt;.  If you don't specify an app name, then a fun one is chosen for you but I wanted to see if I could set a name and that did work.  As for express vs http - I have no real preference - I am just more familiar with http.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Creating a Named App&lt;/h2&gt;&lt;br /&gt;In the tutorial, they have you use &lt;em&gt;$ heroku create --stack cedar&lt;/em&gt; to create the app.  If you just put a name at the end of the line then you'll get a name you choose rather than something like &lt;em&gt;starfish-mergatroid&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ heroku create --stack cedar estimacci-server&lt;br /&gt;Creating estimacci-server... done, stack is cedar&lt;br /&gt;http://estimacci-server.herokuapp.com/ | git@heroku.com:estimacci-server.git&lt;br /&gt;Git remote heroku added&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Using http Module&lt;/h2&gt;&lt;br /&gt;The &lt;em&gt;express&lt;/em&gt; module looks fine and that probably could have worked for me.  I just wanted to use &lt;em&gt;http&lt;/em&gt; because that's what my code already had.  Here's the main clip showing how I have http where the tutorial used express.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;var staticFiles = new (static.Server)("static");&lt;br /&gt;server = http.createServer(function(request, response) {&lt;br /&gt; request.addListener('end', function() {&lt;br /&gt;  staticFiles.serve(request, response);&lt;br /&gt; });&lt;br /&gt;});&lt;br /&gt;var port = process.env.PORT || 3000;&lt;br /&gt;server.listen(port);&lt;br /&gt;console.log("Static Content Server Started");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When I start using &lt;em&gt;foreman&lt;/em&gt; it still starts on port 5000 like &lt;em&gt;express&lt;/em&gt; does.  The only difference that I can see is that the &lt;em&gt;package.json&lt;/em&gt; needs the correct dependency info and the functions for &lt;em&gt;express&lt;/em&gt; vs &lt;em&gt;http&lt;/em&gt; are different.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ foreman start&lt;br /&gt;15:41:55 web.1     | started with pid 50671&lt;br /&gt;15:41:55 web.1     | Config loaded: &lt;br /&gt;15:41:55 web.1     | smtp_host: smtp.gmail.com&lt;br /&gt;15:41:55 web.1     | smtp_port: 587&lt;br /&gt;15:41:55 web.1     | smtp_ssl: true&lt;br /&gt;15:41:55 web.1     | smtp_use_auth: true&lt;br /&gt;15:41:55 web.1     | smtp_username: TODO&lt;br /&gt;15:41:55 web.1     | smtp_password: TODO&lt;br /&gt;15:41:55 web.1     | Static Content Server Started&lt;br /&gt;15:41:55 web.1     | 20 Nov 15:41:55 - Your node instance does not have root privileges. This means that the flash XML policy file will be served inline instead of on port 843. This will slow down initial connections slightly. NOTE: this fails with Firefox 4 betas.&lt;br /&gt;15:41:55 web.1     | 20 Nov 15:41:55 - socket.io ready - accepting connections&lt;br /&gt;15:41:55 web.1     | Stream Server Started&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Going to Node v0.4.7&lt;/h2&gt;&lt;br /&gt;Heroku specifically requires v0.4.7 of Node so I changed my local environment to that version.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ wget http://nodejs.org/dist/node-v0.4.7.tar.gz&lt;br /&gt;$ tar xzf node-v0.4.7.tar.gz &lt;br /&gt;$ cd node-v0.4.7&lt;br /&gt;$ ./configure &lt;br /&gt;$ sudo make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Looking at Module Versions&lt;/h2&gt;&lt;br /&gt;You have to create a &lt;em&gt;package.json&lt;/em&gt; file so that Heroku knows that this is a Node app.  I didn't know what versions to specify in the dependencies list so I ended up doing &lt;em&gt;npm list&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;$ npm list&lt;br /&gt;npm info it worked if it ends with ok&lt;br /&gt;npm info using npm@0.2.17&lt;br /&gt;npm info using node@v0.4.7&lt;br /&gt;connect@1.8.0       active installed   &lt;br /&gt;express@2.2.0       active installed   &lt;br /&gt;express@2.5.1       installed   &lt;br /&gt;eyes@0.1.6          active installed   &lt;br /&gt;formidable@1.0.7    active installed   &lt;br /&gt;mime@1.2.4          active installed   &lt;br /&gt;mkdirp@0.0.7        active installed   &lt;br /&gt;node-static@0.5.3   installed   &lt;br /&gt;node-static@0.5.9   active installed   &lt;br /&gt;nodemailer@0.1.2    active installed   &lt;br /&gt;npm@0.2.17          active installed   &lt;br /&gt;postmark@0.0.4      active installed   &lt;br /&gt;qs@0.3.2            active installed   &lt;br /&gt;request@0.10.0      active installed   &lt;br /&gt;socket.io@0.6.8     active installed   &lt;br /&gt;vows@0.5.13         active installed&lt;br /&gt;npm ok&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notice that there are 2 versions of &lt;em&gt;node-static&lt;/em&gt;.  I had been using v0.5.3 and I put that version into the &lt;em&gt;package.json&lt;/em&gt; file but I got a failure during deployment.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ git push heroku master&lt;br /&gt;Counting objects: 25, done.&lt;br /&gt;Delta compression using up to 2 threads.&lt;br /&gt;Compressing objects: 100% (23/23), done.&lt;br /&gt;Writing objects: 100% (25/25), 56.55 KiB, done.&lt;br /&gt;Total 25 (delta 2), reused 0 (delta 0)&lt;br /&gt;&lt;br /&gt;-----&gt; Heroku receiving push&lt;br /&gt;-----&gt; Node.js app detected&lt;br /&gt;-----&gt; Fetching Node.js binaries&lt;br /&gt;-----&gt; Vendoring node 0.4.7&lt;br /&gt;-----&gt; Installing dependencies with npm 1.0.94&lt;br /&gt;       npm ERR! Error: version not found: 0.5.3 : node-static/0.5.3&lt;br /&gt;       npm ERR!     at Request.callback (/tmp/node-npm-y4nm/lib/utils/npm-registry-client/request.js:181:12)&lt;br /&gt;       npm ERR!     at Request.&lt;anonymous&gt; (/tmp/node-npm-y4nm/node_modules/request/main.js:337:18)&lt;br /&gt;       npm ERR!     at Request.emit (events.js:64:17)&lt;br /&gt;       npm ERR!     at IncomingMessage.&lt;anonymous&gt; (/tmp/node-npm-y4nm/node_modules/request/main.js:305:16)&lt;br /&gt;       npm ERR!     at IncomingMessage.emit (events.js:81:20)&lt;br /&gt;       npm ERR!     at HTTPParser.onMessageComplete (http.js:133:23)&lt;br /&gt;       npm ERR!     at Socket.ondata (http.js:1213:22)&lt;br /&gt;       npm ERR!     at Socket._onReadable (net.js:681:27)&lt;br /&gt;       npm ERR!     at IOWatcher.onReadable [as callback] (net.js:177:10)&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To resolve that I just updated to a newer version of &lt;em&gt;node-static&lt;/em&gt;, updated my &lt;em&gt;package.json&lt;/em&gt; file, and then re-deployed.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cat package.json &lt;br /&gt;{&lt;br /&gt;  "name": "estimacci-server",&lt;br /&gt;  "version": "0.0.1",&lt;br /&gt;  "dependencies": {&lt;br /&gt;    "socket.io": "0.6.8",&lt;br /&gt;    "node-static": "0.5.9",&lt;br /&gt;    "nodemailer": "0.1.2"&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Still Have Console&lt;/h2&gt;&lt;br /&gt;One of the many cool things about Heroku is that I still have console access.  Note that I can see the config settings that were loaded.&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;clip from server.js that loads config and uses console&lt;/h5&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;var config;&lt;br /&gt;try {&lt;br /&gt; config = JSON.parse(fs.readFileSync('config.json'));&lt;br /&gt; console.log("Config loaded: ");&lt;br /&gt; for ( var i in config) {&lt;br /&gt;  console.log(i + ": " + config[i]);&lt;br /&gt; }&lt;br /&gt;} catch (e) {&lt;br /&gt; console.log("Failed to load configuration file.", e);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;viewing log / console&lt;/h5&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;$ heroku logs&lt;br /&gt;2011-11-20T20:30:47+00:00 heroku[api]: Add-on add logging:basic by jeremiah_p_johnson@hotmail.com&lt;br /&gt;2011-11-20T20:30:47+00:00 heroku[api]: Release v2 created by jeremiah_p_johnson@hotmail.com&lt;br /&gt;2011-11-20T20:31:04+00:00 heroku[slugc]: Slug compilation started&lt;br /&gt;2011-11-20T20:31:05+00:00 heroku[slugc]: Slug compilation failed: failed to compile Node.js app&lt;br /&gt;2011-11-20T20:32:59+00:00 heroku[slugc]: Slug compilation started&lt;br /&gt;2011-11-20T20:33:11+00:00 heroku[api]: Config add PATH by jeremiah_p_johnson@hotmail.com&lt;br /&gt;2011-11-20T20:33:11+00:00 heroku[api]: Release v3 created by jeremiah_p_johnson@hotmail.com&lt;br /&gt;2011-11-20T20:33:11+00:00 heroku[api]: Deploy 25dca6c by jeremiah_p_johnson@hotmail.com&lt;br /&gt;2011-11-20T20:33:12+00:00 heroku[api]: Release v4 created by jeremiah_p_johnson@hotmail.com&lt;br /&gt;2011-11-20T20:33:12+00:00 heroku[web.1]: State changed from created to starting&lt;br /&gt;2011-11-20T20:33:12+00:00 heroku[slugc]: Slug compilation finished&lt;br /&gt;2011-11-20T20:33:16+00:00 app[web.1]: Config loaded: &lt;br /&gt;2011-11-20T20:33:16+00:00 app[web.1]: smtp_host: smtp.gmail.com&lt;br /&gt;2011-11-20T20:33:16+00:00 app[web.1]: smtp_port: 587&lt;br /&gt;2011-11-20T20:33:16+00:00 app[web.1]: smtp_ssl: true&lt;br /&gt;2011-11-20T20:33:16+00:00 app[web.1]: smtp_use_auth: true&lt;br /&gt;2011-11-20T20:33:16+00:00 app[web.1]: smtp_username: TODO&lt;br /&gt;2011-11-20T20:33:16+00:00 app[web.1]: smtp_password: TODO&lt;br /&gt;2011-11-20T20:33:16+00:00 app[web.1]: Static Content Server Started&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-6227473309944005562?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/6227473309944005562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=6227473309944005562&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6227473309944005562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6227473309944005562'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2011/11/moving-simple-node-app-into-heroku.html' title='moving simple node app into heroku'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-5306345383027228741</id><published>2011-06-20T10:49:00.005Z</published><updated>2011-06-20T11:04:52.311Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='m2e-android'/><title type='text'>optimistic about maven android integration</title><content type='html'>I've been using the &lt;a href="http://code.google.com/p/maven-android-plugin/"&gt;maven-android-plugin&lt;/a&gt; recently.  Here's a little video showing building, deploy, and undeploy of an simple application to my phone.  I particularly love the &lt;code&gt;android:deploy&lt;/code&gt; and &lt;code&gt;android:undeploy&lt;/code&gt; goals.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YWyCTdGTYWo?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/YWyCTdGTYWo?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;To get the full benefit of these features in Eclipse we need &lt;code&gt;m2e&lt;/code&gt; integration.  Luckily, the &lt;a href="http://code.google.com/a/eclipselabs.org/p/m2eclipse-android-integration/"&gt;m2e-android&lt;/a&gt; project is making good progress.&lt;br /&gt;&lt;br /&gt;Good stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-5306345383027228741?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/5306345383027228741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=5306345383027228741&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5306345383027228741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5306345383027228741'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2011/06/optimistic-about-maven-android.html' title='optimistic about maven android integration'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-7049484017535294580</id><published>2011-06-14T14:50:00.003Z</published><updated>2011-06-14T15:13:13.924Z</updated><title type='text'>windows dexdump failure</title><content type='html'>This is frustrating because it should be such a trivial thing.  I don't know what the fix is.  I was hopeful that the binary attached to Android &lt;a href="http://code.google.com/p/android/issues/detail?id=14746"&gt;Issue 14746&lt;/a&gt; would fix me up but that didn't work out.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;simple dx / dexdump on Mac&lt;/h3&gt;&lt;br /&gt;In Windows, I was getting a silly-stupid message from dx and then an error from dexdump so I wanted to try a dx / dexdump on Mac for a comparison.  I picked a random JAR file.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[jjohnson@jjohnson 20110613]$ cp ~/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar .&lt;br /&gt;[jjohnson@jjohnson 20110613]$ dx --dex --output=test.apk commons-lang-2.4.jar&lt;br /&gt;[jjohnson@jjohnson 20110613]$ dexdump -d -l xml test.apk&lt;br /&gt;&lt;br /&gt;&amp;lt;api&gt;&lt;br /&gt;&amp;lt;package name="org.apache.commons.lang"&lt;br /&gt;&gt;&lt;br /&gt;&amp;lt;class name="ArrayUtils"&lt;br /&gt; extends="java.lang.Object"&lt;br /&gt; abstract="false"&lt;br /&gt; static="false"&lt;br /&gt; final="false"&lt;br /&gt; visibility="public"&lt;br /&gt;&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Good enough.  Easy peasy.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;simple made difficult&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;C:\Documents and Settings\Jeremiah Johnson\20110613&gt;copy ..\.m2\repository\commons-lang\commons-lang\2.4\commons-lang-2.4.jar .&lt;br /&gt;C:\Documents and Settings\Jeremiah Johnson\20110613&gt;dx --dex --output=test.apk commons-lang-2.4.jar&lt;br /&gt;&lt;br /&gt;UNEXPECTED TOP-LEVEL EXCEPTION:&lt;br /&gt;java.io.FileNotFoundException: commons-lang-2.4.jar (The system cannot find the file specified)&lt;br /&gt;        at java.util.zip.ZipFile.open(Native Method)&lt;br /&gt;        at java.util.zip.ZipFile.&lt;init&gt;(ZipFile.java:127)&lt;br /&gt;        at java.util.zip.ZipFile.&lt;init&gt;(ZipFile.java:144)&lt;br /&gt;        at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:205)&lt;br /&gt;        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)&lt;br /&gt;        at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)&lt;br /&gt;        at com.android.dx.command.dexer.Main.processOne(Main.java:313)&lt;br /&gt;        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:233)&lt;br /&gt;        at com.android.dx.command.dexer.Main.run(Main.java:185)&lt;br /&gt;        at com.android.dx.command.dexer.Main.main(Main.java:166)&lt;br /&gt;        at com.android.dx.command.Main.main(Main.java:90)&lt;br /&gt;1 error; aborting&lt;br /&gt;&lt;br /&gt;C:\Documents and Settings\Jeremiah Johnson\20110613&gt;dx --dex --output="C:\Documents and Settings\Jeremiah Johnson\20110613\test.apk" "C:\Documents and Settings\Jeremiah Johnson\20110613\commons-lang-2.4.jar"&lt;br /&gt;and was unexpected at this time.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;and was unexpected at this time.&lt;/h3&gt;&lt;br /&gt;That's for real - did you see that in the previous output?  That's the whole error message.  Neat.  So you can't use relative paths and you can't use an absolute path with a space?  Perhaps Windows users already know what to really do but I'm just trying to be a good citizen and test a defect fix on Windows without tons of recent Windows experience.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;final dexdump failure on windows&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;C:\Documents and Settings\Jeremiah Johnson\20110613&gt;cd ..&lt;br /&gt;C:\Documents and Settings\Jeremiah Johnson&gt;move 20110613 C:\&lt;br /&gt;C:\Documents and Settings\Jeremiah Johnson&gt;cd C:\20110613&lt;br /&gt;C:\20110613&gt;dx --dex --output=C:\20110613\test.apk C:\20110613\commons-lang-2.4.&lt;br /&gt;jar&lt;br /&gt;C:\20110613&gt;dexdump -d -l xml test.apk&lt;br /&gt;E/dalvikvm( 3152): sysMapFileSegmentInShmem not implemented.&lt;br /&gt;W/dalvikvm( 3152): Zip: cd map failed&lt;br /&gt;Unable to open 'test.apk' as zip archive&lt;br /&gt;Not Zip, retrying as DEX&lt;br /&gt;E/dalvikvm( 3152): ERROR: Bad magic number (0x50 4b 03 04)&lt;br /&gt;ERROR: Failed structural verification of 'test.apk'&lt;br /&gt;&lt;br /&gt;C:\20110613&gt;dexdump -d -l xml C:\20110613\test.apk&lt;br /&gt;E/dalvikvm( 1740): sysMapFileSegmentInShmem not implemented.&lt;br /&gt;W/dalvikvm( 1740): Zip: cd map failed&lt;br /&gt;Unable to open 'C:\20110613\test.apk' as zip archive&lt;br /&gt;Not Zip, retrying as DEX&lt;br /&gt;E/dalvikvm( 1740): ERROR: Bad magic number (0x50 4b 03 04)&lt;br /&gt;ERROR: Failed structural verification of 'C:\20110613\test.apk'&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7049484017535294580?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7049484017535294580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7049484017535294580&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7049484017535294580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7049484017535294580'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2011/06/windows-dexdump-failure.html' title='windows dexdump failure'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-7157590162042928528</id><published>2011-06-05T12:06:00.005Z</published><updated>2011-06-05T16:37:36.548Z</updated><title type='text'>jsp pre-compile and proper servlet classloading</title><content type='html'>Following my previous post, I configured JSP pre-compiling and adjusted my simple WebAppContext a bit to get the servlet classloader working properly.  Without fixing the classloader, I couldn't actually use the pre-compiled JSPs.  After getting the classloading worked out, I switched from WebAppContext to WebAppProvider: 1) WebAppProvider allows polling for redeploy of the WAR and 2) the WebAppContext is deprecated so I felt like I should use non-deprecated APIs in this new code.&lt;br /&gt;&lt;br /&gt;The i-Jetty project is a pretty interesting project but goes a different route than what I'm doing.  I followed some of the ideas there but simplified for what I need.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;added configuration to WebAppContext&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        // start the Web server for config and maintenance&lt;br /&gt;        webServer = new Server(8080);&lt;br /&gt;        try {&lt;br /&gt;            WebAppContext webapp = new WebAppContext();&lt;br /&gt;            webapp.setConfigurationClasses(new String[] { DexWebInfConfiguration.class.getName(),&lt;br /&gt;                    JettyWebXmlConfiguration.class.getName(), WebXmlConfiguration.class.getName() });&lt;br /&gt;            webapp.setContextPath("/");&lt;br /&gt;            webapp.setTempDirectory(new File("/sdcard/TGP-work/"));&lt;br /&gt;            webapp.setWar("/sdcard/TGP-webapps/TGP-ROOT.war");&lt;br /&gt;            webServer.setHandler(webapp);&lt;br /&gt;        }&lt;br /&gt;        catch (Exception e) {&lt;br /&gt;            Log.d(LOG_TAG, "unexpected exception setting temp: " + e);&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;DexWebInfConfiguration.java&lt;/h4&gt;&lt;br /&gt;When I started this class, I thought that there would be more to it so it is a regular class.  I'll probably make it an inner class if it doesn't get any more complex that this.  Right now, this is all that is needed to use the dex version of the servlets in my WAR.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt; * Adds dex support to the classloader used in the Jetty WebInfConfiguration.&lt;br /&gt; * &lt;br /&gt; * &amp;lt;code&gt;webapp.setConfigurationClasses(new String[] { DexWebInfConfiguration.class.getName() });&amp;lt;/code&gt;&lt;br /&gt; */&lt;br /&gt;public class DexWebInfConfiguration extends WebInfConfiguration {&lt;br /&gt;    public void preConfigure(WebAppContext context) throws Exception {&lt;br /&gt;        context.setClassLoader(new DexClassLoader(context.getTempDirectory().getCanonicalPath()&lt;br /&gt;                + "/webapp/WEB-INF/lib/classes.zip", context.getTempDirectory().getCanonicalPath(), null, getClass()&lt;br /&gt;                .getClassLoader()));&lt;br /&gt;        super.preConfigure(context);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;the WAR file&lt;/h4&gt;&lt;br /&gt;I'm using a simple Maven project within Eclipse for my WAR file.  I'm using the standard structure and added the following to the POM.  The first chunk pre-compiles the JSPs and then the second chunk runs &lt;code&gt;dex&lt;/code&gt; on all of the compiled code in the WAR (i.e. the JSPs as well as the regular servlets).&lt;br /&gt;&lt;br /&gt;The first chunk was pretty must straight out of the &lt;code&gt;jetty-jspc-maven-plugin&lt;/code&gt; docs and the second from i-Jetty.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   &amp;lt;plugin&gt;&lt;br /&gt;    &amp;lt;groupId&gt;org.mortbay.jetty&amp;lt;/groupId&gt;&lt;br /&gt;    &amp;lt;artifactId&gt;jetty-jspc-maven-plugin&amp;lt;/artifactId&gt;&lt;br /&gt;    &amp;lt;version&gt;7.3.0.v20110203&amp;lt;/version&gt;&lt;br /&gt;    &amp;lt;executions&gt;&lt;br /&gt;     &amp;lt;execution&gt;&lt;br /&gt;      &amp;lt;id&gt;jspc&amp;lt;/id&gt;&lt;br /&gt;      &amp;lt;goals&gt;&lt;br /&gt;       &amp;lt;goal&gt;jspc&amp;lt;/goal&gt;&lt;br /&gt;      &amp;lt;/goals&gt;&lt;br /&gt;      &amp;lt;configuration&gt;&lt;br /&gt;      &amp;lt;/configuration&gt;&lt;br /&gt;     &amp;lt;/execution&gt;&lt;br /&gt;    &amp;lt;/executions&gt;&lt;br /&gt;   &amp;lt;/plugin&gt;&lt;br /&gt;   &amp;lt;plugin&gt;&lt;br /&gt;    &amp;lt;artifactId&gt;maven-war-plugin&amp;lt;/artifactId&gt;&lt;br /&gt;    &amp;lt;configuration&gt;&lt;br /&gt;     &amp;lt;!-- use web.xml from jspc rather than src version --&gt;&lt;br /&gt;     &amp;lt;webXml&gt;${project.build.directory}/web.xml&amp;lt;/webXml&gt;&lt;br /&gt;    &amp;lt;/configuration&gt;&lt;br /&gt;   &amp;lt;/plugin&gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;plugin&gt;&lt;br /&gt;        &amp;lt;groupId&gt;org.codehaus.mojo&amp;lt;/groupId&gt;&lt;br /&gt;        &amp;lt;artifactId&gt;exec-maven-plugin&amp;lt;/artifactId&gt;&lt;br /&gt;        &amp;lt;version&gt;1.1&amp;lt;/version&gt;&lt;br /&gt;        &amp;lt;executions&gt;&lt;br /&gt;          &amp;lt;execution&gt;&lt;br /&gt;            &amp;lt;id&gt;generate-dex&amp;lt;/id&gt;&lt;br /&gt;            &amp;lt;phase&gt;process-classes&amp;lt;/phase&gt;&lt;br /&gt;            &amp;lt;goals&gt;&lt;br /&gt;              &amp;lt;goal&gt;exec&amp;lt;/goal&gt;&lt;br /&gt;            &amp;lt;/goals&gt;&lt;br /&gt;            &amp;lt;configuration&gt;&lt;br /&gt;              &amp;lt;executable&gt;${android.home}/platform-tools/dx&amp;lt;/executable&gt;&lt;br /&gt;              &amp;lt;arguments&gt;&lt;br /&gt;                &amp;lt;argument&gt;--dex&amp;lt;/argument&gt;&lt;br /&gt;                &amp;lt;argument&gt;--verbose&amp;lt;/argument&gt;&lt;br /&gt;                &amp;lt;argument&gt;--core-library&amp;lt;/argument&gt;&lt;br /&gt;                &amp;lt;argument&gt;--output=${project.build.directory}/classes.dex&amp;lt;/argument&gt;&lt;br /&gt;                &amp;lt;argument&gt;--positions=lines&amp;lt;/argument&gt;&lt;br /&gt;                &amp;lt;argument&gt;${project.build.directory}/classes/&amp;lt;/argument&gt;&lt;br /&gt;              &amp;lt;/arguments&gt;&lt;br /&gt;            &amp;lt;/configuration&gt;&lt;br /&gt;          &amp;lt;/execution&gt;&lt;br /&gt;        &amp;lt;/executions&gt;&lt;br /&gt;      &amp;lt;/plugin&gt;&lt;br /&gt;      &amp;lt;plugin&gt;&lt;br /&gt;        &amp;lt;artifactId&gt;maven-antrun-plugin&amp;lt;/artifactId&gt;&lt;br /&gt;        &amp;lt;executions&gt;&lt;br /&gt;          &amp;lt;execution&gt;&lt;br /&gt;            &amp;lt;id&gt;copydex&amp;lt;/id&gt;&lt;br /&gt;            &amp;lt;phase&gt;process-classes&amp;lt;/phase&gt;&lt;br /&gt;            &amp;lt;goals&gt;&lt;br /&gt;              &amp;lt;goal&gt;run&amp;lt;/goal&gt;&lt;br /&gt;            &amp;lt;/goals&gt;&lt;br /&gt;            &amp;lt;configuration&gt;&lt;br /&gt;              &amp;lt;tasks&gt;&lt;br /&gt;                &amp;lt;mkdir&lt;br /&gt;                  dir="${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/lib" /&gt;&lt;br /&gt;                &amp;lt;jar basedir="${project.build.directory}" update="true"&lt;br /&gt;                  includes="classes.dex"&lt;br /&gt;                  destfile="${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/lib/classes.zip" /&gt;&lt;br /&gt;              &amp;lt;/tasks&gt;&lt;br /&gt;            &amp;lt;/configuration&gt;&lt;br /&gt;          &amp;lt;/execution&gt;&lt;br /&gt;        &amp;lt;/executions&gt;&lt;br /&gt;      &amp;lt;/plugin&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;switch to WebAppProvider&lt;/h4&gt;&lt;br /&gt;I thought that I'd just need to change the WebAppContext stuff but I ended up also having to adjust the configuration as well.  Temp directories are handled differently in the provider stuff and I don't totally understand it.  Here's where I'm at with the code that sets up the server and then the configuration.&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;MyApp.class onCreate&lt;/h5&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        // start the Web server for config and maintenance&lt;br /&gt;        webServer = new Server(8080);&lt;br /&gt;        try {&lt;br /&gt;            HandlerCollection handlers = new HandlerCollection();&lt;br /&gt;            ContextHandlerCollection contexts = new ContextHandlerCollection();&lt;br /&gt;            handlers.setHandlers(new Handler[] { contexts, new DefaultHandler() });&lt;br /&gt;            webServer.setHandler(handlers);&lt;br /&gt;            &lt;br /&gt;            DeploymentManager deployer = new DeploymentManager();&lt;br /&gt;            deployer.setContexts(contexts);&lt;br /&gt;            webServer.addBean(deployer);&lt;br /&gt;&lt;br /&gt;            WebAppProvider webAppProvider = new WebAppProvider();&lt;br /&gt;            webAppProvider.setConfigurationClasses(new String[] { DexWebInfConfiguration.class.getName(),&lt;br /&gt;                    JettyWebXmlConfiguration.class.getName(), WebXmlConfiguration.class.getName() });&lt;br /&gt;            webAppProvider.setExtractWars(true);&lt;br /&gt;            webAppProvider.setScanInterval(10);&lt;br /&gt;            webAppProvider.setMonitoredDirName("/sdcard/jetty/webapps/");&lt;br /&gt;            deployer.addAppProvider(webAppProvider);&lt;br /&gt;        }&lt;br /&gt;        catch (Exception e) {&lt;br /&gt;            Log.d(LOG_TAG, "unexpected exception setting temp: " + e);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            webServer.start();&lt;br /&gt;            Log.d(LOG_TAG, "started Web server @ " + getPublicInetAddress());&lt;br /&gt;            &lt;br /&gt;            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);&lt;br /&gt;            Notification notification = new Notification( R.drawable.web_server_icon, "WebServer", System.currentTimeMillis());&lt;br /&gt;            notification.flags |= Notification.FLAG_ONGOING_EVENT; // Notification.FLAG_NO_CLEAR;&lt;br /&gt;            Intent notificationIntent = new Intent(this, MyApp.class);&lt;br /&gt;            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);&lt;br /&gt;            notification.setLatestEventInfo(getApplicationContext(), "Web Server" , "Web Server Listening @ " + getPublicInetAddress(), contentIntent);&lt;br /&gt;            notificationManager.notify(NOTIFICATION_ID_WEB_SERVER, notification);&lt;br /&gt;        }&lt;br /&gt;        catch (Exception e) {&lt;br /&gt;            Log.d(LOG_TAG, "unexpected exception starting Web server: " + e);&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;DexWebInfConfiguration.java&lt;/h5&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt; * Adds dex support to the classloader used in the Jetty WebInfConfiguration.&lt;br /&gt; * &lt;br /&gt; * &lt;code&gt;webapp.setConfigurationClasses(new String[] { DexWebInfConfiguration.class.getName() });&lt;/code&gt;&lt;br /&gt; */&lt;br /&gt;public class DexWebInfConfiguration extends WebInfConfiguration {&lt;br /&gt;    /**&lt;br /&gt;     * The parent preConfigure is going to load the JAR and class files in so we&lt;br /&gt;     * need to adjust the class loader before&lt;br /&gt;     */&lt;br /&gt;    @Override&lt;br /&gt;    public void preConfigure(WebAppContext context) throws Exception {&lt;br /&gt;        String tempDir = getCanonicalNameForWebAppTmpDir(context);&lt;br /&gt;        if (tempDir != null) {&lt;br /&gt;            tempDir = Environment.getExternalStorageDirectory() + "/" + tempDir;&lt;br /&gt;            String dexZip = tempDir + "/webapp/WEB-INF/lib/classes.zip";&lt;br /&gt;            context.setClassLoader(new DexClassLoader(dexZip, tempDir, null, getClass().getClassLoader()));&lt;br /&gt;            Log.d("Jetty", "Added DexClassLoader for " + dexZip);&lt;br /&gt;        }&lt;br /&gt;        super.preConfigure(context);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7157590162042928528?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7157590162042928528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7157590162042928528&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7157590162042928528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7157590162042928528'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2011/06/jsp-pre-compile-and-proper-servlet.html' title='jsp pre-compile and proper servlet classloading'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-5391644223657040765</id><published>2011-06-04T03:05:00.003Z</published><updated>2011-06-04T03:42:18.021Z</updated><title type='text'>running embedded Jetty in Android app</title><content type='html'>I expect that we'll see this more commonly as more Android-based hardware devices come out other than mobile phones.  In this particular case, the Jetty server is intended to drive a dynamic Web-based management tool for an application running on an Android device.  I need to get a proper Web app project set up that pre-compiles the JSPs before they get to the Android device but this post is intended to show what libraries are required and how to set up Jetty to run on the Android device.  I'm using a regular Android emulator out of Eclipse and a G1 running Cyanogen (API 8) for testing at this point.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;General Stuff&lt;/h2&gt;&lt;br /&gt;I had to use &lt;a href="http://download.eclipse.org/jetty/7.3.0.v20110203/dist/jetty-distribution-7.3.0.v20110203.tar.gz"&gt;Jetty version 7.3.0.v20110203&lt;/a&gt; to avoid XML validation feature that causes troubles on Android 2.2 devices.&lt;br /&gt;&lt;br /&gt;I merged JARs from the Jetty download into a single one to add to my app that I called &lt;code&gt;jetty.jar&lt;/code&gt;.  For example, here's a little shell script I used for my WAR Deployed Web App.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;jar xf ../jetty-continuation-*.jar&lt;br /&gt;jar xf ../jetty-http-*.jar&lt;br /&gt;jar xf ../jetty-io-*.jar&lt;br /&gt;jar xf ../jetty-security-*.jar&lt;br /&gt;jar xf ../jetty-server-*.jar&lt;br /&gt;jar xf ../jetty-servlet-*.jar&lt;br /&gt;jar xf ../jetty-util-*.jar&lt;br /&gt;jar xf ../jetty-webapp-*.jar&lt;br /&gt;jar xf ../jetty-xml-*.jar&lt;br /&gt;jar xf ../servlet-api-2.5.jar&lt;br /&gt;jar cf ~/Documents/ECLIPSE_PROJECT_PATH/libs/jetty.jar *&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I see that a work-around for the IPv4 / IPv6 issue is still required.  I used&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  // work-around for Android defect 9431&lt;br /&gt;  System.setProperty("java.net.preferIPv4Stack", "true");&lt;br /&gt;  System.setProperty("java.net.preferIPv6Addresses", "false");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Since the emulator uses slirp for the guest networking, you have to set up port forwarding from the host.  For the G1, I used the real address of the phone (shows up in the status bar).  So for the emulator I'd point my browser at &lt;code&gt;http://localhost:8080/&lt;/code&gt; but from my G1 I'd point at &lt;code&gt;http://10.1.1.8:8080/&lt;/code&gt; (of couse, this IP is local to my LAN).&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;adb -e forward tcp:8080 tcp:8080&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Simple Web App&lt;/h2&gt;&lt;br /&gt;Just to make sure that I could start a server and have it listening as expected, I deployed a simple static app.&lt;br /&gt;&lt;br /&gt;This is the list of JARs that I had to put into my app.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;jetty-continuation-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-http-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-io-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-server-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-util-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;servlet-api-2.5.jar&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Here is the Jetty server clip I put in my app &lt;code&gt;onCreate&lt;/code&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        webServer = new Server(8080);&lt;br /&gt;&lt;br /&gt;        Handler handler = new AbstractHandler() {&lt;br /&gt;            public void handle(String target, Request request, HttpServletRequest servletRequest,&lt;br /&gt;                    HttpServletResponse servletResponse) throws IOException, ServletException {&lt;br /&gt;                servletResponse.setContentType("text/html");&lt;br /&gt;                servletResponse.setStatus(HttpServletResponse.SC_OK);&lt;br /&gt;                servletResponse.getWriter().println("&amp;lt;h1&gt;Hello World&amp;lt;/h1&gt;");&lt;br /&gt;                ((Request) request).setHandled(true);&lt;br /&gt;            }&lt;br /&gt;        };&lt;br /&gt;        webServer.setHandler(handler);&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            webServer.start();&lt;br /&gt;            Log.d(LOG_TAG, "started Web server @ " + getPublicInetAddress());&lt;br /&gt;            &lt;br /&gt;            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);&lt;br /&gt;            Notification notification = new Notification( R.drawable.web_server_icon, "WebServer", System.currentTimeMillis());&lt;br /&gt;            notification.flags |= Notification.FLAG_ONGOING_EVENT; // Notification.FLAG_NO_CLEAR;&lt;br /&gt;            Intent notificationIntent = new Intent(this, MyApp.class);&lt;br /&gt;            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);&lt;br /&gt;            notification.setLatestEventInfo(getApplicationContext(), "Web Server" , "Web Server Listening @ " + getPublicInetAddress(), contentIntent);&lt;br /&gt;            notificationManager.notify(NOTIFICATION_ID_WEB_SERVER, notification);&lt;br /&gt;        }&lt;br /&gt;        catch (Exception e) {&lt;br /&gt;            Log.d(LOG_TAG, "unexpected exception starting Web server: " + e);&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;WAR Deployed Web App&lt;/h2&gt;&lt;br /&gt;The next step was to deploy an external servlet via a WAR file.  This turned out to be a lot more difficult than I imagined because of checkin r2770 in Jetty-7.  It turns out that an XmlParser validation feature was added to Jetty that Android 2.2 doesn't support.  Once I moved to a version of Jetty older than that revision I was able to move forward.&lt;br /&gt;&lt;br /&gt;This is the list of JARs that I had to put into my app.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;jetty-continuation-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-http-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-io-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-security-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-server-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-servlet-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-util-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-webapp-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jetty-xml-7.3.0.v20110203.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;servlet-api-2.5.jar&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        webServer = new Server(8080);&lt;br /&gt;&lt;br /&gt;        WebAppContext webapp = new WebAppContext();&lt;br /&gt;        webapp.setContextPath("/");&lt;br /&gt;        webapp.setTempDirectory(new File("/sdcard/my-work/"));&lt;br /&gt;        webapp.setWar("/sdcard/my-webapps/my-ROOT.war");&lt;br /&gt;        webServer.setHandler(webapp);&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            webServer.start();&lt;br /&gt;            Log.d(LOG_TAG, "started Web server @ " + getPublicInetAddress());&lt;br /&gt;            &lt;br /&gt;            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);&lt;br /&gt;            Notification notification = new Notification( R.drawable.web_server_icon, "WebServer", System.currentTimeMillis());&lt;br /&gt;            notification.flags |= Notification.FLAG_ONGOING_EVENT; // Notification.FLAG_NO_CLEAR;&lt;br /&gt;            Intent notificationIntent = new Intent(this, MyApp.class);&lt;br /&gt;            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);&lt;br /&gt;            notification.setLatestEventInfo(getApplicationContext(), "Web Server" , "Web Server Listening @ " + getPublicInetAddress(), contentIntent);&lt;br /&gt;            notificationManager.notify(NOTIFICATION_ID_WEB_SERVER, notification);&lt;br /&gt;        }&lt;br /&gt;        catch (Exception e) {&lt;br /&gt;            Log.d(LOG_TAG, "unexpected exception starting Web server: " + e);&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The &lt;code&gt;my-work&lt;/code&gt; directory gets created fine.  I need to push the WAR file out: for the emulator I used &lt;code&gt;adb push ../my-ROOT.war sdcard/my-webapps&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Next Steps&lt;/h2&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;I need to submit a patch to Jetty to get a &lt;code&gt;try / catch&lt;/code&gt; around the XmlParser validation feature that is causing trouble so we can use more recent versions.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;I need to set up JSP pre-compiling in my Web project so I can add JSPs to make developing the UI easier.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;I need to dig into the Android device and figure out how to set the low-port listen capability.  Right now, I have to listen on the 1024+ port range so I use the common port 80.  For a real device, I need to change this to port 80 but that requires a Linux capability change - probably in device boot parameters.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Here's the change that I think needs to be dis-armed a bit.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ svn diff -c 2770 XmlParser.java &lt;br /&gt;Index: XmlParser.java&lt;br /&gt;===================================================================&lt;br /&gt;--- XmlParser.java (revision 2769)&lt;br /&gt;+++ XmlParser.java (revision 2770)&lt;br /&gt;@@ -107,6 +107,7 @@&lt;br /&gt;             _parser.getXMLReader().setFeature("http://xml.org/sax/features/validation", validating);&lt;br /&gt;             _parser.getXMLReader().setFeature("http://xml.org/sax/features/namespaces", true);&lt;br /&gt;             _parser.getXMLReader().setFeature("http://xml.org/sax/features/namespace-prefixes", false);  &lt;br /&gt;+            _parser.getXMLReader().setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", validating);&lt;br /&gt;         }&lt;br /&gt;         catch (Exception e)&lt;br /&gt;         {&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-5391644223657040765?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/5391644223657040765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=5391644223657040765&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5391644223657040765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5391644223657040765'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2011/06/running-embedded-jetty-in-android-app.html' title='running embedded Jetty in Android app'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-3624938670015557718</id><published>2010-05-24T17:59:00.006Z</published><updated>2010-05-24T19:54:42.500Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='android tether eclipse proxoid'/><title type='text'>Eclipse plugin installation with Proxoid on G1</title><content type='html'>I had figured I'd just be browsing via the tether but then I discovered that I needed another Eclipse plugin.  Setting Eclipse to use the proxy was simple enough.  I use Proxoid on the G1 and &lt;em&gt;adb&lt;/em&gt; on my computer just like I did in my previous tethering post.  Rather than start Eclipse with a proxy configured, I adjusted the Eclipse preferences to use the proxy.  The risk of adjusting the preferences is that when I'm in the office, I'll forget that I had configured the proxy - my memory for trivial stuff is really that bad.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Eclipse -&gt; Preferences... | General -&gt; Network Connections&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You have to change the drop-down the &lt;em&gt;Manual&lt;/em&gt; before you can edit the HTTP and HTTPS proxies.  Since I have &lt;em&gt;adb&lt;/em&gt; mapping 8080 for the proxy, that's what I am using in this proxy.  Once the proxy is set in &lt;em&gt;Network Connections&lt;/em&gt;, plugins installed through regular means.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CJe_TZuR_n4/S_q_Rol1doI/AAAAAAAAAQA/BgdU-b76isI/s1600/Eclipse+with+Proxy.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 277px;" src="http://4.bp.blogspot.com/_CJe_TZuR_n4/S_q_Rol1doI/AAAAAAAAAQA/BgdU-b76isI/s320/Eclipse+with+Proxy.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5474898606697051778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Good Stuff.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Network Connections for All&lt;/em&gt;&lt;br /&gt;I had to install the 1.6 platform so I could create a new app for my phone.  Since the Android plugin manages the platform and API installations, I wasn't real confident that the &lt;em&gt;Network Connections&lt;/em&gt; proxy would get used.  I was pleased to find that Network Connections does affect the ADT properly - I'm somewhere in Iowa between Des Moines and Council Bluffs and getting the platform.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/S_rZPphzfcI/AAAAAAAAAQQ/kcxIwzg-ze0/s1600/Installing+Android+SDK+Plugin.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/S_rZPphzfcI/AAAAAAAAAQQ/kcxIwzg-ze0/s320/Installing+Android+SDK+Plugin.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5474927159891164610" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3624938670015557718?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3624938670015557718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3624938670015557718&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3624938670015557718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3624938670015557718'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/05/eclipse-plugin-installation-with.html' title='Eclipse plugin installation with Proxoid on G1'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://4.bp.blogspot.com/_CJe_TZuR_n4/S_q_Rol1doI/AAAAAAAAAQA/BgdU-b76isI/s72-c/Eclipse+with+Proxy.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-7408345254201738630</id><published>2010-05-24T15:33:00.004Z</published><updated>2010-05-24T15:47:44.208Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='android tether proxoid'/><title type='text'>tethered via G1, Proxoid, and Chrome</title><content type='html'>It is great to hear that tethering will be part of the OS on future phones.  For now, tethering isn't too bad - the worst bit is getting the Android SDK installed if you don't have it already.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;a href="http://code.google.com/p/proxoid/"&gt;Proxoid&lt;/a&gt; app on G1&lt;/em&gt;&lt;br /&gt;My G1 is using Android OS 1.6 and I doubt it will ever get the 2.x line.  There are probably a bunch of tethering apps but the one I downloaded was &lt;a href="http://code.google.com/p/proxoid/"&gt;Proxoid&lt;/a&gt;.  When you open Proxoid, there is basically just an option to change ports and then a start / stop button.  It crashed once but otherwise it appears reliable.  When I was to tether my computer, I open Proxoid and click Start.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;a href="http://developer.android.com/sdk/"&gt;Android SDK&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;I assume that all tethering is the same: you start the proxy app on the phone and then use &lt;em&gt;adb&lt;/em&gt; from the &lt;a href="http://developer.android.com/sdk/"&gt;Android SDK&lt;/a&gt; to forward some TCP port on the computer to a port on the phone.  Download and install the latest &lt;a href="http://developer.android.com/sdk/"&gt;Android SDK&lt;/a&gt; and then add the &lt;em&gt;tools&lt;/em&gt; directory to your &lt;em&gt;PATH&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;I forward TCP port 8080 on my computer to port 8080 on the phone.  Port 8080 is currently the default port that Proxoid uses on the phone.&lt;br /&gt;&lt;pre&gt;adb forward tcp:8080 tcp:8080&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Chrome browsing&lt;/em&gt;&lt;br /&gt;It isn't necessary to use Chrome but it is easy to open Chrome using a proxy and not have to change any settings.  You could easily do this with FF or Safari if there is a command-line option to use a proxy or if you find the proper configuration settings.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --proxy-server=localhost:8080&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7408345254201738630?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7408345254201738630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7408345254201738630&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7408345254201738630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7408345254201738630'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/05/tethered-via-g1-proxoid-and-chrome.html' title='tethered via G1, Proxoid, and Chrome'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-7067658775004335810</id><published>2010-05-04T05:28:00.004Z</published><updated>2010-05-04T05:40:32.442Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ipad iphone html5 touchmove touchstart'/><title type='text'>touchstart and touchmove</title><content type='html'>For the most part, HTML5 apps test comparably in Safari and on the iPad.  One difference that really jumps out is the touch events that the iPad / iPhone implements.  My application initially bound events to the &lt;code&gt;click&lt;/code&gt; event but I noticed a delay in the iPad so I switched over to the &lt;code&gt;touchstart&lt;/code&gt; event.  When the application is running in iPad / iPhone, the whole canvas is draggable and looks crappy.&lt;br /&gt;&lt;br /&gt;From reading blogs and SO, it seems like the delay in &lt;code&gt;onClick&lt;/code&gt; is intentional in iPhone / iPad because the browser (UIWebView, in this case) is waiting to see if there is going to be a gesture.  That makes sense to me so any cases where I had a &lt;code&gt;.click&lt;/code&gt; I changed to a &lt;code&gt;.bind(clickevent&lt;/code&gt;.  I set &lt;code&gt;clickevent = click&lt;/code&gt; by default but override with &lt;code&gt;clickevent = touchstart&lt;/code&gt; when on iPhone / iPad.&lt;br /&gt;&lt;br /&gt;In the image below, you can see a big gray space - thats from clicking and dragging the screen down.  After implementing the &lt;code&gt;event.preventDefault&lt;/code&gt; the view can no longer be dragged down.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ git diff HTML/main.js &lt;br /&gt;diff --git a/HTML/main.js b/HTML/main.js&lt;br /&gt;index 4e7661b..5bceab2 100644&lt;br /&gt;--- a/HTML/main.js&lt;br /&gt;+++ b/HTML/main.js&lt;br /&gt;@@ -23,6 +23,14 @@ if(window.Touch) {&lt;br /&gt;     clickevent = 'touchstart';&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;+// TODO - can combine with other iPad / iPhone checks but keeping separate&lt;br /&gt;+// for now just to make it stand out&lt;br /&gt;+if(window.Touch) {&lt;br /&gt;+       document.ontouchmove = function(event) {&lt;br /&gt;+        event.preventDefault();&lt;br /&gt;+    }&lt;br /&gt;+}&lt;br /&gt;+&lt;br /&gt; $.ajaxSetup({&lt;br /&gt;     beforeSend: function(xhr) { xhr.setRequestHeader("Emsauthtoken",localStorag&lt;br /&gt;     cache: false,&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CJe_TZuR_n4/S9-yupX4w8I/AAAAAAAAAP4/3v4Dk0Atp-Y/s1600/yuck+on+touchmove.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 265px;" src="http://4.bp.blogspot.com/_CJe_TZuR_n4/S9-yupX4w8I/AAAAAAAAAP4/3v4Dk0Atp-Y/s320/yuck+on+touchmove.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5467284987100840898" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7067658775004335810?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7067658775004335810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7067658775004335810&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7067658775004335810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7067658775004335810'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/05/touchstart-and-touchmove.html' title='touchstart and touchmove'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://4.bp.blogspot.com/_CJe_TZuR_n4/S9-yupX4w8I/AAAAAAAAAP4/3v4Dk0Atp-Y/s72-c/yuck+on+touchmove.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-1566706768062728802</id><published>2010-04-30T14:41:00.002Z</published><updated>2010-04-30T14:48:42.610Z</updated><title type='text'>Palm and WebOS</title><content type='html'>I wish things would have gone differently with Palm and WebOS.  Reading almost nothing but negative press about the HP buyout of Palm has me thinking about it.  From my perspective, Palm committed where RedHat, Google, and probably others just talk big about: they built devices that were really built on Web technologies.  I've said before how impressive it was that Palm shipped their VM on VirtualBox - it was a specific, older version of VirtualBox - but it wasn't some opaque, crappy device simulator that other vendors provide.  Building apps for devices with just HTML/CSS/JS is a great solution and it is supported in Android and iPhone but Palm made it THE solution.&lt;br /&gt;&lt;br /&gt;My favorite quote found reading comments in the negative press:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;At one time you could have said Apple was late since Palm already had the Smart Phone market cornered.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Heh - it really is true.  Today, seems like the press and most of the noisy people are Apple fan boys / girls but tomorrow it won't be the same and the 'obvious' stupidity of HP buying Palm may or may not be true.&lt;br /&gt;&lt;br /&gt;WebOS will probably die at HP but it was a great effort by Palm.  Shame.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1566706768062728802?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1566706768062728802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1566706768062728802&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1566706768062728802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1566706768062728802'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/04/palm-and-webos.html' title='Palm and WebOS'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-9120711143166833973</id><published>2010-03-11T06:02:00.004Z</published><updated>2010-03-11T06:11:16.364Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='html5 iphone webos'/><title type='text'>HTML5 Buckets</title><content type='html'>Buckets has been idle for many months and I still haven't gotten Shanelle using it.  Something - I think it was Luke - got me thinking about finishing the iPhone version.  In fact, starting and then finishing the iPhone version :)  I feel the need for doing it in HTML5 - this app is a good candidate for a non-native application implementation.&lt;br /&gt;&lt;br /&gt;I started looking around for demo apps that had the components I need and handily bonked into webkit.org/demos/sticky-notes/  I dream of a competitive WebOS device so it is nice that iPhone and WebOS should have very similar implementations.  Here's the first bit of goodness.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ curl --include  http://webkit.org/demos/sticky-notes/StickyNotes.manifest&lt;br /&gt;HTTP/1.1 200 OK&lt;br /&gt;Date: Thu, 11 Mar 2010 06:01:37 GMT&lt;br /&gt;Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8l DAV/2 mod_python/3.3.1 Python/2.5.4&lt;br /&gt;Last-Modified: Sat, 13 Jun 2009 00:53:08 GMT&lt;br /&gt;ETag: "38-46c303f980500"&lt;br /&gt;Accept-Ranges: bytes&lt;br /&gt;Content-Length: 56&lt;br /&gt;Content-Type: text/cache-manifest&lt;br /&gt;&lt;br /&gt;CACHE MANIFEST&lt;br /&gt;deleteButton.png&lt;br /&gt;deleteButtonPressed.png&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;There are some important rules going on - this bit is telling the browser exactly what resources to make available when the application is in offline mode.   Sticky Notes is mostly CSS so the manifest is micro but it's still a good start.  Some bits that I've picked up in other places: the page that includes the manifest= is automatically whitelisted; fallback is how you replace resources with an offline-specific image or resource; the content of the manifest has to change for the browser to recognize a difference - it isn't the timestamp or the filename / path.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-9120711143166833973?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/9120711143166833973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=9120711143166833973&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/9120711143166833973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/9120711143166833973'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/03/html5-buckets.html' title='HTML5 Buckets'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-7551731390565105269</id><published>2010-02-28T08:30:00.005Z</published><updated>2010-02-28T10:14:05.812Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='usernames unicode symbol-based-domain'/><title type='text'>where are symbol-based domains</title><content type='html'>It occurred to me that I've never seen a symbol-based domain in use.  For example, why haven't I ever seen a symbol in a domain - especially some domain like http://www.i♥android.com/?&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;As a side note - I've read that Windows people would see the Windows logo in this domain and Mac people would see the Apple logo.  What do you see?  http://i♥.com/.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;From my late-night skimming (I'm saying I didn't really read much - this is what I've gleaned) it looks like in 2005 DNS switched from ASCII to Unicode.  The support for Unicode domain names appears to be there in all common browsers.  I tested Chrome, Safari, Firefox, and IE and all of them behaved the same way.&lt;br /&gt;&lt;br /&gt;It seems like people should have started using symbols for fun.  No doubt there are non-US domains that require unicode but I'm just thinking about the vanity type stuff.  It looks like Network Solutions briefly allowed symbols in .com domains (£.com and ♥.com) but doesn't anymore.  Out of curiousity, I attempted to register i♥android.com at a few registrars and was consistently blocked.  I then attempted to register i♥android.ws at 3 registrars and 1 allowed it (GoDaddy).  Interesting.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/S4o90Q3EIkI/AAAAAAAAAOY/UrBdRq0_9z0/s1600-h/safariHitsSymbolBasedDomainsNicely.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 264px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/S4o90Q3EIkI/AAAAAAAAAOY/UrBdRq0_9z0/s320/safariHitsSymbolBasedDomainsNicely.png" border="0" alt="Safari hits symbol-based domains nicely."id="BLOGGER_PHOTO_ID_5443231067719082562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Safari hits symbol-based domains nicely.  My version of Chrome hit my play domain correctly but then munged the URL.  Silly.&lt;br /&gt;&lt;br /&gt;Speaking of silly - let's say that people were using symbol-based domains for vanity stuff or marketing - in both cases, they'd probably want to use the vanity names in social sites.  Why aren't usernames allowed to contain unicode?  I only checked a few sites and they only wanted simple ASCII.  I wonder if there is a reason that I'm unaware of or if it is just easier for devs to not think about more complicated usernames.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/S4o90gsaorI/AAAAAAAAAOg/NigG2ybmYm0/s1600-h/microBloggingSiteBlocksSymbolsInUsername.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 68px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/S4o90gsaorI/AAAAAAAAAOg/NigG2ybmYm0/s320/microBloggingSiteBlocksSymbolsInUsername.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443231071969387186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/S4pBvrHbDWI/AAAAAAAAAOo/vY1rDeAaO50/s1600-h/bigSocialSiteDoesntLikeSymbols.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 88px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/S4pBvrHbDWI/AAAAAAAAAOo/vY1rDeAaO50/s320/bigSocialSiteDoesntLikeSymbols.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443235386914180450" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7551731390565105269?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7551731390565105269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7551731390565105269&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7551731390565105269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7551731390565105269'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/02/where-are-symbol-based-domains.html' title='where are symbol-based domains'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://2.bp.blogspot.com/_CJe_TZuR_n4/S4o90Q3EIkI/AAAAAAAAAOY/UrBdRq0_9z0/s72-c/safariHitsSymbolBasedDomainsNicely.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-5055873609076235696</id><published>2010-02-15T18:08:00.004Z</published><updated>2010-02-15T18:18:13.528Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids games'/><title type='text'>Ike and Spence getting started with Game Maker 8</title><content type='html'>Isaac and Spencer have been playing Club Penguin and Build-A-Bear-Workshop a lot lately.  One day Spencer decided that it is time for him to write his own game and he started sending me ideas in IM.  I asked around and looked around and decided that &lt;a href="http://www.yoyogames.com/make"&gt;Game Maker 8&lt;/a&gt; looks like a good tool for Spencer to use.  I had the boys read through a tutorial on their own and then yesterday we went through a tutorial together and created a simple game.&lt;br /&gt;&lt;br /&gt;Isaac and Spencer working hard.  They each liked different speeds, sounds, and backgrounds but ended up with basically the same game.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/S3mOggxr6aI/AAAAAAAAAOE/cPQ-E5C5jg0/s1600-h/insGameMaker8.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 180px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/S3mOggxr6aI/AAAAAAAAAOE/cPQ-E5C5jg0/s320/insGameMaker8.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5438534714231876002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Asher was pretty impatient with us working on the games.  Asher loves playing Club Penguin so not only were we not playing with him - he couldn't use a computer while we worked.  He went around taking picture of just about everything in the house.  Here's the only decent one though :)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/S3mOhEZNXYI/AAAAAAAAAOM/Z2I5lI8jr1M/s1600-h/ikeByAsher.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 180px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/S3mOhEZNXYI/AAAAAAAAAOM/Z2I5lI8jr1M/s320/ikeByAsher.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5438534723792887170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So for a simple game, you pick out sprites and sounds and identify them as resources.  Then you set up objects and boards using the sprites and sounds.  The objects are given events and actions associated with the events.  For example, a create event is used to start some objects moving around on the board.  A collision event just gets a bounce in our game.  There are more events and actions than I could ever have imagined.&lt;br /&gt;&lt;br /&gt;I hope the boys continue forward and do more playing.  I imagine I'll have to work with them some more but I think they could do some more simple stuff on their own.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-5055873609076235696?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/5055873609076235696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=5055873609076235696&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5055873609076235696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5055873609076235696'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/02/ike-and-spence-getting-started-with.html' title='Ike and Spence getting started with Game Maker 8'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://1.bp.blogspot.com/_CJe_TZuR_n4/S3mOggxr6aI/AAAAAAAAAOE/cPQ-E5C5jg0/s72-c/insGameMaker8.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-821713079620726979</id><published>2010-02-04T08:24:00.004Z</published><updated>2010-02-04T08:30:49.180Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino protoduino fth'/><title type='text'>started soldering protoduino prototype</title><content type='html'>I had planned on testing with a breadboard at the next FTH test but then I decided that parts would probably jiggle loose.  Michael and I discussed options and Michael found the &lt;a href="http://www.eastham-lee.com/protoduino.html"&gt;Protoduino&lt;/a&gt;.  For $13, it is a spectacular deal and very convenient.  I started soldering the components to it tonight but this bit goes quite slow.&lt;br /&gt;&lt;br /&gt;I've got the boost interrupt (rectifier and long blue wires), 5V voltage regulator, and reset switch in.  I attached a 3 pin molex connector to the pressure transducer.  I still have to put the servo connector, power connectors, data logger header, and 6V voltage regulator on.  It'll be tight but everything will just fit.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CJe_TZuR_n4/S2qFiLaed5I/AAAAAAAAAN8/8tBvClrrcNM/s1600-h/protoduino+fth+v1+underside.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 166px;" src="http://3.bp.blogspot.com/_CJe_TZuR_n4/S2qFiLaed5I/AAAAAAAAAN8/8tBvClrrcNM/s200/protoduino+fth+v1+underside.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5434302722601809810" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/S2qFh_TKEwI/AAAAAAAAAN0/UlljDpkHzV4/s1600-h/protoduino+fth+v1+top.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 140px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/S2qFh_TKEwI/AAAAAAAAAN0/UlljDpkHzV4/s200/protoduino+fth+v1+top.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5434302719349887746" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/S2qFhqV71-I/AAAAAAAAANs/73X8jwBmgPg/s1600-h/protoduino+fth+v1+side.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 170px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/S2qFhqV71-I/AAAAAAAAANs/73X8jwBmgPg/s200/protoduino+fth+v1+side.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5434302713724393442" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-821713079620726979?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/821713079620726979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=821713079620726979&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/821713079620726979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/821713079620726979'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/02/started-soldering-protoduino-prototype.html' title='started soldering protoduino prototype'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://3.bp.blogspot.com/_CJe_TZuR_n4/S2qFiLaed5I/AAAAAAAAAN8/8tBvClrrcNM/s72-c/protoduino+fth+v1+underside.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-6098754834994149933</id><published>2010-01-27T05:29:00.006Z</published><updated>2010-01-27T05:52:42.120Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='uMMC Arduino FTH'/><title type='text'>using RogueSD Arduino lib after SMD exercise</title><content type='html'>Michael discovered that &lt;a href="http://www.roguerobotics.com/"&gt;Rogue Robotics&lt;/a&gt; has an &lt;a href="http://code.google.com/p/arduino-libraries/wiki/RogueSDLibraryDocumentation"&gt;Arduino library&lt;/a&gt; for the uMMC data logger unit that I have.  My uMMC is about 4 years old so I wasn't too surprised that it didn't work when I hooked it up and updated to the &lt;a href="http://www.roguerobotics.com/products/electronics/ummc/beta"&gt;latest firmware&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;I have a uMMC unit that I successfully upgraded to firmware&lt;br /&gt;102.08-b004 so that I could use the Arduino libraries.&lt;br /&gt;The commands to changing and reading the settings work and the version&lt;br /&gt;command works but Z always returns E05.  I've tried 3 different cards&lt;br /&gt;that all worked before upgrading from 101.56 and now they all fail to&lt;br /&gt;initialize.  I've tried different baud rates (9600 to 115200) but they&lt;br /&gt;all fail.  Does this device support 102.08?  Is there anything else I&lt;br /&gt;can do to trouble-shoot this?  The Arduino library page says that I&lt;br /&gt;can use 101.56 but the code says I have to have 102.01 at minimum -&lt;br /&gt;which is it?  Could you point me at 102.07 so I can try that version?&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I mailed support the above message and received a quick response.  I ended up sending a picture of my unit and they sent me back my picture with an edit showing where I needed to add a resistor.  Great help from RR - quite impressed with the company.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CJe_TZuR_n4/S1_SS1KuxTI/AAAAAAAAANc/VCgmVwytxHk/s1600-h/uMMC-rework.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 194px;" src="http://3.bp.blogspot.com/_CJe_TZuR_n4/S1_SS1KuxTI/AAAAAAAAANc/VCgmVwytxHk/s320/uMMC-rework.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5431290896583673138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I was a bit nervous about the SMD soldering but it was no problem.  I shaped the resistor leads so it fit nicely then  I put a bit of flux on the 2 pins that I had to solder the resistor to.  I decided to use some fine lead-free solder since I had the extra flux on the pins and that worked out okay.  Once I soldered the resistor in, I tested the uMMC using the old firmware and then I upgraded the firmware and tested - it worked!  :)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/S1_Thq5G46I/AAAAAAAAANk/v6WBOWdLk9w/s1600-h/uMMC+in+circuit.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 203px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/S1_Thq5G46I/AAAAAAAAANk/v6WBOWdLk9w/s320/uMMC+in+circuit.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5431292251035067298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's the code I used for testing the uMMC with RogueSD and the latest firmware.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#include "NewSoftSerial.h"&lt;br /&gt;#include "RogueSD.h"&lt;br /&gt;&lt;br /&gt;#define COM_BAUD_RATE 115200&lt;br /&gt;&lt;br /&gt;#define DATA_LOGGER_BAUD_RATE 9600&lt;br /&gt;#define DATA_LOGGER_FILENAME "/uMMCtest.csv"&lt;br /&gt;#define DATA_LOGGER_RX_PIN 3 // ATmega168 pin 5&lt;br /&gt;#define DATA_LOGGER_TX_PIN 4 // ATmega168 pin 6&lt;br /&gt;&lt;br /&gt;// using hardware serial interface for cli communications&lt;br /&gt;static HardwareSerial&amp; comSerial = Serial;&lt;br /&gt;// static NewSoftSerial comSerial(DATA_LOGGER_TX_PIN, DATA_LOGGER_RX_PIN);&lt;br /&gt;&lt;br /&gt;// the file handle used for logging; will be &gt; 0 if uMMC present&lt;br /&gt;static int dataLoggerFileHandle = -1;&lt;br /&gt;&lt;br /&gt;// The firmware assumes the uMMC API for the data logger.&lt;br /&gt;static NewSoftSerial dataLoggerSerial(DATA_LOGGER_TX_PIN, DATA_LOGGER_RX_PIN);&lt;br /&gt;// static HardwareSerial&amp; dataLoggerSerial = Serial;&lt;br /&gt;static RogueSD ummc(dataLoggerSerial);&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  comSerial.begin(COM_BAUD_RATE);&lt;br /&gt;  comSerial.println("uMMC Test Booting...");&lt;br /&gt;&lt;br /&gt;  dataLoggerSerial.begin(DATA_LOGGER_BAUD_RATE);&lt;br /&gt;  comSerial.print("uMMC Version: ");&lt;br /&gt;  comSerial.println(ummc.version());&lt;br /&gt;  ummc.sync();&lt;br /&gt;  dataLoggerFileHandle = ummc.open(DATA_LOGGER_FILENAME, OPEN_APPEND);&lt;br /&gt;  if((dataLoggerFileHandle &lt;= 0) || (ummc.LastErrorCode != 0)) {&lt;br /&gt;    comSerial.print("uMMC Error: ");&lt;br /&gt;    comSerial.println(ummc.LastErrorCode, HEX);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;  if(millis() &gt; 20000) {&lt;br /&gt;    if(dataLoggerFileHandle &gt; 0) {&lt;br /&gt;      ummc.close(dataLoggerFileHandle);&lt;br /&gt;      dataLoggerFileHandle = -1;&lt;br /&gt;      comSerial.println("Closed Data Logger");&lt;br /&gt;    }&lt;br /&gt;  } else {&lt;br /&gt;    writeToDataLogger();&lt;br /&gt;  }&lt;br /&gt;  delay(4000);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void writeToDataLogger() {&lt;br /&gt;  if(dataLoggerFileHandle &lt;= 0) {&lt;br /&gt;    return;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;int chamberPressure = millis() &gt;&gt; 8;&lt;br /&gt;int tankPressure = millis() &gt;&gt; 8;&lt;br /&gt;&lt;br /&gt;  unsigned long dataLoggerStartTime = micros();&lt;br /&gt;&lt;br /&gt;  ummc.writeln_prep(dataLoggerFileHandle);&lt;br /&gt;  ummc.print(millis(), HEX);&lt;br /&gt;  ummc.print(",");&lt;br /&gt;  ummc.print(chamberPressure, HEX);&lt;br /&gt;  ummc.print(",");&lt;br /&gt;  ummc.print(tankPressure, HEX);&lt;br /&gt;  ummc.print("\n");&lt;br /&gt;  ummc.writeln_finish();&lt;br /&gt;  if((dataLoggerFileHandle &lt;= 0) || (ummc.LastErrorCode != 0)) {&lt;br /&gt;    comSerial.print("uMMC Error: ");&lt;br /&gt;    comSerial.println(ummc.LastErrorCode, HEX);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  comSerial.print("Micros: ");&lt;br /&gt;  comSerial.println(micros() - dataLoggerStartTime);&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-6098754834994149933?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/6098754834994149933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=6098754834994149933&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6098754834994149933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6098754834994149933'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/01/using-roguesd-arduino-lib-after-smd.html' title='using RogueSD Arduino lib after SMD exercise'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://3.bp.blogspot.com/_CJe_TZuR_n4/S1_SS1KuxTI/AAAAAAAAANc/VCgmVwytxHk/s72-c/uMMC-rework.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-4508233275024082936</id><published>2010-01-24T05:46:00.004Z</published><updated>2010-01-24T06:04:06.281Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rocketry FTH'/><title type='text'>sewing with Greg</title><content type='html'>I went over to Greg's tonight to burn our propellant-filled straws in the strand-burner.  The first task was to sew fine wires in the propellant so they can be used to determine the burn rate.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/S1vfdQVnGTI/AAAAAAAAANU/7KnTRXc4-bE/s1600-h/sewing+straws+20100122.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 233px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/S1vfdQVnGTI/AAAAAAAAANU/7KnTRXc4-bE/s320/sewing+straws+20100122.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5430179469420075314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The strand burner is collecting 2 different bits of data: the speed that the propellant is burning through the straw and the pressure in the burn chamber.  In the picture below, you can see the gigantic pressure transducer sticking off the burn chamber and the wires all connected to the other end.  Everything goes into the box on the floor which then goes to the computer via the DATAQ.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/S1vfdPB_rzI/AAAAAAAAANM/2BdKHx7tR58/s1600-h/strand+burner+20100122.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 232px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/S1vfdPB_rzI/AAAAAAAAANM/2BdKHx7tR58/s320/strand+burner+20100122.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5430179469069365042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Speaking of pressure transducers, Greg got a couple of these spectacular, tiny transducers!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/S1vfc9coFeI/AAAAAAAAANE/32blZmXNKAc/s1600-h/ready+to+test+20100122.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 166px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/S1vfc9coFeI/AAAAAAAAANE/32blZmXNKAc/s320/ready+to+test+20100122.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5430179464349226466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Good stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4508233275024082936?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4508233275024082936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4508233275024082936&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4508233275024082936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4508233275024082936'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/01/sewing-with-greg.html' title='sewing with Greg'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://2.bp.blogspot.com/_CJe_TZuR_n4/S1vfdQVnGTI/AAAAAAAAANU/7KnTRXc4-bE/s72-c/sewing+straws+20100122.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-4477306428953871437</id><published>2010-01-09T18:31:00.001Z</published><updated>2010-01-09T18:31:04.449Z</updated><title type='text'>Scouts at EcoCycle</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/7AKFgoF6oz9jIcXJ3LQ0DBXX0aYSwG9jcXaOQZWCbiM5XSfc0H6gCExuMT0N/2010-01-09_11.26.05.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/xG3vEJ5mw3DGE60jubxIZelIXPt7aRYrAeM1cw9RIzVYnWk3Fb8RavfYklnc/2010-01-09_11.26.05.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;Unloading for people.  The training about what and why is really interesting.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/scouts-at-ecocycle"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4477306428953871437?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4477306428953871437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4477306428953871437&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4477306428953871437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4477306428953871437'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/01/scouts-at-ecocycle.html' title='Scouts at EcoCycle'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-1849427620845990088</id><published>2010-01-09T05:28:00.002Z</published><updated>2010-01-09T05:41:21.065Z</updated><title type='text'>Shelved the PIC</title><content type='html'>I've heard from Kelly and then from Ken that the Arduino is the way to go for a hobby embedded project.  I had been using the PIC for the FTH project but Michael and I discussed the Arduino and decided we really should take the advice.  I bought the ATmega168 with Arduino bootloader installed and built the supporting circuit around it and was up and running within a couple hours.  The Arduino is as impressive as people made it sound - seriously good stuff.&lt;br /&gt;&lt;br /&gt;Michael started looking at the MsTimer2 library to easily hook into the Timer2 so we can get a reliable interrupt for reading the pressure transducers.  I put that into the app and did some testing with delays and Serial printing to verify that Timer2 really would interrupt loop, delays, and Serial.  It looks good so far.&lt;br /&gt;&lt;br /&gt;Here's a clip of code that sets up Timer2 to just print 'Reading Transducer.' and then a Serial call that should happen about the same time as the interrupt.  I got lucky in the timing and feel like it proved itself.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  Serial.begin(BAUD_RATE);&lt;br /&gt;  Serial.println("FTH-Arduino Booting...");&lt;br /&gt;...&lt;br /&gt;  // Read the transducers @ 1kHz&lt;br /&gt;  MsTimer2::set(1000, readTransducer);&lt;br /&gt;  MsTimer2::start();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;delay(4000);&lt;br /&gt;Serial.println("Boo");&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void readTransducer() {&lt;br /&gt;  Serial.println("Reading Transducer.");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here's the serial output.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;FTH-Arduino Booting...&lt;br /&gt;Reading Transducer.&lt;br /&gt;Reading Transducer.&lt;br /&gt;Reading Transducer.&lt;br /&gt;BoReading Transducer.&lt;br /&gt;o&lt;br /&gt;Reading Transducer.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I've still got the PIC code in Bit Bucket and may build something with the PIC in the future but for now I'm loving the Arduino.  Here's the current breadboard.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/S0gW7P_DoYI/AAAAAAAAAM8/X_SP6nOItGM/s1600-h/current+arduino+breadboard.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 229px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/S0gW7P_DoYI/AAAAAAAAAM8/X_SP6nOItGM/s320/current+arduino+breadboard.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5424610958326866306" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1849427620845990088?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1849427620845990088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1849427620845990088&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1849427620845990088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1849427620845990088'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/01/shelved-pic.html' title='Shelved the PIC'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://2.bp.blogspot.com/_CJe_TZuR_n4/S0gW7P_DoYI/AAAAAAAAAM8/X_SP6nOItGM/s72-c/current+arduino+breadboard.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-7149853386798084498</id><published>2010-01-03T21:43:00.002Z</published><updated>2010-01-03T23:45:02.565Z</updated><title type='text'>Motor test</title><content type='html'>&lt;div style='padding: 5px 5px 10px 5px; margin-top: 5px; border: 1px solid #ddd; background-color: #fff;line-height: 16px;'&gt;       &lt;div style="float: left; margin-right: 5px; overflow: visible;"&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/egjdC5ntpdd5uekMMWR5D0XgJvn5o1jnMZiz4CyVzwRuICaCUmSVo55kUoob/VIDEO0007.3gp' style='color: #bc7134;'&gt;&lt;img src='http://posterous.com/images/filetypes/unknown.png' style='border: none;'/&gt;&lt;/a&gt;&lt;/div&gt;       &lt;div style="font-size: 10px; color: #424037;line-height: 16px;"&gt;Download now or &lt;a href='http://mrtidy.posterous.com/motor-test' style='color: #bc7134;'&gt;watch on posterous&lt;/a&gt;&lt;/div&gt;       &lt;b&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/egjdC5ntpdd5uekMMWR5D0XgJvn5o1jnMZiz4CyVzwRuICaCUmSVo55kUoob/VIDEO0007.3gp' style='color: #bc7134;'&gt;VIDEO0007.3gp&lt;/a&gt;&lt;/b&gt; &lt;span style="font-size: 10px; color: #424037;"&gt;(1400 KB)&lt;/span&gt;       &lt;br style="clear: both;"/&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;&lt;p&gt;First video of John&amp;#39;s motor test.&lt;/p&gt;  &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/motor-test"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7149853386798084498?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7149853386798084498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7149853386798084498&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7149853386798084498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7149853386798084498'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/01/motor-test.html' title='Motor test'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-3786502513815759071</id><published>2010-01-01T19:37:00.001Z</published><updated>2010-01-01T19:37:33.458Z</updated><title type='text'>Nearly done with dome</title><content type='html'>&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/0dL5gtaOX8TcvSIM9RiXx3cb6phcB3ZvkvBB8f9X7qvJNXArhXbhWK8sHwsF/2010-01-01_12.35.24.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/XqnlrjTHPfcMsklMw7gReiZ4P1PkmZu4dPX24dkAgfdeligQmTAHDKWRrefz/2010-01-01_12.35.24.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt;  &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/nearly-done-with-dome"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3786502513815759071?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3786502513815759071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3786502513815759071&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3786502513815759071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3786502513815759071'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2010/01/nearly-done-with-dome.html' title='Nearly done with dome'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-2895905405569390041</id><published>2009-12-26T23:37:00.001Z</published><updated>2009-12-26T23:37:27.710Z</updated><title type='text'>sledding fun</title><content type='html'>Has fun sledding today - great hill!  Adam and Griffin were there so that was extra fun for the kids.  Blake and Kimberly sledded a bit with Asher and even pulled him up the hill a couple times!  :) &lt;p&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/sclnA47uNV8tmcV1dGWQ7Ho7GhU5proI9tyllE4ZsJKlUfbB7kMxkebNBWDn/sledding2.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/4Aob9CIBlk5q2jWcXsF18yJ5rfOqpTHnOTkHYetTPnnMZ44YfzJrGoTbSWow/sledding2.jpg.scaled.500.jpg" width="500" height="357"/&gt;&lt;/a&gt; &lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/mKsWzPzfDKNPVNq1XtReUvC8o8jpyxoKMd0Uy5PgQFh8DePagehYoZCvSUax/sledding3.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/LfIhCklWgo7VH8c51PbVmxnVX2VeHBOyMo4A6Cd8LqfX54bBhgRNTuGTUgHq/sledding3.jpg.scaled.500.jpg" width="500" height="357"/&gt;&lt;/a&gt; &lt;div&gt;&lt;a href='http://mrtidy.posterous.com/sledding-fun'&gt;See and download the full gallery on posterous&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/sledding-fun"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2895905405569390041?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2895905405569390041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2895905405569390041&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2895905405569390041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2895905405569390041'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/12/sledding-fun.html' title='sledding fun'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-4810031118585872535</id><published>2009-12-18T08:21:00.002Z</published><updated>2009-12-18T08:30:41.430Z</updated><title type='text'>moving servo via pot; even has a blinking LED</title><content type='html'>After 2 days without electronics due to illness, I am feeling better and was happy to pull out the stuff.  Shanelle wasn't so happy but we watched a movie while I played.  I read the oscillator section in the 18F2455 datasheet and felt a lot more comfortable with the oscillator config; in addition, I learned that PWM uses timer 2 so I learned about the pre / post scalers there.  I set everything up and was confident that I had the correct timing values but wasn't getting reliable servo movement (servo wasn't dancing either so I was thinking that I had made progress).  Michael suggested batteries; I set up an LM7805 and tried driving the servo off my crappy power supply again but using 12V + LM7805; servo still pulsing; Michael suggested batteries.  I tried batteries on the servo and now had a stable servo :)&lt;br /&gt;&lt;br /&gt;I added a potentiometer to the circuit and adjusted the code to read the pot and position the servo accordingly.  I put a video on youtube and then shortened the delay between reads.  We're really getting somewhere now :)  This code is responsive and good enough to pass along to Greg for testing with a valve and servos while I work on it more to actually considering the pressures and what they mean.&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/klHAq9GwXmg&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/klHAq9GwXmg&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#include &lt;p18f2455.h&gt;&lt;br /&gt;#include &lt;adc.h&gt;&lt;br /&gt;#include &lt;delays.h&gt;&lt;br /&gt;#include &lt;pwm.h&gt;&lt;br /&gt;&lt;br /&gt;// app uses internal oscillator, RA6 for IO&lt;br /&gt;#pragma config FOSC = INTOSCIO_EC&lt;br /&gt;// OSCCON = 0b01110000; should switch to 8Mhz ??&lt;br /&gt;&lt;br /&gt;#pragma config BOR = OFF // Brown out reset&lt;br /&gt;#pragma config LVP = OFF // Low voltage programming&lt;br /&gt;#pragma config WDT = OFF // Watchdog timer&lt;br /&gt;&lt;br /&gt;// use pin 11 for basic LED indicator&lt;br /&gt;#define LEDPin LATCbits.LATC0&lt;br /&gt;#define LEDTris TRISCbits.TRISC0&lt;br /&gt;&lt;br /&gt;void main() {&lt;br /&gt; // pre / post scalers at 1:16 / 1:2&lt;br /&gt; T2CONbits.T2CKPS1 = 1; &lt;br /&gt; T2CONbits.T2CKPS0 = 1; &lt;br /&gt; T2CONbits.T2OUTPS3 = 0; &lt;br /&gt; T2CONbits.T2OUTPS2 = 0; &lt;br /&gt; T2CONbits.T2OUTPS1 = 0; &lt;br /&gt; T2CONbits.T2OUTPS0 = 1; &lt;br /&gt;&lt;br /&gt; // the period is 25ms&lt;br /&gt; OpenPWM1(250);&lt;br /&gt;&lt;br /&gt; // TODO - understand all these flags&lt;br /&gt; OpenADC(ADC_FOSC_8 &amp; ADC_RIGHT_JUST &amp; ADC_0_TAD,&lt;br /&gt;  ADC_CH0 &amp; ADC_INT_OFF &amp; ADC_VREFPLUS_VDD &amp; ADC_VREFMINUS_VSS,&lt;br /&gt;  0b1011);&lt;br /&gt; SetChanADC(ADC_CH0);&lt;br /&gt;&lt;br /&gt; LEDTris = 0; // make sure LED pin is an output pin&lt;br /&gt; LEDPin = 1; // turn LED on&lt;br /&gt; while(1) {&lt;br /&gt;  LEDPin = ~LEDPin;&lt;br /&gt;  Delay10KTCYx(5); // (.2s delay between reads)&lt;br /&gt;&lt;br /&gt;  ConvertADC();&lt;br /&gt;  while(BusyADC());&lt;br /&gt;  // through experimentation, I found that a 'duty cycle' between&lt;br /&gt;  // 18 and 81 was about right; my pot in my circuit is giving&lt;br /&gt;  // 0 to 4.2V so I'm multiplying by 1.2; the ReadADC returns a&lt;br /&gt;  // 10 bit result so dividing by 16 to put me 0 to 63&lt;br /&gt;  SetDCPWM1(18 + ((int) (1.2 * ReadADC()) &gt;&gt; 4));&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4810031118585872535?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4810031118585872535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4810031118585872535&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4810031118585872535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4810031118585872535'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/12/moving-servo-via-pot-even-has-blinking.html' title='moving servo via pot; even has a blinking LED'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-8159396759041912348</id><published>2009-12-15T06:15:00.007Z</published><updated>2009-12-15T07:16:04.865Z</updated><title type='text'>first time with MPLAB and PIC</title><content type='html'>Edward, Greg, and I have been Waving about a Fantasy Throttleable Hybrid rocket.  The electronics for the rocket are interesting to me, and the machining of the rocket parts is beyond my abilities, so I'm setting up an environment to work on the controller for the rocket.  I'm new to programming the PIC but am interested since it is used in so many projects.&lt;br /&gt;&lt;br /&gt;It seems common for hobbyists to develop in ASM for the PIC but I chose C.  To get some hand-holding, I went through &lt;a href="http://www.pic18f.com/18f4550-c-tutorial/2009/11/16/tutorial-4-hello-world-program-in-c/"&gt;Tutorial 4&lt;/a&gt; at &lt;a href="http://www.pic18f.com/"&gt;pic18f.com&lt;/a&gt; and it was exactly what I needed from an introduction.  Here are a few bits that I had to bump into myself.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;PICkit2 Kinda Tricky with VirtualBox&lt;/h3&gt;&lt;br /&gt;I use a MacBook as my primary machine and do most things related to rocketry within a WinXP VM using VirtualBox.  I figured I would simply plug in the PICkit2 (it is USB), assign it to my VM, and go on with the Tutorial.  When I plugged in the PICkit2, it appeared in the USB list in my VM but it was &lt;em&gt;Unavailable&lt;/em&gt;.  I checked the VirtualBox forums and there were some special chicken dances that people claim work but the following steps appear to be reliable for me.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Set up USB Filter for PICkit2 and put at top of VM config.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Boot VM&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Plug in PICkit2 at Windows log-in screen.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Here are some pictures:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/SycuO6vlCFI/AAAAAAAAAMI/I_Y2qTBLDDo/s1600-h/USB+PICkit2+Unavailable.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 70px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/SycuO6vlCFI/AAAAAAAAAMI/I_Y2qTBLDDo/s320/USB+PICkit2+Unavailable.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5415347910758172754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/SycuPDuDPPI/AAAAAAAAAMQ/jjw97Q2net0/s1600-h/USB+Config+PICkit2+Filter.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 166px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/SycuPDuDPPI/AAAAAAAAAMQ/jjw97Q2net0/s320/USB+Config+PICkit2+Filter.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5415347913167682802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CJe_TZuR_n4/SycuPef942I/AAAAAAAAAMY/j2Gzm7jahkw/s1600-h/USB+PICkit2+Available.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 73px;" src="http://4.bp.blogspot.com/_CJe_TZuR_n4/SycuPef942I/AAAAAAAAAMY/j2Gzm7jahkw/s320/USB+PICkit2+Available.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5415347920356369250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;MPLAB Library Path needs setting&lt;/h3&gt;&lt;br /&gt;It is mentioned in the tutorial that the &lt;em&gt;Library Search Path&lt;/em&gt; will probably need to be set but I assumed that since I went with all defaults on my install that it would be already set.  It wasn't - I got a build error telling me that &lt;em&gt;c018i.o&lt;/em&gt; was not found.  I just went in to Build Options..., clicked on Directories tab, changed the drop-down to Library Search Path, and set the value to &lt;em&gt;C:\MCC18\lib&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/SycvnqtltpI/AAAAAAAAAMg/HFZ_xQeKebo/s1600-h/MPLAB+Library+Search+Path.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 174px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/SycvnqtltpI/AAAAAAAAAMg/HFZ_xQeKebo/s320/MPLAB+Library+Search+Path.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5415349435463218834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Run App using PICkit2 / USB Power&lt;/h3&gt;&lt;br /&gt;Just like the Tutorial said, you can say "Programmer -&gt; Release from Reset" to run the app that is in Flash on the PIC.  You can do "Programmer -&gt; Set Vdd Off" to turn the PIC off.  Neato - easy peasy.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CJe_TZuR_n4/Syc1LdY84CI/AAAAAAAAAMo/7shdDraTzj0/s1600-h/pickit2+power.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 194px;" src="http://3.bp.blogspot.com/_CJe_TZuR_n4/Syc1LdY84CI/AAAAAAAAAMo/7shdDraTzj0/s320/pickit2+power.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5415355547920424994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Run App using External Power&lt;/h3&gt;&lt;br /&gt;Once the PIC is programmed, you can remove the PICkit2 and plug in a 5V power supply.  Positive goes to pin 20 on the 18F2455 that I'm using and Ground goes to pins 8 and 19.  As soon as power is turned on, the app in Flash runs.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/Syc1LjlWAiI/AAAAAAAAAMw/jeoBPCjfous/s1600-h/power+supply.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 217px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/Syc1LjlWAiI/AAAAAAAAAMw/jeoBPCjfous/s320/power+supply.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5415355549583016482" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-8159396759041912348?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/8159396759041912348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=8159396759041912348&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/8159396759041912348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/8159396759041912348'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/12/first-time-with-mplab-and-pic.html' title='first time with MPLAB and PIC'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://2.bp.blogspot.com/_CJe_TZuR_n4/SycuO6vlCFI/AAAAAAAAAMI/I_Y2qTBLDDo/s72-c/USB+PICkit2+Unavailable.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-483466244202254083</id><published>2009-11-23T22:35:00.001Z</published><updated>2009-11-23T22:35:42.695Z</updated><title type='text'>Samuel having great 10th</title><content type='html'>       &lt;div style='padding: 5px 5px 10px 5px; margin-top: 5px; border: 1px solid #ddd; background-color: #fff;line-height: 16px;'&gt;       &lt;div style="float: left; margin-right: 5px; overflow: visible;"&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/dyRaYXgJ0QUw2UK6vT4AJf9L7DSB1Je2l0EH7E7S8HlyvxrGXiEhjrEK9gCG/video-2009-11-23-15-05-36.3gp' style='color: #bc7134;'&gt;&lt;img src='http://posterous.com/images/filetypes/unknown.png' style='border: none;'/&gt;&lt;/a&gt;&lt;/div&gt;       &lt;div style="font-size: 10px; color: #424037;line-height: 16px;"&gt;Download now or &lt;a href='http://mrtidy.posterous.com/samuel-having-great-10th' style='color: #bc7134;'&gt;watch on posterous&lt;/a&gt;&lt;/div&gt;       &lt;b&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/dyRaYXgJ0QUw2UK6vT4AJf9L7DSB1Je2l0EH7E7S8HlyvxrGXiEhjrEK9gCG/video-2009-11-23-15-05-36.3gp' style='color: #bc7134;'&gt;video-2009-11-23-15-05-36.3gp&lt;/a&gt;&lt;/b&gt; &lt;span style="font-size: 10px; color: #424037;"&gt;(631 KB)&lt;/span&gt;       &lt;br style="clear: both;"/&gt;&lt;/div&gt;       &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/samuel-having-great-10th"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-483466244202254083?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/483466244202254083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=483466244202254083&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/483466244202254083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/483466244202254083'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/11/samuel-having-great-10th.html' title='Samuel having great 10th'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-2895500650093980959</id><published>2009-10-29T21:12:00.001Z</published><updated>2009-10-29T21:12:27.561Z</updated><title type='text'>isaac in office</title><content type='html'>&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/fN22GvFh6g3SsfoYWATolBHXBqpGSvJT4fQAwNDdzjpsRebaPywF0kBWn3kB/2009-10-29_15.09.02.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/UiO1p8SkS2xSeNOcbASP4643LnfkFaRs9HDs5wGB45AY8ybXhwDaL7QZE98c/2009-10-29_15.09.02.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;I suppose this is the real reason Isaac cleaned the office - he has set up his computer and is now &amp;#39;working&amp;#39; with me.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/isaac-in-office"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2895500650093980959?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2895500650093980959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2895500650093980959&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2895500650093980959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2895500650093980959'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/isaac-in-office.html' title='isaac in office'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-1215478774523421170</id><published>2009-10-29T19:55:00.001Z</published><updated>2009-10-29T19:55:57.473Z</updated><title type='text'>Old work swag</title><content type='html'>&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/6Vw0vHsfiKt5hlZhSfmHskiKvZ8GhaJPowtaYX8AgqfnGfoFw56uvDCLk4o3/2009-10-29_13.48.01.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/709J2g6TeSjzK58AQp5rbYUeYJq79dNKXREE6CaOJSBPjlKYFru3651tocXw/2009-10-29_13.48.01.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;Isaac bumped into that while cleaning my office.  Fun fun.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/old-work-swag"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1215478774523421170?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1215478774523421170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1215478774523421170&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1215478774523421170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1215478774523421170'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/old-work-swag.html' title='Old work swag'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-888340485139776928</id><published>2009-10-25T00:31:00.001Z</published><updated>2009-10-25T00:31:46.371Z</updated><title type='text'>Bad picture</title><content type='html'>&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/HgeOJSmlqzkF9TSOCH07YsgUDmgixdBHtEXrt55zYdS5O6JDpo03bOqczLOt/2009-10-24_18.29.11.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/rfQRhCB0shLFLjJ2FWdgkqKMEYTwQoAQ890EE0P87yABMWRw5H9YYVGNHCkK/2009-10-24_18.29.11.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;Can you tell what Samuel is doing?&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/bad-picture"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-888340485139776928?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/888340485139776928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=888340485139776928&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/888340485139776928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/888340485139776928'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/bad-picture.html' title='Bad picture'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-2915828488555991514</id><published>2009-10-25T00:25:00.001Z</published><updated>2009-10-25T00:25:44.469Z</updated><title type='text'>Awesome costumes</title><content type='html'>&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/NDa8AyzmEzURmi7fRXJupidYhftaVEDn1CpQMGyN78ENI4nTtsp5oBr66TIR/2009-10-24_18.22.40.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/9d1g85o6DDWSiIyZDAggBGGj5OcupfrD5l5pdl3fghbYhrJYMSuKhD5kxUGR/2009-10-24_18.22.40.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;Lots of great costumes!&lt;br /&gt; &lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/awesome-costumes-1"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2915828488555991514?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2915828488555991514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2915828488555991514&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2915828488555991514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2915828488555991514'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/awesome-costumes.html' title='Awesome costumes'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-4780402151724520852</id><published>2009-10-21T18:12:00.001Z</published><updated>2009-10-21T18:12:46.277Z</updated><title type='text'>Company lunch - bye Ken</title><content type='html'>&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/ZrhOCyP1jd2huoiTXB9e2VMmgCsaeYC0fWuJ3XbxuA4xWWu4oEyIUzKcyfCq/2009-10-21_12.11.13.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/9cmQgMQZwpBJyCpjENP8ABN1OPkICn0lPhZ61x85cTbHAlDebaQFFjc4CpMx/2009-10-21_12.11.13.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt;  &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/company-lunch-bye-ken"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4780402151724520852?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4780402151724520852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4780402151724520852&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4780402151724520852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4780402151724520852'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/company-lunch-bye-ken.html' title='Company lunch - bye Ken'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-2380740043927802428</id><published>2009-10-14T02:28:00.001Z</published><updated>2009-10-14T02:28:58.352Z</updated><title type='text'>Thor RockSim (Crikey)</title><content type='html'>&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/rWgeOBgMw6xV7lAsPC9rehkUrdyvgIc9qh7jObLE3RCcDjexRrbCgqorgNw6/thor.png'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/bBOBE0JYbDieZcZcygOpuqclf3fC42Q4jgQ8NRuIdIqUdRdcTyvVXeTa7Pls/thor.png.scaled.500.jpg" width="500" height="147"/&gt;&lt;/a&gt; &lt;p&gt;Reminding Greg what BSD Thor looks like.  Rocket name is Crikey.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/thor-rocksim-crikey"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2380740043927802428?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2380740043927802428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2380740043927802428&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2380740043927802428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2380740043927802428'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/thor-rocksim-crikey.html' title='Thor RockSim (Crikey)'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-2920756975230111446</id><published>2009-10-12T04:12:00.001Z</published><updated>2009-10-12T04:12:35.630Z</updated><title type='text'>rocket repairs and thor</title><content type='html'>I am a huge fan of the kits from Semroc and my Explorer and Arcas have been flying for a couple years.  My most recent flight on the Arcas used an F42T and 2 of the fins were ripped off.  I was never real happy with my fin alignment on the Arcas so I took the opportunity to remove all the fins and reseat them.  The fins are all in place and this time I used a bit more epoxy and fiberglass filler.  The Arcas is in serious need of a paint job but I think that these fins will be solid!&lt;p /&gt;&lt;div&gt;The Explorer had a cracked fillet.  The crack survived a few flights on E motors but I wouldn&amp;#39;t be confident putting an F in it as it was.  I ground out the old fillet, sanded, and then put in a few fillet.  I love this rocket and have flown it at many parks and both NCR launch sites.  I plan to fly it at the Nov NCR launch (if my Shanelle lets me go).&lt;/div&gt; &lt;p /&gt;&lt;div&gt;I&amp;#39;m finally making progress on the Thor.  Curtis has been making a lot of noise and I&amp;#39;m even thinking he really is going to get the airframe to me.  I used JB Weld to attach the fins to the motor mount tube and am now in the process of putting in large JB Weld fillets.  Sometime in the near future, Warren M is going to help me do tip to tip fiberglassing on the fins and then when the airframe arrives it will pretty much just slip on.&lt;/div&gt; &lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/8FvqbvVEhA8FlJqOJAS0AseMEC9OfunajWqHNTXPXbtGxKxHgItAJN8uqewW/arcas_repair_20091011.jpg" width="248" height="400"/&gt; &lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/75Mb2xzxgQJGlWggYykWbEXu5V63MGmV54gYAWp1TIkVFeAjRgDEkAVHrgv2/explorer_repair_20091011.jpg" width="270" height="400"/&gt; &lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/RPfve6s2PnrsWiFpqzOAQoLDVP4OZPYAmTCgKMmBYIU0yhBkAVC0YJH1oxT7/thor_fins_20091011.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/PiuBgqE3hY6h8EbY162vXu5UV3QW1RR46rdbTdRp5uRn9v4Zu4IiAWye1Oir/thor_fins_20091011.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;div&gt;&lt;a href='http://mrtidy.posterous.com/rocket-repairs-and-thor'&gt;See and download the full gallery on posterous&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/rocket-repairs-and-thor"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2920756975230111446?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2920756975230111446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2920756975230111446&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2920756975230111446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2920756975230111446'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/rocket-repairs-and-thor.html' title='rocket repairs and thor'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-5065930014765964975</id><published>2009-10-08T20:10:00.001Z</published><updated>2009-10-08T20:10:19.062Z</updated><title type='text'>Snowing a bit in Boulder</title><content type='html'>&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/6yL6C1qglAaZuoo8ZrdU7XeIQG4KPEhp3YwWDpRuEJBtBIOZpB3qUxFWYodz/2009-10-08_14.06.37.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/zYfATbOA0oKfdzkrUzRy0lThIkI5ESlyrHhnSYMH2ZsBugeZJnCawNV4qFIB/2009-10-08_14.06.37.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;That&amp;#39;s not keeping Zoe from checking for rabbits during break-time.  She&amp;#39;s found a couple this week but, fortunately for me, hasn&amp;#39;t caught any.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/snowing-a-bit-in-boulder"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-5065930014765964975?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/5065930014765964975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=5065930014765964975&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5065930014765964975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5065930014765964975'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/snowing-bit-in-boulder.html' title='Snowing a bit in Boulder'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-6278132620727458344</id><published>2009-10-05T02:16:00.003Z</published><updated>2009-10-05T02:25:44.858Z</updated><title type='text'>App Engine Redirects - some good some bad</title><content type='html'>I'm working on authn and authz for my app that uses App Engine.  I was hoping to force HTTPS and make it so DELETE was only available App Engine administrator (i.e. me and others on the project).  The force of HTTPS is obviously done in config and I would prefer the DELETE authz info in config as well because it would save a lot of coding.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; &amp;lt;security-constraint&gt;&lt;br /&gt;  &amp;lt;web-resource-collection&gt;&lt;br /&gt;   &amp;lt;web-resource-name&gt;default&amp;lt;/web-resource-name&gt;&lt;br /&gt;   &amp;lt;url-pattern&gt;/*&amp;lt;/url-pattern&gt;&lt;br /&gt;  &amp;lt;/web-resource-collection&gt;&lt;br /&gt;  &amp;lt;user-data-constraint&gt;&lt;br /&gt;   &amp;lt;transport-guarantee&gt;CONFIDENTIAL&amp;lt;/transport-guarantee&gt;&lt;br /&gt;  &amp;lt;/user-data-constraint&gt;&lt;br /&gt; &amp;lt;/security-constraint&gt;&lt;br /&gt; &amp;lt;security-constraint&gt;&lt;br /&gt;  &amp;lt;web-resource-collection&gt;&lt;br /&gt;   &amp;lt;web-resource-name&gt;admin&amp;lt;/web-resource-name&gt;&lt;br /&gt;   &amp;lt;url-pattern&gt;/buckets/200908/bucket/*&amp;lt;/url-pattern&gt;&lt;br /&gt;   &amp;lt;http-method&gt;DELETE&amp;lt;/http-method&gt;&lt;br /&gt;  &amp;lt;/web-resource-collection&gt;&lt;br /&gt;  &amp;lt;auth-constraint&gt;&lt;br /&gt;   &amp;lt;role-name&gt;admin&amp;lt;/role-name&gt;&lt;br /&gt;  &amp;lt;/auth-constraint&gt;&lt;br /&gt; &amp;lt;/security-constraint&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;After setting that in my web.xml file and deploying, I was able to immediately curl and browse and verify that http redirects to https.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ curl -i -X GET http://mrtidy.appspot.com/buckets/200908/bucket/&lt;br /&gt;HTTP/1.1 302 Found&lt;br /&gt;Location: https://mrtidy.appspot.com/buckets/200908/bucket/&lt;br /&gt;Date: Mon, 05 Oct 2009 02:14:42 GMT&lt;br /&gt;Content-Type: text/html&lt;br /&gt;Server: Google Frontend&lt;br /&gt;Content-Length: 0&lt;br /&gt;X-XSS-Protection: 0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Super duper.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ curl -i -X DELETE https://mrtidy.appspot.com/buckets/200908/bucket/1&lt;br /&gt;HTTP/1.1 302 Found&lt;br /&gt;Location: https://www.google.com/accounts/ServiceLogin?service=ah&amp;continue=https://mrtidy.appspot.com/_ah/login%3Fcontinue%3Dhttps://mrtidy.appspot.com/buckets/200908/bucket/1&amp;ltmpl=gm&amp;ahname=...2&lt;br /&gt;Date: Mon, 05 Oct 2009 02:22:26 GMT&lt;br /&gt;Content-Type: text/html&lt;br /&gt;Server: Google Frontend&lt;br /&gt;Content-Length: 0&lt;br /&gt;X-XSS-Protection: 0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I was hoping for a 403 there.  I guess it isn't &lt;em&gt;bad&lt;/em&gt; but I don't like it that an auth failure gives a 302 status rather than 403.  Thinking about now whether I want to stick with this convenience or move the authz for DELETE to code and return my 403 status.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-6278132620727458344?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/6278132620727458344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=6278132620727458344&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6278132620727458344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6278132620727458344'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/app-engine-redirects-some-good-some-bad.html' title='App Engine Redirects - some good some bad'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-1085058633873025942</id><published>2009-10-04T21:06:00.001Z</published><updated>2009-10-04T21:06:07.151Z</updated><title type='text'>Beautiful in Broomfield!</title><content type='html'>&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/0K9h2wx5ob6ReS2O7i3H9eSOrRhwR5V0MtBBlCOAOkmryYQyYFV6ZfMr8YtT/2009-10-04_14.59.28.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/7Ss8gqHIZf0opR7ZDS5TnCaMGMV8IzVgyvuddMC3lqz0dTC4Kl7u5Ov86PXo/2009-10-04_14.59.28.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;Terrible weather at the launch site this morning but it is great in Broomfield.  I think Zoe is pleased at having to ditch the launch early and come home to play.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/beautiful-in-broomfield"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1085058633873025942?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1085058633873025942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1085058633873025942&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1085058633873025942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1085058633873025942'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/beautiful-in-broomfield.html' title='Beautiful in Broomfield!'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-1689443038241875110</id><published>2009-10-04T18:10:00.001Z</published><updated>2009-10-04T18:10:11.747Z</updated><title type='text'>Waver closed NCR 20091004</title><content type='html'>&lt;p&gt;Bad weather again this morning so the waver was closed and we&amp;#39;ve taken down the pads.  Vendors are gone too.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/waver-closed-ncr-20091004"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1689443038241875110?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1689443038241875110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1689443038241875110&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1689443038241875110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1689443038241875110'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/10/waver-closed-ncr-20091004.html' title='Waver closed NCR 20091004'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-5376258575205793653</id><published>2009-09-26T17:47:00.001Z</published><updated>2009-09-26T17:47:23.026Z</updated><title type='text'>Public Road Trailhead</title><content type='html'>&lt;p&gt;Beautiful day in Colorado so we tried a new-to-us trail by home.&lt;/p&gt; &lt;p&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/jiw1JKwhLEdZCvfe2OQo9yhgC3GGPuHgq3iFvCs07RInRntYPclqqAZyWzf4/2009-09-26_11.38.18.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/4yMQnzweObDg15ePulFZWmbmkFiKnsY9ccfAKyZx8sO5llrIBpbDLdpHrHjv/2009-09-26_11.38.18.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/T58Rn2eWBiR3jNlpTrqpWzQCbJr6zBBuD0lv8DP9ADT5TToWPiIucMem16ZP/2009-09-26_11.26.36.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/qgTVENEK7MyTxWJO1V4MBhVGrE9cwMYqHXaLApW9HqCibs1iMtDuo61BL3yO/2009-09-26_11.26.36.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/xyb1yNENwVTwDDdE4gwZD1fDBKjLTNDX5Gmj3lEE1ZohB3yKxvavhNKF2fbb/2009-09-26_11.17.59.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/LhCvkTUXUnN6cCRqKecxUxOIsoRtrjfxI71rlYx9mpW3VwBY28Bcb7TPBog9/2009-09-26_11.17.59.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/BHhOHUI0U2yxsX781adYNwW945IGUcMqQNUiaJu30eKmoLgU0DbCM4hj3PdD/2009-09-26_11.08.21.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/7YSQHX1WZJyqIBlrMaj41pNCyZr1OeR5EA0wGyzMPRCfm8IGhwKNexv9FOsa/2009-09-26_11.08.21.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;div&gt;&lt;a href='http://mrtidy.posterous.com/public-road-trailhead'&gt;See and download the full gallery on posterous&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/public-road-trailhead"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-5376258575205793653?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/5376258575205793653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=5376258575205793653&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5376258575205793653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5376258575205793653'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/09/public-road-trailhead.html' title='Public Road Trailhead'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-7637504571888101492</id><published>2009-09-19T21:17:00.001Z</published><updated>2009-09-19T21:17:05.417Z</updated><title type='text'>Beautiful day at berry patch</title><content type='html'>&lt;p&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/ZFsf4FXBwAroLR9vSO8ncVAf31ZApJi7LDRcdEQcFkuExOJRPkor9ik4kWJo/2009-09-19_15.01.06.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/pIYlOIRJ6jgwWKFYDpDgY2MMjRrFcUmRRgYHtdaVS01PCOwv4T5uLkCFX95r/2009-09-19_15.01.06.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/DCYFIUWEZFDVu48Ueuoba7M3TerGu08xbRJqcyUoX9C4RqNv7gpUznW66Zxx/2009-09-19_15.01.00.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/PBDTwAgs7NArCp56K0xTqPz4daGdhlPKNkQ9XZz0o9TAWpmHgrzdGWzRwzJq/2009-09-19_15.01.00.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/iUSZPakvLFwmMwhrPwQHVqhMEJv2I7YIFnnTvinqBZvWfdzf4fmDFNOR6AFq/2009-09-19_14.30.37.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/DCHcn7WaR77l3m8mm9djphKJ8zBZMHFnHIImgA7dB35hjkLHEZR0JFAiOkqg/2009-09-19_14.30.37.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;a href='http://mrtidy.posterous.com/beautiful-day-at-berry-patch'&gt;See and download the full gallery on posterous&lt;/a&gt;&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/beautiful-day-at-berry-patch"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7637504571888101492?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7637504571888101492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7637504571888101492&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7637504571888101492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7637504571888101492'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/09/beautiful-day-at-berry-patch.html' title='Beautiful day at berry patch'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-2323495112954129416</id><published>2009-09-19T00:08:00.001Z</published><updated>2009-09-19T00:08:40.466Z</updated><title type='text'>Flat Irons Mall</title><content type='html'>&lt;a href='http://posterous.com/getfile/files.posterous.com/mrtidy/ah41CClR2c5awpevBYc2BuXdvUKqc8c2mwAqav70Z9vTJ2sS0ouEFjr5TP4t/2009-09-18_18.01.39.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/mrtidy/2GCjBauet7NwruoDIneGymppLbZRarffTZraEetNktWwLPqVcoHr3S20mEb6/2009-09-18_18.01.39.jpg.scaled.500.jpg" width="500" height="375"/&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;Flat Irons has changed a lot since last time here.  Like the toys.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/flat-irons-mall"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2323495112954129416?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2323495112954129416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2323495112954129416&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2323495112954129416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2323495112954129416'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/09/flat-irons-mall.html' title='Flat Irons Mall'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-3956911344500780876</id><published>2009-09-19T00:03:00.001Z</published><updated>2009-09-19T00:03:10.227Z</updated><title type='text'>Untitled</title><content type='html'>&lt;p&gt;Flat Irons mall has changed a lot.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/4197329"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3956911344500780876?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3956911344500780876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3956911344500780876&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3956911344500780876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3956911344500780876'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/09/untitled.html' title='Untitled'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-347236073799283057</id><published>2009-09-18T04:58:00.001Z</published><updated>2009-09-18T04:58:14.695Z</updated><title type='text'>gas overnight</title><content type='html'>James says mixes that use Mg or Al (possibly any metals?) mix til &lt;br /&gt;change then gas overnight - good for density and also splits process &lt;br /&gt;to 2 days. &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://mrtidy.posterous.com/gas-overnight"&gt;mrtidy's posterous&lt;/a&gt; &lt;/p&gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-347236073799283057?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/347236073799283057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=347236073799283057&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/347236073799283057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/347236073799283057'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/09/gas-overnight.html' title='gas overnight'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-1215153719655922083</id><published>2009-09-15T05:42:00.003Z</published><updated>2009-09-15T05:49:25.680Z</updated><title type='text'>Deer at the Office</title><content type='html'>I was attempting to take a picture of the giant deer resting by the truck but you can't see it at all (well, you can see it's butt but the head and antlers were the impressive part).  I thought the picture turned out nice so I'm posting it :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/Sq8qw2Vo7QI/AAAAAAAAALw/u5BvvKli6S4/s1600-h/deerAtOffice.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/Sq8qw2Vo7QI/AAAAAAAAALw/u5BvvKli6S4/s320/deerAtOffice.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5381567098439396610" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1215153719655922083?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1215153719655922083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1215153719655922083&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1215153719655922083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1215153719655922083'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/09/deer-at-office.html' title='Deer at the Office'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://1.bp.blogspot.com/_CJe_TZuR_n4/Sq8qw2Vo7QI/AAAAAAAAALw/u5BvvKli6S4/s72-c/deerAtOffice.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-4072379873637383791</id><published>2009-09-03T04:49:00.002Z</published><updated>2009-09-03T04:58:45.404Z</updated><title type='text'>trouble with ViewFlipper</title><content type='html'>I got totally side-tracked in my Android app trying to do a quick implementation of onFling.  The intent was to not have to worry about my GridView filling up with buckets - I thought I could just max out the current view at 9 and implement onFling to take in the swipe gesture from the user to move over and look at the next (or previous) 9 buckets.&lt;br /&gt;&lt;br /&gt;My first surprise was that it was harder than I expected!  I shouldn't have been surprised :)  Seriously, I thought that I could just wrap my existing view with the ViewFlipper and provide an index for 'paging'.  I ended up implementing (hard-coding) 3 static pages with the intention of just ignoring the swipe if there weren't any next / previous screens.  My second surprise was that I couldn't get the onFling / GestureDetector to fire.  I thought I had grown a solid understanding of Android but sheesh - this should be trivial stuff.&lt;br /&gt;&lt;br /&gt;Added to onCreate&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        mViewFlipper = (ViewFlipper) findViewById(R.id.main_flipper);&lt;br /&gt;        mGestureDetector = new GestureDetector(new FlingGestureDetector());&lt;br /&gt;        mGestureListener = new OnTouchListener() {&lt;br /&gt;            public boolean onTouch(View v, MotionEvent event) {&lt;br /&gt;                Log.d(getClass().getSimpleName(), "HERE onTouch");&lt;br /&gt;                if (mGestureDetector.onTouchEvent(event)) {&lt;br /&gt;                    return true;&lt;br /&gt;                }&lt;br /&gt;                return false;&lt;br /&gt;            }&lt;br /&gt;        };&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then I added this inner class.  Just a quick reminder, this doesn't currently work - I'm just recording the notes here.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    class FlingGestureDetector extends SimpleOnGestureListener {&lt;br /&gt;        @Override&lt;br /&gt;        public boolean onFling(MotionEvent eventStart, MotionEvent eventEnd, float velocity, float unusedVelocity) {&lt;br /&gt;            Log.i(getClass().getSimpleName(), "onFling (" + eventStart + ", " + eventEnd + ", " + velocity + ")");&lt;br /&gt;&lt;br /&gt;            try {&lt;br /&gt;                if (Math.abs(eventStart.getY() - eventEnd.getY()) &gt; FLING_MAX_DEVIATION) {&lt;br /&gt;                    Log.d(MainActivity.class.getSimpleName(), "onFling too much Y in motion, not fling");&lt;br /&gt;                    return false;&lt;br /&gt;                }&lt;br /&gt;                if (eventStart.getX() - eventEnd.getX() &gt; FLING_MIN_DISTANCE &amp;&amp; Math.abs(velocity) &gt; FLING_MIN_VELOCITY) {&lt;br /&gt;                    mViewFlipper.setInAnimation(AnimationUtils.makeInAnimation(MainActivity.this, true));&lt;br /&gt;                    mViewFlipper.setOutAnimation(AnimationUtils.makeOutAnimation(MainActivity.this, true));&lt;br /&gt;                    mViewFlipper.showNext();&lt;br /&gt;                } else if (eventEnd.getX() - eventStart.getX() &gt; FLING_MIN_DISTANCE &amp;&amp; Math.abs(velocity) &gt; FLING_MIN_VELOCITY) {&lt;br /&gt;                    mViewFlipper.setInAnimation(AnimationUtils.makeInAnimation(MainActivity.this, false));&lt;br /&gt;                    mViewFlipper.setOutAnimation(AnimationUtils.makeOutAnimation(MainActivity.this, false));&lt;br /&gt;                    mViewFlipper.showPrevious();&lt;br /&gt;                }&lt;br /&gt;            } catch (Exception e) {&lt;br /&gt;                Log.w(MainActivity.class.getSimpleName(), "onFling ignoring unexpected exception: " + e);&lt;br /&gt;            }&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    OnTouchListener mGestureListener;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Most people will probably just have the 1 page of buckets but for the&lt;br /&gt;     * people lucky enough to have more than 9 / 12 / whatever the number is,&lt;br /&gt;     * they can fling thru the pages.&lt;br /&gt;     */&lt;br /&gt;    private int mViewIndex = 0;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Blah blah blah - just a distraction.  I need to get back to fixing sync'ing and adding buckets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4072379873637383791?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4072379873637383791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4072379873637383791&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4072379873637383791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4072379873637383791'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/09/trouble-with-viewflipper.html' title='trouble with ViewFlipper'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-8867599820690575125</id><published>2009-08-28T19:04:00.001Z</published><updated>2009-08-28T19:06:01.771Z</updated><title type='text'>Create ISO on Mac OS X</title><content type='html'>This should have been obvious to me but it wasn't so I'm blogging it to make sure I remember.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo umount /dev/disk1&lt;br /&gt;dd if=/dev/disk1 of=~/Desktop/mydisk.iso bs=2048&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-8867599820690575125?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/8867599820690575125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=8867599820690575125&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/8867599820690575125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/8867599820690575125'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/08/create-iso-on-mac-os-x.html' title='Create ISO on Mac OS X'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-6650367085401541754</id><published>2009-08-14T06:26:00.000Z</published><updated>2009-08-14T06:27:20.495Z</updated><title type='text'>hg clone with tag</title><content type='html'>&lt;pre&gt;&lt;br /&gt;hg clone -r WithSplits https://bergl@bitbucket.org/madsidy/buckfiiglaasd/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Golly, that's good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-6650367085401541754?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/6650367085401541754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=6650367085401541754&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6650367085401541754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6650367085401541754'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/08/hg-clone-with-tag.html' title='hg clone with tag'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-2066805919456702310</id><published>2009-07-24T03:20:00.001Z</published><updated>2009-07-24T09:01:48.141Z</updated><title type='text'>upgraded to Android SDK 1.5r3 - perm problems</title><content type='html'>I upgraded to SDK 1.5r3 and updated my /usr/local/android link and then got errors in Eclipse: my projects wouldn't compile.  I checked the error log and got distracted by an error that doesn't even matter:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Plug-in com.android.ide.eclipse.adt was unable to load class com.android.ide.eclipse.adt.project.NewXmlFileWizardAction.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The real problem with the SDK was that the $ANDROID_HOME/tools and $ANDROID_HOME/platforms/android_1.5/tools contained important executables but the files weren't actually executable.  I did 'sudo chmod 755 *' in the tools directories and restarted Eclipse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2066805919456702310?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2066805919456702310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2066805919456702310&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2066805919456702310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2066805919456702310'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/07/upgraded-to-android-sdk-15r3-perm.html' title='upgraded to Android SDK 1.5r3 - perm problems'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-4992833060447698402</id><published>2009-07-23T19:32:00.003Z</published><updated>2009-07-24T03:55:14.893Z</updated><title type='text'>MercurialEclipse plugin has Finish disabled</title><content type='html'>If you're using the MercurialEclipse plugin and you attempt to Pull + Merge with un-committed changes, the Finish button will be disabled.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CJe_TZuR_n4/SmkwkpdZzDI/AAAAAAAAALo/bs04FGBnXLo/s1600-h/finishGhostedWhenMergeSelected.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 318px; height: 320px;" src="http://3.bp.blogspot.com/_CJe_TZuR_n4/SmkwkpdZzDI/AAAAAAAAALo/bs04FGBnXLo/s320/finishGhostedWhenMergeSelected.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5361870237523889202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can either Pull without Merge, which Mercurial will put into your local repository but you'll then have to merge manually later, or you can Cancel, check-in your current work, and then Pull with Merge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4992833060447698402?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4992833060447698402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4992833060447698402&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4992833060447698402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4992833060447698402'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/07/mercurialeclipse-plugin-has-finish.html' title='MercurialEclipse plugin has Finish disabled'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://3.bp.blogspot.com/_CJe_TZuR_n4/SmkwkpdZzDI/AAAAAAAAALo/bs04FGBnXLo/s72-c/finishGhostedWhenMergeSelected.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-3769435866334488459</id><published>2009-07-14T20:45:00.001Z</published><updated>2009-07-15T06:10:09.422Z</updated><title type='text'>options for viewing changeset history</title><content type='html'>We switched to &lt;a href="http://bitbucket.org/"&gt;BitBucket&lt;/a&gt; / &lt;a href="http://mercurial.selenic.com/wiki/"&gt;Mercurial&lt;/a&gt; for the Android application.  Although I've been using Mercurial for a long time as an individual, this is my first attempt at Hg in a team environment.  I'm dazzled by BitBucket - great UI and been real smooth so far.&lt;br /&gt;&lt;br /&gt;It isn't obvious how to see what files have changed in the various changesets.  The options are to use the UI in BitBucket or to use the Team -&gt; History view in Eclipse.  It's nice to have everything in Eclipse, so that the main option for me: right click in Package Explorer -&gt; Team -&gt; Show History.  If you don't already have the History view open, it will open up and show the history for your local repository.  To see the files affected, click on the bullet-point looking icon in the upper right (the tooltip is 'Show Affected Paths').&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CJe_TZuR_n4/Sl0_AwLkoeI/AAAAAAAAALY/FJkuFqkSeXQ/s1600-h/changesetFiles.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 73px;" src="http://3.bp.blogspot.com/_CJe_TZuR_n4/Sl0_AwLkoeI/AAAAAAAAALY/FJkuFqkSeXQ/s320/changesetFiles.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5358508413806748130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's a clip of what it looks like in BitBucket - easy there, click on the changesets tab and then pick a changeset to view.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/Sl1AZutbSNI/AAAAAAAAALg/8BMoojpJz_8/s1600-h/changesetFilesBB.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 86px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/Sl1AZutbSNI/AAAAAAAAALg/8BMoojpJz_8/s320/changesetFilesBB.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5358509942420228306" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3769435866334488459?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3769435866334488459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3769435866334488459&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3769435866334488459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3769435866334488459'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/07/options-for-viewing-changeset-history.html' title='options for viewing changeset history'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://3.bp.blogspot.com/_CJe_TZuR_n4/Sl0_AwLkoeI/AAAAAAAAALY/FJkuFqkSeXQ/s72-c/changesetFiles.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-5686065046384455550</id><published>2009-07-09T09:05:00.002Z</published><updated>2009-07-09T09:14:11.652Z</updated><title type='text'>migrating SVN history to Mercurial in BitBucket</title><content type='html'>I started setting up a Mercurial server tonight using http://mercurial.selenic.com/wiki/HgWebDirStepByStep and http://mercurial.selenic.com/wiki/RHEL4HgWebDirSetup  I got pretty far in and realized there was still a long way to go and I would only have a partially working solution.  The easier way to test Mercurial for our team would be with &lt;a href="http://bitbucket.org/"&gt;BitBucket&lt;/a&gt;.  The steps I did to create my own server are shown below just for historical reasons.&lt;br /&gt;&lt;br /&gt;BitBucket supports private projects, has the Web interface for Hg already set up, and has a wiki and bug tracker available.  I created an account (traditional because I couldn't get my OpenID URL working - I'm slow), set up a private repository, and then 'pushed' in our existing source.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ mkdir buckets&lt;br /&gt;$ hg convert svn+ssh://[my svn server].org/svn/buckets buckets&lt;br /&gt;$ cd buckets&lt;br /&gt;$ hg push https://[my username]@bitbucket.org/[my username]/[my private repo]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;At this point, the BitBucket Overview and my private news feed show the repo history.  Good stuff!&lt;br /&gt;&lt;br /&gt;What I was doing...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ wget http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm&lt;br /&gt;$ sudo rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt&lt;br /&gt;$ sudo rpm -K rpmforge-release-0.3.6-1.el5.rf.*.rpm&lt;br /&gt;$ sudo rpm -i rpmforge-release-0.3.6-1.el5.rf.*.rpm&lt;br /&gt;$ sudo yum install mercurial&lt;br /&gt;$ sudo yum install httpd&lt;br /&gt;$ cd&lt;br /&gt;$ wget http://selenic.com/repo/hg-stable/archive/tip.tar.gz&lt;br /&gt;$ tar xzf Mercurial-stable-branch--*.tar.gz&lt;br /&gt;$ sudo mkdir /var/www/cgi-hg&lt;br /&gt;$ sudo cp Mercurial-stable-branch--*/hgwebdir.cgi /var/www/cgi-hg &amp;&amp; sudo chmod +x /var/www/cgi-hg/hgwebdir.cgi&lt;br /&gt;$ sudo vi /etc/httpd/conf.d/hg.conf&lt;br /&gt;ScriptAliasMatch        ^/hg(.*)        /var/www/cgi-hg/hgwebdir.cgi$1&lt;br /&gt;&lt;br /&gt;&amp;lt;Directory /var/www/cgi-hg/&gt;&lt;br /&gt;        Options ExecCGI FollowSymLinks&lt;br /&gt;        AllowOverride None&lt;br /&gt;&amp;lt;/Directory&gt;&lt;br /&gt;^d&lt;br /&gt;$ sudo touch /var/www/cgi-hg/hgweb.config&lt;br /&gt;$ sudo /etc/init.d/httpd start&lt;br /&gt;$ sudo chmod 755 /var/log/httpd&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-5686065046384455550?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/5686065046384455550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=5686065046384455550&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5686065046384455550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5686065046384455550'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/07/migrating-svn-history-to-mercurial-in.html' title='migrating SVN history to Mercurial in BitBucket'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-4562282856266558595</id><published>2009-06-14T22:40:00.003Z</published><updated>2009-06-14T23:06:18.840Z</updated><title type='text'>Android logs with ADT (LogCat)</title><content type='html'>The LogCat view is on by default in the Debug perspective.  I noticed that even when I'm not debugging the view is getting updates from the application running in the emulator.  I added the LogCat view to my Java perspective so I can see it anytime.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/SjV9MWCY2HI/AAAAAAAAALI/06VZRozbtnI/s1600-h/LogCat.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 126px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/SjV9MWCY2HI/AAAAAAAAALI/06VZRozbtnI/s320/LogCat.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5347317783599831154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the clip above, you can see that the LogCat view defaults in with the Problems, Console, and other views in the bottom-right.  I like it there.  The second column in the view shows the logging level; this level comes from the method called on the Log object.  Here are the clips from my code that correspond to the 'I' messages.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Log.i("ListBuckets", "Setting up grid.");&lt;br /&gt;GridView g = (GridView) findViewById(R.id.bucket_list);&lt;br /&gt;g.setAdapter(new ImageAdapter(this, mBucketsDb.fetchAllBuckets()));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Above, I used just a plain string for the 'tag'; this seems like the common approach in the Android sample code.  Below, I went to my more normal use of using the class as the tag.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void onCreate(SQLiteDatabase db) {&lt;br /&gt; Log.i(BucketsDbAdapter.class.toString(), "Creating fresh database.");&lt;br /&gt; db.execSQL(DATABASE_CREATE);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To add the LogCat view to the Java perspective:&lt;br /&gt;1. open the workspace that houses your projects&lt;br /&gt;2. Window -&gt; Show View -&gt; Other...&lt;br /&gt;3. expand the Android tree node and select LogCat&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/SjWCWYeIo8I/AAAAAAAAALQ/BEVNnX2ANFk/s1600-h/AddViewLogCat.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 232px; height: 320px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/SjWCWYeIo8I/AAAAAAAAALQ/BEVNnX2ANFk/s320/AddViewLogCat.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5347323453609911234" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4562282856266558595?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4562282856266558595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4562282856266558595&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4562282856266558595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4562282856266558595'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/06/android-logs-with-adt-logcat.html' title='Android logs with ADT (LogCat)'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://1.bp.blogspot.com/_CJe_TZuR_n4/SjV9MWCY2HI/AAAAAAAAALI/06VZRozbtnI/s72-c/LogCat.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-7218754962810541680</id><published>2009-06-10T19:24:00.002Z</published><updated>2009-06-10T19:26:46.269Z</updated><title type='text'>Ike learning to IM</title><content type='html'>Isaac is 8 now so he is anxious to get online.  He started using Pidgin yesterday and he's doing great.  Here's a clip - he's even using smiley's :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/SjAI6OyTzGI/AAAAAAAAALA/Y7Q4bvfWyaw/s1600-h/ike-im-20090610.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 108px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/SjAI6OyTzGI/AAAAAAAAALA/Y7Q4bvfWyaw/s320/ike-im-20090610.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5345782554183322722" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7218754962810541680?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7218754962810541680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7218754962810541680&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7218754962810541680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7218754962810541680'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/06/ike-learning-to-im.html' title='Ike learning to IM'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://2.bp.blogspot.com/_CJe_TZuR_n4/SjAI6OyTzGI/AAAAAAAAALA/Y7Q4bvfWyaw/s72-c/ike-im-20090610.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-7788707969022462553</id><published>2009-06-03T04:57:00.001Z</published><updated>2009-06-03T05:09:25.816Z</updated><title type='text'>sqlite3 cli</title><content type='html'>Android gets better and better!  I had a few minutes tonight to take a look at my current Android app and wanted to check the state of the DB.  Expecting to find nothing, I Googled &lt;em&gt;sqlite cli android&lt;/em&gt; and found that there are 2 methods.  Beauty.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Term in Emulator&lt;/h2&gt;&lt;br /&gt;I thought that this would be the coolest but it was actually a paid because the UID is not root.  The end result is that there are annoying permissions issues.  It was pretty fun to be able to use the Term to check the DB:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CJe_TZuR_n4/SiYE-jq5pII/AAAAAAAAAK4/lrFZa11Elhg/s1600-h/termInEmulator.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 180px; height: 320px;" src="http://4.bp.blogspot.com/_CJe_TZuR_n4/SiYE-jq5pII/AAAAAAAAAK4/lrFZa11Elhg/s320/termInEmulator.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5342963480695252098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Shell via ADB&lt;/h2&gt;&lt;br /&gt;&lt;pre&gt;jjohnson:~ jjohnson$ adb shell&lt;br /&gt;# cd /data/data/org.mrtidy.nb2db1/databases&lt;br /&gt;# sqlite3 data.db&lt;br /&gt;SQLite version 3.5.9&lt;br /&gt;Enter ".help" for instructions&lt;br /&gt;sqlite&gt; .tables&lt;br /&gt;bucket&lt;br /&gt;sqlite&gt; select * from bucket;&lt;br /&gt;0|testing 0|3|&lt;br /&gt;1|testing|42|2009-05-05&lt;br /&gt;3|testing 3|55|2009-05-0&lt;br /&gt;5|testing null|66|&lt;br /&gt;6|moo|4|&lt;br /&gt;sqlite&gt; &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7788707969022462553?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7788707969022462553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7788707969022462553&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7788707969022462553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7788707969022462553'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/06/sqlite3-cli.html' title='sqlite3 cli'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://4.bp.blogspot.com/_CJe_TZuR_n4/SiYE-jq5pII/AAAAAAAAAK4/lrFZa11Elhg/s72-c/termInEmulator.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-1464546172029563536</id><published>2009-05-22T09:17:00.003Z</published><updated>2009-05-22T09:39:17.649Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='adt'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualbox'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>learned a few things about Ubuntu and VirtualBox</title><content type='html'>My main goal tonight was to get through the &lt;a href="http://developer.android.com/guide/tutorials/views/index.html"&gt;different layout samples&lt;/a&gt; to get a better grasp on layout in Android.  Unfortunately, work leaked so I had to do some Ubuntu and VirtualBox configuration.  Turned out to be pretty interesting and reminded me how much I like Ubuntu.&lt;br /&gt;&lt;br /&gt;I set up a VM instance - this was fine, went as normal.  The new part here was that I wanted to use VBox snapshots.  Once the VM was prepared, I exported the config and HD image to put on our filer system as part of my usual process.  After the traditional style backup was done, I tried creating a Snapshot of the VM.  Assuming the snapshots work, they're might simple: you get to give each snapshot a name and description.  There are options to delete snapshots, remove current config, and a few other things.&lt;br /&gt;&lt;br /&gt;As part of the preparation of the VM, I had to set up an application launcher in the VM image.  I've done launchers before but this was a little new because I wanted the launcher on the desktop but the actual scripts within the home directory structure.  The problem I hit was that the main script used relative paths to reference other scripts.  The solution to my issue was &lt;a href="http://ubuntuforums.org/showthread.php?t=1131991"&gt;here&lt;/a&gt;.  I had assumed "cd {abs directory}; ./{script}" but it has to be 'sh -c "cd {abs directory} &amp;&amp; ./{script}"'.  Huh.&lt;br /&gt;&lt;br /&gt;I set both the host and guest instances to perform Auto-Login to be easy for the line setup.  In the host, I added a Startup Application to auto-start my guest.  This reminds me how much I like VirtualBox: VBoxManage has lots of different options that I've found useful.  In this case, I do 'Command: VBoxManage startvm "gateway configuration station"'.  Since the VM is configured for full-screen, I ultimately end up at the desired UI after powering on the physical box.  Good stuff!&lt;br /&gt;&lt;br /&gt;Back on the Android stuff, I was pleased there as well: started bumping into the design surfaces in ADT and they look helpful, used the Debug perspective with an Android app running in the emulator (and breakpoints worked :)), and Android will deal with about anything for the icons.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/ShZyoeTz0rI/AAAAAAAAAKw/wr5monCaPt0/s1600-h/eJamJar.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 215px; height: 320px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/ShZyoeTz0rI/AAAAAAAAAKw/wr5monCaPt0/s320/eJamJar.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5338580447950787250" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1464546172029563536?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1464546172029563536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1464546172029563536&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1464546172029563536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1464546172029563536'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/05/learned-few-things-about-ubuntu-and.html' title='learned a few things about Ubuntu and VirtualBox'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://1.bp.blogspot.com/_CJe_TZuR_n4/ShZyoeTz0rI/AAAAAAAAAKw/wr5monCaPt0/s72-c/eJamJar.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-3676212511491493131</id><published>2009-05-20T05:53:00.006Z</published><updated>2009-05-20T09:43:25.859Z</updated><title type='text'>first Android app</title><content type='html'>Google provides great tools to get started.  The guys at work are Maven fanboys so they referred to a couple Maven-Android projects to use.  I followed their lead and took the time to set up Masa but that was a total waste of time.  The first part below is how a normal person should write the &lt;em&gt;Hello World&lt;/em&gt; app and then the second part is how to get Masa set up, just in case you too are a Maven fanboy (or fangirl).  There are some notes at the very end about using Eclipse / ADT but I think writing the first app with the Android tools is helpful.&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Android Tools&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 1: Download Android SDK&lt;/h2&gt;&lt;br /&gt;Go to &lt;a href="http://developer.android.com/sdk/1.5_r1/index.html"&gt;the Android SDK Download page&lt;/a&gt; and get the SDK.  For the Mac, it is a ZIP file so I downloaded and unzipped and then edited &lt;em&gt;~/.bash_login&lt;/em&gt; to add &lt;em&gt;ANDROID_SDK&lt;/em&gt; and put &lt;em&gt;$ANDROID_SDK/tools&lt;/em&gt; in my path.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 2: Create an AVD&lt;/h2&gt;&lt;br /&gt;To be able to test apps, you need to set up an &lt;em&gt;Android Virtual Device&lt;/em&gt;.  As you get familiar, you'll probably have multiple AVD but create an API level 3 AVD to get started.  I called my AVD &lt;em&gt;basic&lt;/em&gt;.  The steps below show me creating it and then starting it.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ android create avd -n basic -t 3&lt;br /&gt;Created AVD 'basic' based on Google APIs (Google Inc.)&lt;br /&gt;$ emulator @basic&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;At this point, I see a window with a red phone.  The screen on the phone is blank.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 3: Create an App and Install&lt;/h2&gt;&lt;br /&gt;I called my app &lt;em&gt;buckets&lt;/em&gt; and the main activity is called BucketOverviewActivity.  The &lt;em&gt;android create&lt;/em&gt; call writes out a template project and sets up the initial metadata.  Everything is valid as-is so you can go straight from there to compile and install the app.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ cd ~/projects&lt;br /&gt;$ mkdir buckets&lt;br /&gt;$ cd buckets&lt;br /&gt;$ android create project --target 2 --path . --activity BucketOverviewActivity --package com.unknown.buckets&lt;br /&gt;$ ant debug install&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;After the install step, the phone appears to turn on and the app is now available.  The name of the app is BucketOverviewActivity and when I click on that I see the &lt;em&gt;Hello World&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/ShOhFt299pI/AAAAAAAAAKg/Ty5IDnIqi-A/s1600-h/androidWithBuckets.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 167px; height: 320px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/ShOhFt299pI/AAAAAAAAAKg/Ty5IDnIqi-A/s320/androidWithBuckets.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5337787102945736338" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CJe_TZuR_n4/ShOhF_F0KgI/AAAAAAAAAKo/k9OItQMXq4c/s1600-h/androidHelloWorld.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 166px; height: 320px;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/ShOhF_F0KgI/AAAAAAAAAKo/k9OItQMXq4c/s320/androidHelloWorld.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5337787107571411458" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h1&gt;Masa Setup&lt;/h1&gt;&lt;br /&gt;The Masa Web site appears to be stale and a different Maven project in GoogleCode has intentionally gone stale claiming that they are merging with Masa.  I think that the problem is that the Ant tools provided with Android are &lt;em&gt;good enough&lt;/em&gt;.  Anyway, I spent all the time to get Masa setup so I may as well pass the info along.&lt;br /&gt;&lt;br /&gt;Do the steps 1 and 2 above to get the Android SDK installed and in your PATH and to prepare an Emulator.  Next, install Android JARs into the local Maven repository.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mvn -X install:install-file -Dfile=/usr/local/android//platforms/android-1.5/android.jar -DgeneratePom=true -DgroupId=android -DartifactId=android -Dversion=1.5_r1 -Dpackaging=jar&lt;br /&gt;mvn -X install:install-file -Dfile=/usr/local/android//platforms/android-1.1/android.jar -DgeneratePom=true -DgroupId=android -DartifactId=android -Dversion=1.1_r1 -Dpackaging=jar&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;At this point, you can pull the Masa source and install Masa into the local repository.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd ~/oss&lt;br /&gt;svn co http://masa.googlecode.com/svn/trunk/ masa&lt;br /&gt;cd masa&lt;br /&gt;mvn install&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Finally, you can take the sample &lt;em&gt;pom.xml&lt;/em&gt; from the Masa Web site, update the versions, and put it into your project directory (that already has a find build.xml file for Ant) and use mvn.&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Eclipse / ADT&lt;/h1&gt;&lt;br /&gt;The Android Developers Web site has great information for getting started with Eclipse and the Android Developer Tools plugin.  Some parts that I think are important are that the code-path to create a new project using ADT is different than just using the Android tools.  It isn't a real big deal but the best way to get a decent build script for a build machine is to use the Android create tool.  I did find that I could drop a build.xml, build.properties, local.properties, and default.properties into the project directory of an Eclipse-created project and it built and behaved as I expected.&lt;br /&gt;&lt;br /&gt;I tried Export -&gt; Ant Build Files but that was terrible.  Use &lt;em&gt;android create&lt;/em&gt; at least once to get the good scripts.  Once you get good build scripts, it would probably be smart to tell Eclipse to only use the Ant build script that was put in place but I'm going to live on the wild side and use the IDE build when doing interactive dev and Ant for 'real' builds.&lt;br /&gt;&lt;br /&gt;ADT provides a graphical tool for managing the virtual devices, automatically assumed debug keys on Run As, and has the usual benefits of syntax highlighting and refactoring.  There isn't an integrated tool for managing the emulators, that I have seen; that means that once an emulator is started, I have to kill it outside the IDE if it needs to be killed.  Along the same lines, I've had a case where the IDE wouldn't start a new emulator but there was one running and ready to take an application image.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3676212511491493131?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3676212511491493131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3676212511491493131&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3676212511491493131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3676212511491493131'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/05/first-android-app.html' title='first Android app'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://1.bp.blogspot.com/_CJe_TZuR_n4/ShOhFt299pI/AAAAAAAAAKg/Ty5IDnIqi-A/s72-c/androidWithBuckets.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-249727671069364079</id><published>2009-04-18T06:55:00.003Z</published><updated>2009-04-18T07:21:05.543Z</updated><title type='text'>the hard way to get SMS messages in app</title><content type='html'>My epiphany today was that SMS would be the easiest way to capture expenses like gas and groceries.  That's funny, seriously.  I decided to see how difficult it would be to get SMS messages into an app.  Since I recently set up a Skype account with SkypeIn, I figured I'd see if SkypeIn could accept SMS.  In short, it doesn't appear to (still).&lt;br /&gt;&lt;br /&gt;The &lt;a href="https://developer.skype.com/Docs/"&gt;Skype APIs&lt;/a&gt; are brilliantly trivial so within a couple minutes of downloading the Python version of the API I had this script running to send my real phone a test SMS message.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import Skype4Py&lt;br /&gt;&lt;br /&gt;def OnAttach(status):&lt;br /&gt;  print 'API attachment status: ' + skype.Convert.AttachmentStatusToText(status)&lt;br /&gt;&lt;br /&gt;  if status == Skype4Py.apiAttachAvailable:&lt;br /&gt;    skype.Attach()&lt;br /&gt;&lt;br /&gt;skype = Skype4Py.Skype()&lt;br /&gt;skype.OnAttachmentStatus = OnAttach&lt;br /&gt;&lt;br /&gt;print 'Connecting to Skype...'&lt;br /&gt;skype.Attach()&lt;br /&gt;&lt;br /&gt;message = skype.CreateSms(Skype4Py.smsMessageTypeOutgoing, '+15555551234')&lt;br /&gt;message.Body = "Hello from sendSms.py"&lt;br /&gt;message.Send()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That works - I set a real phone number where the 5555551234 is and the real phone gets the SMS instantly.  Since I was sure the API was functioning correctly, I tried reading SMS messages.  I could see SMS messages so from a real phone I sent an SMS to my SkypeIn number.&lt;br /&gt;&lt;br /&gt;Neither Skype (the GUI client) nor the API could see the incoming SMS so I did a little reading and found that landlines are used for SkypeIn so incoming SMS is not an option.  I read that there is a company that provides free &lt;a href="http://www.connectotel.com/sms/skype.html"&gt;SMS routing to Skype accounts&lt;/a&gt;.  The format is 'skype &lt;i&gt;account name&lt;/i&gt; message'.  Skype then receives the SMS as an Instant Message.  I tried it out by sending 'skype mrtidy test another from iPhone' and did get the Instant Message.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import Skype4Py&lt;br /&gt;&lt;br /&gt;skype = Skype4Py.Skype()&lt;br /&gt;skype.Attach()&lt;br /&gt;&lt;br /&gt;for sms in skype.Smss:&lt;br /&gt;  print sms.Type + ' SMS: ' + sms.Body&lt;br /&gt;&lt;br /&gt;for chat in skype.Chats:&lt;br /&gt;  print chat.Type + ' Chat'&lt;br /&gt;  for message in chat.Messages:&lt;br /&gt;    print 'Message: ' + message.Body&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Using the code above, I can now see that I have received the SMS message:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;OUTGOING SMS: short message from python&lt;br /&gt;OUTGOING SMS: Hello from sendSms.py&lt;br /&gt;OUTGOING SMS: &lt;br /&gt;OUTGOING SMS: test with the 1 in it&lt;br /&gt;OUTGOING SMS: &lt;br /&gt;OUTGOING SMS: testing sms from skype&lt;br /&gt;DIALOG Chat&lt;br /&gt;Message: "test another from iPhone [ SMS to Skype message from +15555551234 ]"&lt;br /&gt;Message: &lt;br /&gt;Message: &lt;br /&gt;MULTICHAT Chat&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I'm pretty bummed about SkypeIn being landline and having no real option for receiving SMS.  I thought about my fundamental problem and I could set up a private twitter account specifically for tracking the expenses that we make while out but I'd really prefer SMS or email.  The SMS attraction was that it is just 2 fields which makes sense; email has a subject field which is unnecessary for this task.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-249727671069364079?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/249727671069364079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=249727671069364079&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/249727671069364079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/249727671069364079'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/04/hard-way-to-get-sms-messages-in-app.html' title='the hard way to get SMS messages in app'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-3643667524524639012</id><published>2009-03-19T05:48:00.003Z</published><updated>2009-03-19T05:55:09.737Z</updated><title type='text'>setting up personal wikimedia</title><content type='html'>I'm a huge fan of Confluence since I get to use it at work and have gotten real familiar with it.  Unfortunately, there isn't a personal version of it, that I can find, so for setting up a wiki for personal use I have to turn to something else.  I have experience with a few but I'd say my second favorite is wikimedia.  Wikimedia has everything I need - this is mainly for Greg and I to keep track of our rocket info like propellants and nozzle info.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;yum install php&lt;br /&gt;yum install mysql&lt;br /&gt;yum install mysql-server&lt;br /&gt;/etc/init.d/mysql start&lt;br /&gt;mysqladmin -u root password '###'&lt;br /&gt;yum install php-gd&lt;br /&gt;yum install php-mysql&lt;br /&gt;cd /var/www/html&lt;br /&gt;tar xzf ~/wiki*tar.gz&lt;br /&gt;ln -s wikimedia-* wikimedia&lt;br /&gt;chown -R apache:apache wikimedia*&lt;br /&gt;http://192.168.0.25/wikimedia/config/&lt;br /&gt;&lt;br /&gt;Admin username: admin&lt;br /&gt;Password: ###&lt;br /&gt;&lt;br /&gt;Database name: rockets_wiki&lt;br /&gt;Database username: rockets_wiki&lt;br /&gt;Database password: ###&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That is looking good and the wiki is ready to start using solely through a browser; however, it isn't externally available yet.  Since all traffic on port 80 currently forwards from my firewall to an IIS instance, I need to set up a reverse proxy to forward the traffic on from IIS to the internal Linux server hosting wikimedia.  I haven't finished setting up the reverse proxy but below are the links that I've been working from.  Note that ARR is only avaiable for II7, which I don't have, so it is mostly informational about what I wish I had.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;http://learn.iis.net/page.aspx/489/using-the-application-request-routing-module/&lt;br /&gt;http://iis.net/downloads/default.aspx?tabid=34&amp;g=6&amp;i=1709&lt;br /&gt;&lt;br /&gt;http://urlrewriter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22618&lt;br /&gt;http://urlrewriter.codeplex.com/Thread/View.aspx?ThreadId=38437&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3643667524524639012?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3643667524524639012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3643667524524639012&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3643667524524639012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3643667524524639012'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/03/setting-up-personal-wikimedia.html' title='setting up personal wikimedia'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-9122535664952798803</id><published>2009-02-04T06:09:00.002Z</published><updated>2009-02-04T06:16:53.815Z</updated><title type='text'>moving to jQuery 1.3</title><content type='html'>I'm finally migrating a site with the ancient jQuery 1.1.4 library (!) to jQuery 1.3.  To say I'm excited is a gross understatement.  The jQuery team continually blow my mind with smart features and approaches to solve problems.  I'm interested in all the features but in particular, I'm anxious to see how the 'no browser sniffing' will work out in the long run.  Good stuff.&lt;br /&gt;&lt;br /&gt;http://docs.jquery.com/Release:jQuery_1.3&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-9122535664952798803?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/9122535664952798803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=9122535664952798803&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/9122535664952798803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/9122535664952798803'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/02/moving-to-jquery-13.html' title='moving to jQuery 1.3'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-7316085522855912061</id><published>2009-01-29T00:35:00.003Z</published><updated>2009-01-29T00:50:30.520Z</updated><title type='text'>HP puts VT Flag in OS Security</title><content type='html'>At work we have an HP dc5750 machine that we want to put some HVM VMs on.  The processor in the machine is an AMD 4450B that technically supports AMD-V.  After installing Xen and booting the machine we found that HVM was not enabled in Xen so we had to go digging around.  We looked through all the sensible BIOS options a few times and upgraded the BIOS to the latest version and then finally in frustration looked in the OS Security section and there it was - Virtualization was Disabled.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7316085522855912061?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7316085522855912061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7316085522855912061&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7316085522855912061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7316085522855912061'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/01/hp-puts-vt-flag-in-os-security.html' title='HP puts VT Flag in OS Security'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-3598421143892863872</id><published>2009-01-15T19:38:00.002Z</published><updated>2009-01-15T19:39:21.357Z</updated><title type='text'>Awesome is understatement</title><content type='html'>Here's something geeky: &lt;a href="http://www.sees.com/prod.cfm/Candy_Bars/Awesome_Nut_Chew_Bars"&gt;See's Awesome Nut &amp; Chew Bar&lt;/a&gt;.  Wowsers those are good - why aren't they available in stores?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3598421143892863872?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3598421143892863872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3598421143892863872&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3598421143892863872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3598421143892863872'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/01/awesome-is-understatement.html' title='Awesome is understatement'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-624164216894096064</id><published>2009-01-14T17:27:00.002Z</published><updated>2009-01-14T17:37:35.309Z</updated><title type='text'>indirection and perf</title><content type='html'>This &lt;a href="http://www.windley.com/archives/2009/01/the_kynetx_move_to_cloudfront.shtml"&gt;recent post&lt;/a&gt; by Phil Windley had a great paragraph in it about indirection and performance.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;You know the saying “there’s no Computer Science problem that can’t be solved with a layer of indirection.” In homage to that, our solution is to redirect from a static URL to the timestamped filename. That’s not ideal, but it works. The downside is the other half of that homily: “there’s no performance problem that can’t be solved by eliminating a layer of indirection.” Still, our measurements show that the price we’re paying isn’t too high.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Good stuff.  We all know it - he just has an amusing way of saying it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-624164216894096064?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/624164216894096064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=624164216894096064&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/624164216894096064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/624164216894096064'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2009/01/indirection-and-perf.html' title='indirection and perf'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-145613089092631072</id><published>2008-12-18T09:38:00.002Z</published><updated>2008-12-18T09:45:47.558Z</updated><title type='text'>Terminal Settings</title><content type='html'>Exported Terminal settings:&lt;br /&gt;&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;&lt;br /&gt;&amp;lt;plist version="1.0"&gt;&lt;br /&gt;&amp;lt;dict&gt;&lt;br /&gt; &amp;lt;key&gt;BackgroundColor&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;data&gt;&lt;br /&gt; YnBsaXN0MDDUAQIDBAUGCQpYJHZlcnNpb25UJHRvcFkkYXJjaGl2ZXJYJG9iamVjdHMS&lt;br /&gt; AAGGoNEHCFRyb290gAFfEA9OU0tleWVkQXJjaGl2ZXKjCwwTVSRudWxs0w0ODxARElYk&lt;br /&gt; Y2xhc3NcTlNDb2xvclNwYWNlVU5TUkdCgAIQAU8QLzAuMDk4MDM5MjE3IDAuMDk4MDM5&lt;br /&gt; MjE3IDAuMDk4MDM5MjE3IDAuODk5OTk5OTgA0hQVFhdYJGNsYXNzZXNaJGNsYXNzbmFt&lt;br /&gt; ZaIXGFdOU0NvbG9yWE5TT2JqZWN0CBEaHykyNzo/QVNXXWRreH6AgrS5ws3Q2AAAAAAA&lt;br /&gt; AAEBAAAAAAAAABkAAAAAAAAAAAAAAAAAAADh&lt;br /&gt; &amp;lt;/data&gt;&lt;br /&gt; &amp;lt;key&gt;CursorBlink&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;true/&gt;&lt;br /&gt; &amp;lt;key&gt;CursorColor&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;data&gt;&lt;br /&gt; YnBsaXN0MDDUAQIDBAUGCQpYJHZlcnNpb25UJHRvcFkkYXJjaGl2ZXJYJG9iamVjdHMS&lt;br /&gt; AAGGoNEHCFRyb290gAFfEA9OU0tleWVkQXJjaGl2ZXKjCwwTVSRudWxs0w0ODxARElYk&lt;br /&gt; Y2xhc3NcTlNDb2xvclNwYWNlVU5TUkdCgAIQAU8QITAuODAwMDAwMDEgMC44MDAwMDAw&lt;br /&gt; MSAwLjgwMDAwMDAxANIUFRYXWCRjbGFzc2VzWiRjbGFzc25hbWWiFxhXTlNDb2xvclhO&lt;br /&gt; U09iamVjdAgRGh8pMjc6P0FTV11ka3h+gIKmq7S/wsoAAAAAAAABAQAAAAAAAAAZAAAA&lt;br /&gt; AAAAAAAAAAAAAAAA0w==&lt;br /&gt; &amp;lt;/data&gt;&lt;br /&gt; &amp;lt;key&gt;CursorType&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;integer&gt;0&amp;lt;/integer&gt;&lt;br /&gt; &amp;lt;key&gt;Font&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;data&gt;&lt;br /&gt; YnBsaXN0MDDUAQIDBAUGCQpYJHZlcnNpb25UJHRvcFkkYXJjaGl2ZXJYJG9iamVjdHMS&lt;br /&gt; AAGGoNEHCFRyb290gAFfEA9OU0tleWVkQXJjaGl2ZXKkCwwVFlUkbnVsbNQNDg8QERIT&lt;br /&gt; FFYkY2xhc3NWTlNTaXplVk5TTmFtZVhOU2ZGbGFnc4ADI0AoAAAAAAAAgAIQEFpBbmRh&lt;br /&gt; bGVNb25v0hcYGRpYJGNsYXNzZXNaJGNsYXNzbmFtZaIaG1ZOU0ZvbnRYTlNPYmplY3QI&lt;br /&gt; ERofKTI3Oj9BU1heZ251fIWHkJKUn6StuLvCAAAAAAAAAQEAAAAAAAAAHAAAAAAAAAAA&lt;br /&gt; AAAAAAAAAMs=&lt;br /&gt; &amp;lt;/data&gt;&lt;br /&gt; &amp;lt;key&gt;FontAntialias&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;false/&gt;&lt;br /&gt; &amp;lt;key&gt;Linewrap&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;true/&gt;&lt;br /&gt; &amp;lt;key&gt;SelectionColor&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;data&gt;&lt;br /&gt; YnBsaXN0MDDUAQIDBAUGCQpYJHZlcnNpb25UJHRvcFkkYXJjaGl2ZXJYJG9iamVjdHMS&lt;br /&gt; AAGGoNEHCFRyb290gAFfEA9OU0tleWVkQXJjaGl2ZXKjCwwTVSRudWxs0w0ODxARElYk&lt;br /&gt; Y2xhc3NcTlNDb2xvclNwYWNlVU5TUkdCgAIQAUYxIDEgMQDSFBUWF1gkY2xhc3Nlc1ok&lt;br /&gt; Y2xhc3NuYW1lohcYV05TQ29sb3JYTlNPYmplY3QIERofKTI3Oj9BU1ddZGt4foCCiY6X&lt;br /&gt; oqWtAAAAAAAAAQEAAAAAAAAAGQAAAAAAAAAAAAAAAAAAALY=&lt;br /&gt; &amp;lt;/data&gt;&lt;br /&gt; &amp;lt;key&gt;TextBoldColor&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;data&gt;&lt;br /&gt; YnBsaXN0MDDUAQIDBAUGCQpYJHZlcnNpb25UJHRvcFkkYXJjaGl2ZXJYJG9iamVjdHMS&lt;br /&gt; AAGGoNEHCFRyb290gAFfEA9OU0tleWVkQXJjaGl2ZXKjCwwTVSRudWxs0w0ODxARElYk&lt;br /&gt; Y2xhc3NcTlNDb2xvclNwYWNlVU5TUkdCgAIQAU8QITAuODAwMDAwMDEgMC44MDAwMDAw&lt;br /&gt; MSAwLjgwMDAwMDAxANIUFRYXWCRjbGFzc2VzWiRjbGFzc25hbWWiFxhXTlNDb2xvclhO&lt;br /&gt; U09iamVjdAgRGh8pMjc6P0FTV11ka3h+gIKmq7S/wsoAAAAAAAABAQAAAAAAAAAZAAAA&lt;br /&gt; AAAAAAAAAAAAAAAA0w==&lt;br /&gt; &amp;lt;/data&gt;&lt;br /&gt; &amp;lt;key&gt;TextColor&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;data&gt;&lt;br /&gt; YnBsaXN0MDDUAQIDBAUGCQpYJHZlcnNpb25UJHRvcFkkYXJjaGl2ZXJYJG9iamVjdHMS&lt;br /&gt; AAGGoNEHCFRyb290gAFfEA9OU0tleWVkQXJjaGl2ZXKjCwwTVSRudWxs0w0ODxARElYk&lt;br /&gt; Y2xhc3NcTlNDb2xvclNwYWNlVU5TUkdCgAIQAU8QITAuODAwMDAwMDEgMC44MDAwMDAw&lt;br /&gt; MSAwLjgwMDAwMDAxANIUFRYXWCRjbGFzc2VzWiRjbGFzc25hbWWiFxhXTlNDb2xvclhO&lt;br /&gt; U09iamVjdAgRGh8pMjc6P0FTV11ka3h+gIKmq7S/wsoAAAAAAAABAQAAAAAAAAAZAAAA&lt;br /&gt; AAAAAAAAAAAAAAAA0w==&lt;br /&gt; &amp;lt;/data&gt;&lt;br /&gt; &amp;lt;key&gt;name&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;string&gt;Homebrew&amp;lt;/string&gt;&lt;br /&gt; &amp;lt;key&gt;shellExitAction&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;integer&gt;1&amp;lt;/integer&gt;&lt;br /&gt; &amp;lt;key&gt;type&amp;lt;/key&gt;&lt;br /&gt; &amp;lt;string&gt;Window Settings&amp;lt;/string&gt;&lt;br /&gt;&amp;lt;/dict&gt;&lt;br /&gt;&amp;lt;/plist&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Are those serialized objects storing the color info?  Huh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-145613089092631072?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/145613089092631072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=145613089092631072&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/145613089092631072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/145613089092631072'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/12/terminal-settings.html' title='Terminal Settings'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-7900309130064492608</id><published>2008-12-10T09:36:00.002Z</published><updated>2008-12-18T09:51:37.130Z</updated><title type='text'>Launch Log 2008.12.07</title><content type='html'>The weather was nearly perfect and we launched around 20 rockets (we = Greg M, Isaac, Spencer, and me).  I lost an unfinished Mighty Mouse: great launch on a C but went north and landed in the pond.  The Westminster police stopped by to tell us we technically weren't supposed to be there but they weren't telling us to leave; the policy is that if someone complains they'll come tell us to leave.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/SUoct2_6DAI/AAAAAAAAAKU/_znQRdL3DUc/s1600-h/mean-20081208.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 297px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/SUoct2_6DAI/AAAAAAAAAKU/_znQRdL3DUc/s320/mean-20081208.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5281065087228578818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We launched Isaac's Rainbow Machine and Greg launched his own Mean Machine.  Both did great on D12's.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CJe_TZuR_n4/SUoct6n-fbI/AAAAAAAAAKM/uy6s_U1UELQ/s1600-h/launch-20081207.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 199px;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/SUoct6n-fbI/AAAAAAAAAKM/uy6s_U1UELQ/s320/launch-20081207.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5281065088201948594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;People stopped to watch and these girls came and played for quite a while.  Fun to see so many people interested in rocketry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7900309130064492608?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7900309130064492608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7900309130064492608&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7900309130064492608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7900309130064492608'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/12/launch-log-20081207.html' title='Launch Log 2008.12.07'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://2.bp.blogspot.com/_CJe_TZuR_n4/SUoct2_6DAI/AAAAAAAAAKU/_znQRdL3DUc/s72-c/mean-20081208.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-6918440298490025684</id><published>2008-10-23T04:57:00.002Z</published><updated>2008-10-23T05:10:57.040Z</updated><title type='text'>still a fan of stack overflow podcast</title><content type='html'>Around episode 10 of the &lt;a href="http://blog.stackoverflow.com/index.php?feed=podcast"&gt;Stack Overflow podcast&lt;/a&gt;, Joel Spolsky and Jeff Atwood sync'd up and became great.  I had been an occasional reader of &lt;a href="http://www.codinghorror.com/blog/"&gt;Coding Horror&lt;/a&gt; and &lt;a href="http://www.codinghorror.com/blog/"&gt;Joel on Software&lt;/a&gt; but never much of a fan.  Around episode 20 of the Stack Overflow podcast, Joel and Jeff got too comfortable and they're risking falling apart like Carl at &lt;a href="http://www.dotnetrocks.com/"&gt;DNR&lt;/a&gt; or Scott on &lt;a href="http://www.hanselminutes.com/"&gt;Hanselminutes&lt;/a&gt; but I'm still a fan.&lt;br /&gt;&lt;br /&gt;It may take a major problem with the Stack Overflow site of FogBugz to get the show back to the super-interesting level.  Right now, Jeff settling in to thinking that Stack Overflow is a success and he's got it all figured out and Joel is just there for the ride.  They are thinking that bringing on guests will keep the show interesting but I think the attraction to the show has been that they were dealing with real technical problems and differences on how they would address them throughout the cycle of building Stack Overflow.  If there aren't any major disasters with Stack Overflow or FogBugz then they should probably stop doing the podcast or start writing a new product.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-6918440298490025684?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/6918440298490025684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=6918440298490025684&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6918440298490025684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6918440298490025684'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/10/still-fan-of-stack-overflow-podcast.html' title='still a fan of stack overflow podcast'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-5970448931759645194</id><published>2008-09-27T19:15:00.003Z</published><updated>2008-09-27T19:34:49.001Z</updated><title type='text'>Some Winter Project</title><content type='html'>Kelly J mentioned once that he was converting his mower to electric.  I just mowed the lawn and got to thinking about his project.  I figured it'd be pretty expensive but was curious what was involved.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.builditsolar.com/Projects/Vehicles/LeeMower.htm"&gt;Here's&lt;/a&gt; an interesting article about someone that did the conversion.  $212 for the conversion - impressive.  I get the impression that &lt;a href="http://www.appropedia.org/Solar_Charged_Lawnmower"&gt;this article&lt;/a&gt; inspired the build-it-solar article.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-5970448931759645194?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/5970448931759645194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=5970448931759645194&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5970448931759645194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5970448931759645194'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/09/some-winter-project.html' title='Some Winter Project'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-448170253389773760</id><published>2008-08-12T19:02:00.003Z</published><updated>2008-08-12T19:08:14.910Z</updated><title type='text'>Al Gore invented Global Warming</title><content type='html'>I listened to an interview about 5 years ago where &lt;a href="http://en.wikipedia.org/wiki/Robert_Metcalfe"&gt;Bob Metcalfe&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Vinton_Cerf"&gt;Vint Cerf&lt;/a&gt; was tributing Al Gore for pushing hard on congress to fund the Information Super-highway.  The direct result was increased funding, and I believe the 5 node backbone between the super-computing centers and then ultimately the Internet as we know it today.  I cringe when people still joke about Al Gore saying he invented the Internet - I haven't heard his words, but it seems like he's allowed to take some significant credit.&lt;br /&gt;&lt;br /&gt;It just struck me, as I was reading about the plastic / nanotube solar panels, that we'll probably be hearing in 5 years people saying that Al Gore invented Global Warming.  It'll make me cringle but perhaps it'll have the same amount of truth: it sure seems like clean tech has boomed following his moving on the environment.&lt;br /&gt;&lt;br /&gt;I'm no big fan of Al Gore - just had the thought...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-448170253389773760?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/448170253389773760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=448170253389773760&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/448170253389773760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/448170253389773760'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/08/al-gore-invented-global-warming.html' title='Al Gore invented Global Warming'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-3375647183938302971</id><published>2008-08-09T02:57:00.005Z</published><updated>2008-08-09T03:32:59.891Z</updated><title type='text'>Launch Log 2008.09.02</title><content type='html'>&lt;a href="http://www.neuroticape.com/"&gt;Chris Murdock&lt;/a&gt; organized a small community launch on Aug 2nd.  Isaac, Spencer, and I went and enjoyed flying a bunch of rockets and watching a lot of other flights.&lt;br /&gt;&lt;div style="text-align:center;"&gt;&lt;a href="http://4.bp.blogspot.com/_CJe_TZuR_n4/SJ0K2o-mBuI/AAAAAAAAAHQ/ZDr8DHT5t34/s1600-h/RM+Liftoff+20080902.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_CJe_TZuR_n4/SJ0K2o-mBuI/AAAAAAAAAHQ/ZDr8DHT5t34/s200/RM+Liftoff+20080902.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5232350275903555298" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_CJe_TZuR_n4/SJ0K3Cj0svI/AAAAAAAAAHY/lo75kFLYXwU/s1600-h/RM+Streak+20080902.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_CJe_TZuR_n4/SJ0K3Cj0svI/AAAAAAAAAHY/lo75kFLYXwU/s200/RM+Streak+20080902.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5232350282770592498" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The Rainbow Machine had a beautiful flight on an Aerotech E15.  The winds were calm so the flight was straight and the rocket landed about 10 yards from the launch pad.  The Purple Rhino II had a great flight on 5 Estes A10 motors.  I used flash-in-the-pan for ignition and clearly had plenty of powder in the pan!&lt;br /&gt;&lt;div style="text-align:center;"&gt;&lt;a href="http://1.bp.blogspot.com/_CJe_TZuR_n4/SJ0M3EFdN0I/AAAAAAAAAHg/y95MHpL2J5o/s1600-h/PR+Count+20080902.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/SJ0M3EFdN0I/AAAAAAAAAHg/y95MHpL2J5o/s200/PR+Count+20080902.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5232352482203350850" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_CJe_TZuR_n4/SJ0M3jG8dbI/AAAAAAAAAHo/LTY8odbr5Ws/s1600-h/PR+Ignition+20080902.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_CJe_TZuR_n4/SJ0M3jG8dbI/AAAAAAAAAHo/LTY8odbr5Ws/s200/PR+Ignition+20080902.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5232352490531091890" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_CJe_TZuR_n4/SJ0M4GmlJII/AAAAAAAAAHw/8M3-qHbY3H0/s1600-h/PR+Liftoff+20080902.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_CJe_TZuR_n4/SJ0M4GmlJII/AAAAAAAAAHw/8M3-qHbY3H0/s200/PR+Liftoff+20080902.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5232352500059022466" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Rainbow Machine (E15) - perfect flight, correct delay, landed near pad&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Alpha III (A8) - first flight, early ejection&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Explorer (E9) - great flight, very high, delay (6) too long, nearly landed on pad&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mighty Mouse III (B6) - first flight, bit of a spin, correct delay&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Purple Rhino II (5x A10) - first flight, too much powder in pan, very straight&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3375647183938302971?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3375647183938302971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3375647183938302971&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3375647183938302971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3375647183938302971'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/08/launch-log-20080902.html' title='Launch Log 2008.09.02'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://4.bp.blogspot.com/_CJe_TZuR_n4/SJ0K2o-mBuI/AAAAAAAAAHQ/ZDr8DHT5t34/s72-c/RM+Liftoff+20080902.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-2314536739812747111</id><published>2008-07-18T07:55:00.003Z</published><updated>2008-07-18T08:07:07.412Z</updated><title type='text'>Don't Make Me Think!</title><content type='html'>I'm not a Web designer but I decided to Don't Make Me Think! because I could just read and think about the content while traveling.  I've found most of the content insightful and this particular bit gives a glimpse of why I like the book.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;And the worst thing about the myth of the Average User is that it reinforces the idea that good Web design is largely a matter of figuring out what people like.  It's an attractive notion: either pulldowns are good (because most people like them), or they're bad (because most people don't).  You should have links to everything in the site on the Home page, or you shouldn't.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Heh - the Average User - I hate it when the Average User comes up at work because it is the same thing: it is the dev / PM / etc. claiming they know what the Average User wants so they can enforce their agenda.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;The point is, it's not productive to ask questions like "Do most people like pulldown menus?"  The right kind of question to ask is "Does &lt;i&gt;this&lt;/i&gt; pulldown, with &lt;i&gt;these&lt;/i&gt; items and &lt;i&gt;this&lt;/i&gt; wording in &lt;i&gt;this&lt;/i&gt; context on &lt;i&gt;this&lt;/i&gt; page create a good experience for most people who are likely to use &lt;i&gt;this&lt;/i&gt; site?"&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Good point - seems like that could apply to the code / end-user issues as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2314536739812747111?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2314536739812747111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2314536739812747111&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2314536739812747111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2314536739812747111'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/07/dont-make-me-think.html' title='Don&apos;t Make Me Think!'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-4965593998682229414</id><published>2008-07-08T07:28:00.007Z</published><updated>2008-07-08T22:09:17.952Z</updated><title type='text'>posting family / hobby videos</title><content type='html'>We hope to be posting more videos on our blogs in the future, so we need to work out a good process and format for converting and posting the videos.  Flash video files are becoming very common and are handled nicely in most browsers (pretty much everything but the iPhone as far as I can tell) so that seems like a good starting point.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;SWF or FLV&lt;/em&gt;&lt;br /&gt;The Adobe Flash movie player plugin expects SWF files but the FLV files are better for us because they can stream out to the player.  The reason to point that out is that if you look at the excellent Adobe documentation for object / embed for the Flash movie player, you only see the movie parameter pointing to an SWF file.  I chose a nice looking &lt;a href="http://www.afcomponents.com/components/embeddable_flv_player/"&gt;embeddable FLV player&lt;/a&gt; from &lt;a href="http://www.afcomponents.com/"&gt;advanced flash components&lt;/a&gt; to be the SWF file that streams / plays the FLV files in the blog posts.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;ffmpeg or mencoder&lt;/em&gt;&lt;br /&gt;Our camera produces HD videos at 1280x720 pixels and the files are pretty large.  I tried 2 different tools to convert the large .mov file to .flv:&lt;br /&gt;&lt;br /&gt;ffmpeg:&lt;br /&gt;&lt;code&gt;ffmpeg -i P1010013.MOV -acodec libmp3lame -ab 64k -f flv -b 800000 -r 30 -s 400x225 -aspect 16:9 ravioli.flv&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;mencoder:&lt;br /&gt;&lt;code&gt;mencoder P1010013.MOV -o ravioli.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts \&lt;br /&gt;  vcodec=flv:vbitrate=600:mbd=2:mv0:trell:v4mv:keyint=10:cbp:last_pred=3:aspect=16/9 -vf scale=400:225 -srate 22050&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I've used ffmpeg more in the past so I intended to use it for this; however, the basic options above resulted in a lot of popping in the resulting .flv file.  I started reading about the audio codecs and tried a few different settings but decided to try a basic config for mencoder that I was familiar with.  I think that either of the above could be improved: ffmpeg could get audio fixed or mencoder could ensure that the aspect ratio gets coded into the video info.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Preview Image&lt;/em&gt;&lt;br /&gt;In the case of the ravioli video, I didn't like the default preview image so I generated a series of jpegs and used MS Paint to scroll through the images until I found one I liked.&lt;br /&gt;&lt;br /&gt;mplayer:&lt;br /&gt;&lt;code&gt;mplayer.exe ravioli.flv -nosound -vo jpeg&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Embedding the Video&lt;/em&gt;&lt;br /&gt;To get the video into a Web page, we just need to invoke the player and tell it what .flv file to use.  We currently have the .flv files on our regular blog server; in the future, I'd like those moved to AWS or some similar content network.&lt;br /&gt;&lt;br /&gt;object / embed:&lt;pre&gt;&amp;lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"&lt;br /&gt;  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"&lt;br /&gt;  width="400" height="225" align="middle"&gt;&lt;br /&gt;  &amp;lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;br /&gt;  &amp;lt;param name="allowFullScreen" value="true" /&gt;&lt;br /&gt;  &amp;lt;param name="base" value="/" /&gt;&lt;br /&gt;  &amp;lt;param name="movie" value="/AFC_EmbedPlayer.swf" /&gt;&lt;br /&gt;  &amp;lt;param name="quality" value="high" /&gt;&lt;br /&gt;  &amp;lt;param name="bgcolor" value="#ffffff" /&gt;&lt;br /&gt;  &amp;lt;param name="FlashVars"&lt;br /&gt;    value="flvURL=/moo/ravioli.flv&amp;autoHideControls=true&amp;autoStart=false&amp;previewImageURL=/moo/ravioliPreview.jpg" /&gt;&lt;br /&gt;  &amp;lt;embed base="/" src="/AFC_EmbedPlayer.swf" quality="high" bgcolor="#ffffff"&lt;br /&gt;    width="400" height="225" align="middle" allowScriptAccess="sameDomain"&lt;br /&gt;    allowFullScreen="true" type="application/x-shockwave-flash"&lt;br /&gt;    pluginspage="http://www.macromedia.com/go/getflashplayer"&lt;br /&gt;    FlashVars="flvURL=/moo/ravioli.flv&amp;autoHideControls=true&amp;autoStart=false&amp;previewImageURL=/moo/ravioliPreview.jpg"&gt;&amp;lt;/embed&gt;&lt;br /&gt;&amp;lt;/object&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;References&lt;/em&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.afcomponents.com/components/embeddable_flv_player/docs/"&gt;Embeddable FLV Player&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_12701"&gt;Flash OBJECT and EMBED tag attributes&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_4150"&gt;Flash OBJECT and EMBED tag syntax&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.mplayerhq.hu/DOCS/HTML/en/mencoder.html"&gt;Basic usage of MEncoder&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.mplayerhq.hu/DOCS/HTML/en/"&gt;MPlayer&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html"&gt;FFmpeg&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4965593998682229414?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4965593998682229414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4965593998682229414&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4965593998682229414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4965593998682229414'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/07/posting-family-hobby-videos.html' title='posting family / hobby videos'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-3335822172627117224</id><published>2008-05-21T17:08:00.002Z</published><updated>2008-05-21T17:10:45.623Z</updated><title type='text'>where are the electric taxis now?</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;Cabbie Jacob German was arrested and jailed in New York City May 20, 1899, for driving his electric taxi at the "breakneck speed" of 12 mph.&lt;br /&gt;&lt;br /&gt;- from Wired http://www.wired.com/science/discoveries/news/2008/05/dayintech_0521&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Sheesh - more than 100 years ago, we had electric taxis racing around the cities.  Where are they now?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3335822172627117224?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3335822172627117224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3335822172627117224&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3335822172627117224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3335822172627117224'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/05/where-are-electric-taxis-now.html' title='where are the electric taxis now?'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-8716450688846037328</id><published>2008-05-05T21:05:00.005Z</published><updated>2008-05-06T02:54:27.852Z</updated><title type='text'>Mistaking 'Common' and 'Lowest Common'</title><content type='html'>I'm reading a great book on Ajax: &lt;a href="http://www.amazon.com/Pragmatic-Ajax-Web-2-0-Primer/dp/0976694085/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1210021514&amp;sr=1-1"&gt;Pragmatic Ajax&lt;/a&gt;.  There is a lot of great info in the book but this particular quote is what really resonated with me.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Just because everybody is doing it doesn’t make it bad. That kind of logic is just counterintuitive enough to appeal to our old highschool self, whose fascination with The Cure and Metallica was fed by the belief that Phil Collins couldn’t possibly be any good because so darn many people listened to his music.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I don't know why particular bit jumps out at me.  Good book - go get it.&lt;br /&gt;&lt;br /&gt;One more great clip from that same section of the book:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;And for crying out loud, think very, very carefully before you start shaking, puffing, and squishing elements on the screen.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-8716450688846037328?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/8716450688846037328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=8716450688846037328&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/8716450688846037328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/8716450688846037328'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/05/mistaking-common-and-lowest-common.html' title='Mistaking &apos;Common&apos; and &apos;Lowest Common&apos;'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-1566700921722065978</id><published>2008-05-05T01:38:00.009Z</published><updated>2008-05-05T02:24:39.846Z</updated><title type='text'>MHM 2008</title><content type='html'>&lt;a href="http://www.ncrocketry.org/"&gt;Northern Colorado Rocketry&lt;/a&gt; hosted Mile High Mayhem 2008 was this past weekend.  It was a 3-day event but I only went up on Saturday because weather on Friday was horrible and Sunday was a day to stay home with the family.&lt;br /&gt;&lt;br /&gt;&lt;table border="0"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_CJe_TZuR_n4/SB5nKfgUNAI/AAAAAAAAAGw/1PsJOZ12zLg/s1600-h/mhm+2008+flight+line.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/SB5nKfgUNAI/AAAAAAAAAGw/1PsJOZ12zLg/s200/mhm+2008+flight+line.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5196704449985524738" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_CJe_TZuR_n4/SB5nKvgUNBI/AAAAAAAAAG4/VDlVoCeVJwY/s1600-h/mhm+2008+line.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_CJe_TZuR_n4/SB5nKvgUNBI/AAAAAAAAAG4/VDlVoCeVJwY/s200/mhm+2008+line.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5196704454280492050" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Lots of cars and campers on the flight line.  The second picture shows the people lines: lines were long to get out to the pads.  Waiting in line to go set up was a new experience for me.  There were 21 active pads (12 low power and 9 high power) but we definitely needed more pads.&lt;br /&gt;&lt;br /&gt;&lt;table border="0"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_CJe_TZuR_n4/SB5n6_gUNCI/AAAAAAAAAHA/XNIB6QJ4xJw/s1600-h/mhm+2008+bb+setup.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_CJe_TZuR_n4/SB5n6_gUNCI/AAAAAAAAAHA/XNIB6QJ4xJw/s200/mhm+2008+bb+setup.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5196705283209180194" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_CJe_TZuR_n4/SB5n7PgUNDI/AAAAAAAAAHI/J6Ayqo2o2Uo/s1600-h/mhm+2008+bb+liftoff.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_CJe_TZuR_n4/SB5n7PgUNDI/AAAAAAAAAHI/J6Ayqo2o2Uo/s200/mhm+2008+bb+liftoff.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5196705287504147506" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;There were a lot of great flights but the highlight for me was Greg's launch of his Black Brant.  In the first picture you can see us setting up on Pad 4.  The second picture is the launch: J350W boosting the rocket to 7012 feet above ground level.  Good stuff!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1566700921722065978?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1566700921722065978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1566700921722065978&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1566700921722065978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1566700921722065978'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/05/mhm-2008.html' title='MHM 2008'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp1.blogger.com/_CJe_TZuR_n4/SB5nKfgUNAI/AAAAAAAAAGw/1PsJOZ12zLg/s72-c/mhm+2008+flight+line.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-2287957958025526339</id><published>2008-04-30T21:37:00.002Z</published><updated>2008-04-30T21:40:31.760Z</updated><title type='text'>Great Dev Guidelines</title><content type='html'>I believe it was &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; that referenced &lt;a href="http://www.cauldwell.net/patrick/blog/ThisIBelieveTheDeveloperEdition.aspx"&gt;this post&lt;/a&gt;.  The title is "This I believe... the developer edition" - funny, and I don't completely agree with it all but it is great to review it before each project to remind yourself to think about some important aspects of the development process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2287957958025526339?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2287957958025526339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2287957958025526339&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2287957958025526339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2287957958025526339'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/04/great-dev-guidelines.html' title='Great Dev Guidelines'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-8799853239595921768</id><published>2008-03-02T21:43:00.004Z</published><updated>2008-03-02T23:01:23.146Z</updated><title type='text'>bummer day at the Atlas site</title><content type='html'>&lt;a href="http://www.ncrocketry.org/"&gt;Northern Colorado Rocketry&lt;/a&gt; launches on the first Saturday of every month.  In the winter and spring, we launch on the south side of the &lt;a href="http://www.fs.fed.us/r2/arnf/"&gt;Pawnee National Grassland&lt;/a&gt;; in the summer and fall, we launch on the north side.  The north launch site has a much better altitude waiver and very few fences, so it is the preferred site; however, when the ground is soft we risk damaging the environment: the south launch site is paved everywhere - even where we launch the rockets because it is the roof of a retired Atlas missile silo.&lt;br /&gt;&lt;br /&gt;The March 1st launch was on a beautiful day.  Greg and family went up for a day of launching and I drove up as well.  Greg certified Level 1 on his PML Black Brant - a nice kit and excellently built / finished by Greg.  I forgot my Tripoli papers, so I couldn't attempt to certify, but I could still fly practice flights.&lt;br /&gt;&lt;br /&gt;I flew my Talon 2 on an H128.  The Talon 2 is very light so it really popped quickly off the pad.  The ideal delay, according to RockSim, would have been 8 seconds but the H128 does 6 or 10 second delays: I went with the 10 second delay so deployment was a couple seconds after apogee.  Chute opened fine and the Talon 2 drifted out of site during decent because I used a larger chute than normal to ensure a soft landing.  Apparently, the large chute didn't help with the landing because the rocket broke - like completely broke:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_CJe_TZuR_n4/R8sxkp8VnoI/AAAAAAAAAGU/cJ-CnapWXgY/s1600-h/Talon2+Break.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_CJe_TZuR_n4/R8sxkp8VnoI/AAAAAAAAAGU/cJ-CnapWXgY/s320/Talon2+Break.jpg" border="0" alt="Broken Talon 2" id="BLOGGER_PHOTO_ID_5173283102769127042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_CJe_TZuR_n4/R8sxk58VnpI/AAAAAAAAAGc/RtkWDTIJPnY/s1600-h/Talon2+BreakZoom.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/R8sxk58VnpI/AAAAAAAAAGc/RtkWDTIJPnY/s320/Talon2+BreakZoom.jpg" border="0" alt="Zoom of Talon 2 Break" id="BLOGGER_PHOTO_ID_5173283107064094354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next launch in 34 days - I better get building...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-8799853239595921768?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/8799853239595921768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=8799853239595921768&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/8799853239595921768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/8799853239595921768'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/03/bummer-day-at-atlas-site.html' title='bummer day at the Atlas site'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp0.blogger.com/_CJe_TZuR_n4/R8sxkp8VnoI/AAAAAAAAAGU/cJ-CnapWXgY/s72-c/Talon2+Break.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-4702311316224114654</id><published>2008-02-04T06:23:00.000Z</published><updated>2008-02-04T06:40:53.605Z</updated><title type='text'>Launch Logs 2008.02.02</title><content type='html'>Greg and I drove up to the &lt;a href="http://www.ncrocketry.org/modules.php?name=Launches&amp;leid=109"&gt;Feb NCR Launch&lt;/a&gt; together.  It was fun to have a launch buddy to chat with while assembling motors and retrieving rockets.  I sim'd 10 flights and arranged for the 1 motor on the list that I didn't have to be brought by the &lt;a href="http://www.giantleaprocketry.com/"&gt;GLR rep&lt;/a&gt;.  I only got 3 flights in, but they were all great flights!&lt;br /&gt;&lt;br /&gt;My first launch was my scariest of the day for me: maiden flight of my Talon 2 on a Road Runner F60.  The kit was my most complex kit so far because it has 6 fins (3 lines of 2 fins) and the rear line is on the joint with the boat tail.  My simulations said that I should use a 4 second delay but I only had a 7 second delay.  Turned out the rocket flew straight (so the fins appear to be aligned okay) and the event was just after apogee (so the 7 second delay was nearly perfect).&lt;br /&gt;&lt;br /&gt;At the annual meeting, I bought a Semroc Explorer kit and loved building it.  I had its first flight and loved flying the Explorer almost as much as building it.  The first flight was on a D12 and it also flew straight and smooth.  In fact, I was really impressed with the boost it got from the D12 - I wasn't expecting much since I just wanted to verify the rocket would fly straight but it jump off the pad and went fairly high.&lt;br /&gt;&lt;br /&gt;Finally, I launched my repaired Bullet.  I cracked a fin and a fillet on my first launch of the Bullet in late 2007.  I fiberglassed 2 of the fins to make sure they'd be solid.  A G64 sim'd to a respectable 1100 feet so I felt like that would be gentle ride to verify the repair.  My plan was to follow up the flight with either an AT H238 or CTI I205.  The G64 flight went great but I cracked the fin that hadn't yet been fiberglassed.&lt;br /&gt;&lt;br /&gt;After the Bullet flight, we decided to pack up and head home.  It was disappointing to crack a fin again, but I was extremely pleased with my flights because all motors ignited properly, all rockets flew straight, and all chutes came out at or shortly after apogee.  I had planned to attempt an L1 cert again and to make my first dual-deployment flight; those flights will have to wait until the March launch.  I hope that the Thor will be done so I'll be flying 3 high-power kits rather than just the 2 in March.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4702311316224114654?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4702311316224114654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4702311316224114654&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4702311316224114654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4702311316224114654'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/02/launch-logs-20080202.html' title='Launch Logs 2008.02.02'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-3864748019745154269</id><published>2008-01-30T19:46:00.000Z</published><updated>2008-01-30T22:20:35.950Z</updated><title type='text'>expanding a VHD</title><content type='html'>In the past, when my fixed disk was too small, I'd create a new fixed disk and install a fresh copy of WinXP.  I'm too busy for that now, so I checked Google to see if there were any hacks to increase the size of a fixed disk.  I assumed to find nothing, but I found VHD Resizer.  Cool.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmtoolkit.com/files/folders/converters/entry87.aspx"&gt;VHD Resizer&lt;/a&gt; - handy tool for people to use that need to expand a VHD.&lt;br /&gt;&lt;br /&gt;At this point, I thought that I'd be able to use Windows tools to expand the C: drive in the VM to use all the space.  I opened diskpart and it found all the space but since my partition was the boot partition I couldn't use diskpart.  I had to use BootIt NG for the resizing.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.terabyteunlimited.com/bootit-next-generation.htm"&gt;BootIt NG&lt;/a&gt; - simple partitioning tool.&lt;br /&gt;&lt;br /&gt;Unfortunately, BootIt NG didn't come with a standard floppy image (that I could directly capture in VPC) and I didn't know how to create a floppy image so I had to search once more.  WinImage was overwhelmingly popular and I tried it - worked great.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.winimage.com/"&gt;WinImage&lt;/a&gt; - tool for creating disk images - I used it to create a blank floppy disk to capture in VPC.&lt;br /&gt;&lt;br /&gt;In the VPC, I captured the blank floppy image that I created with WinImage.  I then used the makedisk app in the BootIt NG download to write the BootIt NG stuff to the floppy.  I rebooted the VPC and used the menus to expand the partition to consume all available space and then released the floppy image.  Finally, I booted the VPC again and had all the space available as I had hoped.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3864748019745154269?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3864748019745154269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3864748019745154269&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3864748019745154269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3864748019745154269'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/01/expanding-vhd.html' title='expanding a VHD'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-7534873690476990854</id><published>2008-01-04T08:07:00.000Z</published><updated>2008-01-04T08:13:50.327Z</updated><title type='text'>any 3D movie posters in Denver?</title><content type='html'>I've not seen full-color holograms nor have I seen a hologram the size of a movie poster.  There are now some full-color holographic movie posters around.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Last week, 10 U.S. theaters rolled out full-color 3-D posters with motion and photorealistic detail to promote the movie How She Move. Made by Quebecois company RabbitHoles, the advertisements feature one of the film's characters tearing up the dance floor in an eight-second clip that can be "played" in 3-D by walking from left to right of the poster. Despite the images' slightly transparent quality, what you see is pretty close to the real thing.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;To produce the imagery, RabbitHoles creates a 3-D computer model of the object that will be turned into a hologram. A virtual camera takes snapshots at different angles, and a software algorithm developed by RabbitHoles calculates how light would bounce off each angle in the scene. The result is up to 1,280 different snapshots, or frames, that not only hold color, distance and angle info, but light patterns as well.&lt;br /&gt;&lt;br /&gt;To record the actual hologram onto a sheet of film, the data is sent to a printer that divides each frame into pixels -- a poster-size print can hold up to 700,000. The company then exposes each pixel with red, green and blue pulsed lasers.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;-- from &lt;a href="http://www.wired.com/entertainment/hollywood/news/2008/01/rabbit_holes"&gt;New 3-D Technique&lt;/a&gt; in Wired&lt;br /&gt;&lt;br /&gt;Sounds impressive, but I'd like to see one first-hand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7534873690476990854?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7534873690476990854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7534873690476990854&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7534873690476990854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7534873690476990854'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/01/any-3d-movie-posters-in-denver.html' title='any 3D movie posters in Denver?'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-998617404499588619</id><published>2008-01-02T08:05:00.000Z</published><updated>2008-01-02T08:18:02.096Z</updated><title type='text'>Starting the kids on the XO</title><content type='html'>Yesterday was the first day we let the boys play with the XO.  Today, we let them play some more and they continue to explore.  Isaac and Spencer both really like the video recorder but Isaac spent a surprising amount of time calculating.  Blogs and news reports say the keyboard is built for tiny hands, so here is a picture in case you haven't played with one - my hand is on the right.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_CJe_TZuR_n4/R3tGpAx_xyI/AAAAAAAAAF8/X8wdf73k0_Q/s1600-h/little+keys.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_CJe_TZuR_n4/R3tGpAx_xyI/AAAAAAAAAF8/X8wdf73k0_Q/s320/little+keys.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5150788269226575650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Luke and I played with our XO's together yesterday and learned about sharing applications and chatting.  Sharing applications is very cool, but getting chatting started seemed to be non-trivial.  When the applications open, they default to private but can be changed to the neighborhood.  When someone in the neighborhood is sharing an application, you can see it in the neighborhood view.  For example, Luke shared the word processor app and I clicked on it to join in.  We each saw our cursor and the other person's cursor and could edit concurrently.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_CJe_TZuR_n4/R3tGpQx_xzI/AAAAAAAAAGE/dJyHo-mOBQM/s1600-h/the+neighborhood.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/R3tGpQx_xzI/AAAAAAAAAGE/dJyHo-mOBQM/s320/the+neighborhood.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5150788273521542962" /&gt;&lt;/a&gt;&lt;br /&gt;Above is the network view showing access points and mesh networks in the area - not too exciting here since this is from home.  It is an interesting view and I hope to see more systems adopting something similar.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_CJe_TZuR_n4/R3tGpgx_x0I/AAAAAAAAAGM/01qnBrnaWKg/s1600-h/fun+or+work.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_CJe_TZuR_n4/R3tGpgx_x0I/AAAAAAAAAGM/01qnBrnaWKg/s320/fun+or+work.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5150788277816510274" /&gt;&lt;/a&gt;&lt;br /&gt;Kinda hard to tell if Spencer is having fun or working but he's doing something and seems interested to continue doing it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-998617404499588619?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/998617404499588619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=998617404499588619&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/998617404499588619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/998617404499588619'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2008/01/starting-kids-on-xo.html' title='Starting the kids on the XO'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp0.blogger.com/_CJe_TZuR_n4/R3tGpAx_xyI/AAAAAAAAAF8/X8wdf73k0_Q/s72-c/little+keys.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-3345765601719136630</id><published>2007-12-12T07:54:00.000Z</published><updated>2007-12-12T08:19:57.663Z</updated><title type='text'>Levitt, Freakonomics</title><content type='html'>&lt;a href="http://sethlevine.typepad.com/vc_adventure/2005/04/freakonomics.html"&gt;Seth Levine&lt;/a&gt; influenced me to 'read' Freakonomics.  I actually used &lt;a href="http://overdrive.com/"&gt;OverDrive&lt;/a&gt; to listen to the book while working at night.  I didn't retain as much as I would focussed purely on a book but I didn't want to completely waste my nights working.&lt;br /&gt;&lt;br /&gt;The best part of the book for me was that they would give some surprising or shocking conclusion to something and then they would describe how it came to be.  Chapters 1, 2,  and 5 were enlightening to spectacular while 3, 4, and 6 were just interesting to me.  Chapter 1 was about incentives and cheating, how incentives can go wrong, who cheats, and how cheaters might be caught.  Chapter 2 was about information so they detailed a key time in the bringing down of the KKK and considered real estate agent performance. &lt;br /&gt;&lt;br /&gt;Do parents really matter?  That is the question in Chapter 5 and data shows that the amount of time kids spend watching TV doesn't positively correlate their standardized test scores.  In fact, a list of 16 or so issues are considered and I was surprised at others like regular trips to the museum or parents reading daily to the kids don't positively correlate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3345765601719136630?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3345765601719136630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3345765601719136630&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3345765601719136630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3345765601719136630'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/12/levitt-freakonomics.html' title='Levitt, Freakonomics'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-6088362605226280762</id><published>2007-12-10T17:19:00.001Z</published><updated>2007-12-10T17:21:36.567Z</updated><title type='text'>Pika Pika</title><content type='html'>The video below is the first I've heard of Pika Pika.  Interesting; creative.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://flash.revver.com/player/1.0/player.js?mediaId:179642;affiliateId:99434;width:480;height:392" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Some of the stuff is clearly flashlights but other stuff looks pixelated - to the point that it seems like the photos were edited with a Koala Pad on a C64.  Fun idea though!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-6088362605226280762?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/6088362605226280762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=6088362605226280762&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6088362605226280762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6088362605226280762'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/12/pika-pika.html' title='Pika Pika'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-1545547611787077059</id><published>2007-11-27T03:36:00.000Z</published><updated>2007-11-27T03:39:37.748Z</updated><title type='text'>We gotta go to the crappy town where I'm a hero.</title><content type='html'>I bumped into the &lt;a href="http://en.wikipedia.org/wiki/Jaynestown"&gt;Hero of Canton&lt;/a&gt; clip from &lt;a href="http://en.wikipedia.org/wiki/Firefly_%28TV_series%29"&gt;Firefly&lt;/a&gt; tonight and it gave me some good laughs.  Of course, if you aren't a Firefly fan, then it's probably not so fun.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ublUU2ISTMU&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ublUU2ISTMU&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Well done, Joss and crew - that was some great stuff you all created.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1545547611787077059?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1545547611787077059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1545547611787077059&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1545547611787077059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1545547611787077059'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/11/we-gotta-go-to-crappy-town-where-im.html' title='We gotta go to the crappy town where I&apos;m a hero.'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-7880524320679848905</id><published>2007-11-23T07:42:00.000Z</published><updated>2007-11-23T07:46:59.426Z</updated><title type='text'>That's just freaky.</title><content type='html'>Read this Wired article: &lt;a href="http://www.wired.com/science/discoveries/magazine/15-11/st_alphageek"&gt;Harvard Physicist Plays Magician With the Speed of Light&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;... recently she shot a pulse into one [Bose-Einstein condensate] and stopped it — turning the BEC into a hologram, a sort of matter version of the pulse. Then she transferred that matter waveform into an entirely different BEC nearby — which emitted the original light pulse.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Awesome... and freaky :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7880524320679848905?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7880524320679848905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7880524320679848905&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7880524320679848905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7880524320679848905'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/11/thats-just-freaky.html' title='That&apos;s just freaky.'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-4811309359770315516</id><published>2007-11-14T21:45:00.000Z</published><updated>2007-11-14T21:49:18.455Z</updated><title type='text'>To find out what you don't know, you have to do</title><content type='html'>Google Alerts informed me of &lt;a href="http://selenianboondocks.blogspot.com/2007/11/what-we-dont-yet-know.html"&gt;this insightful article&lt;/a&gt;.  The whole thing is interesting, but the clip that jumped out at me was this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;That's one of the big things I've learned over the past three years at Masten Space Systems - you never know how much you really don't know until you try to find out.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;We often talk about the importance of knowing what you know and don't know, but sometimes we forget how to discover what we really don't know.  It isn't just about thinking and analyzing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4811309359770315516?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4811309359770315516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4811309359770315516&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4811309359770315516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4811309359770315516'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/11/to-find-out-what-you-dont-know-you-have.html' title='To find out what you don&apos;t know, you have to do'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-4854656998358830912</id><published>2007-11-12T16:59:00.000Z</published><updated>2007-11-12T17:07:00.441Z</updated><title type='text'>Solar Power Options</title><content type='html'>A few years ago, my neighbor offered me solar panels that he wasn't using.  I thought that was cool and I looked into what I'd need so I could use them.  At the time, I'd need some stuff and batteries - that batteries are more important than the other stuff because they are so expensive.&lt;br /&gt;&lt;br /&gt;If the neighbor was still there and was still offering the panels, I'd take them now because it sounds like you don't need batteries now.  My understanding, based on a brief discussion with BB, is that Xcel will buy any excess electricity generated so there is no need for batteries any more.  Cool - too bad the neighbor moved!&lt;br /&gt;&lt;br /&gt;I just read about a new option today on &lt;a href="http://www.wired.com/"&gt;Wired&lt;/a&gt;.  I was actually enjoying &lt;a href="http://www.wired.com/culture/lifestyle/news/2007/10/st_trouble"&gt;this excellent article, Thanks to Google's Tools, I'm the Most Efficient Time-Waster Ever&lt;/a&gt; and then I spotted &lt;a href="http://www.wired.com/science/discoveries/news/2007/02/72752"&gt;this article, Selling Homeowners a Solar Dream&lt;/a&gt;.  Pretty interesting stuff: this new company puts everything in place and you agree to buy your power from them at a fixed rate.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://renu.citizenre.com/"&gt;Citizenrē&lt;/a&gt; - take a look - interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4854656998358830912?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4854656998358830912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4854656998358830912&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4854656998358830912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4854656998358830912'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/11/solar-power-options.html' title='Solar Power Options'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-5980138019402886676</id><published>2007-11-07T18:28:00.000Z</published><updated>2007-11-07T18:34:47.252Z</updated><title type='text'>XO Production Starting / Buy One Get One</title><content type='html'>I signed up to buy an XO a year or two ago and the time is finally getting close!  Production runs of the XO start this month and supposedly we'll be able to buy an XO sometime around Nov 12.  To buy an XO, you pay $400 which results in you getting one for yourself and giving one to a child somewhere.  &lt;a href="http://www.xogiving.org/"&gt;More info here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yes, they need medicine, food, etc. but help them bridge the technology gap too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-5980138019402886676?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/5980138019402886676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=5980138019402886676&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5980138019402886676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5980138019402886676'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/11/xo-production-starting-buy-one-get-one.html' title='XO Production Starting / Buy One Get One'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-961298350201960799</id><published>2007-11-05T04:46:00.000Z</published><updated>2007-11-05T04:56:33.267Z</updated><title type='text'>Launch Log 2007.11.03</title><content type='html'>We only had two launches, but both were great flights.  Our first was an Estes Mean Machine, we call it the Rainbow Machine, on an Aerotech E15 motor.  It took a second for the rocket to lift off but it then flew straight and higher than I had imagined it would.  Our second flight was a Level 1 certification attempt using the Bullet (booster only) on an Aerotech H128W motor.  The Bullet flew straight and deployed perfectly at apogee, but had a rough landing invalidating the certification attempt.&lt;br /&gt;&lt;br /&gt;The unfortunate landing: by catching the tip of the fin here, it cracked the fin root and will require the joint be soaked in thin epoxy before flying the Bullet again.&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_CJe_TZuR_n4/Ry6iPLfF-sI/AAAAAAAAAFs/zVMLm5DpH00/s1600-h/touchdown.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/Ry6iPLfF-sI/AAAAAAAAAFs/zVMLm5DpH00/s400/touchdown.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5129215407286516418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Shanelle caught this pretty launch while we were there.  This is not one of our rockets but it sure is a nice picture so I'm posting it.&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_CJe_TZuR_n4/Ry6iPLfF-tI/AAAAAAAAAF0/gSShEuo0rjY/s1600-h/prettyLaunch.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/Ry6iPLfF-tI/AAAAAAAAAF0/gSShEuo0rjY/s400/prettyLaunch.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5129215407286516434" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-961298350201960799?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/961298350201960799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=961298350201960799&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/961298350201960799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/961298350201960799'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/11/launch-log-20071103.html' title='Launch Log 2007.11.03'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp1.blogger.com/_CJe_TZuR_n4/Ry6iPLfF-sI/AAAAAAAAAFs/zVMLm5DpH00/s72-c/touchdown.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-2270668973637859485</id><published>2007-11-01T17:22:00.000Z</published><updated>2007-11-01T17:26:05.096Z</updated><title type='text'>installing mysql and sshd on Ubuntu 7.10</title><content type='html'>One of my programmers asked me how to install MySQL and SSHd on Ubuntu 7.10.  I assumed that it would be Applications -&gt; Add / Remove -&gt; MySQL and SSHd.  I learned that Ubuntu 7.10, out of the box, doesn't have the repositories configured for these servers and also that there is a little different approach for services.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Here's what I ended up doing, and I like it:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;System -&gt; Administration -&gt; Software Sources&lt;br /&gt;    Ubuntu Software&lt;br /&gt;        X Canonical-supported Open Source software&lt;br /&gt;        X Community-maintained Open Source software&lt;br /&gt;        X Software restricted by copyright or legal issues&lt;br /&gt;    Third-party Software&lt;br /&gt;        X http://archive.canonical.com/ubuntu gutsy partner&lt;br /&gt;    Close&lt;br /&gt;&lt;br /&gt;Applications -&gt; Accessories -&gt; Terminal&lt;br /&gt;    sudo apt-get install mysql-server&lt;br /&gt;    sudo apt-get install openssh-server&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Good stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2270668973637859485?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2270668973637859485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2270668973637859485&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2270668973637859485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2270668973637859485'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/11/installing-mysql-and-sshd-on-ubuntu-710.html' title='installing mysql and sshd on Ubuntu 7.10'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-6416485380184003318</id><published>2007-10-31T15:17:00.000Z</published><updated>2007-10-31T15:23:51.339Z</updated><title type='text'>von Braun, Space Frontier</title><content type='html'>I definitely read this book again. von Braun covered details about every aspect of space flight at the time: the reason for the countdown starts the book, details about the various types of escape rockets and how they work are covered, different styles of pumping and pressurizing liquid fuels and discussed, and all kinds of other stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-6416485380184003318?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/6416485380184003318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=6416485380184003318&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6416485380184003318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6416485380184003318'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/10/von-braun-space-frontier.html' title='von Braun, Space Frontier'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-2689190250979097063</id><published>2007-10-30T19:34:00.000Z</published><updated>2007-10-30T19:51:56.279Z</updated><title type='text'>Rocketplane Global... XCOR Aerospace...</title><content type='html'>The two companies that have lingered on my mind since the X Prize Cup have been &lt;a href="http://www.rocketplaneglobal.com/"&gt;Rocketplane Global&lt;/a&gt; and &lt;a href="http://www.xcor.com/"&gt;XCOR Aerospace&lt;/a&gt;.  I hope that both companies become tremendously successful, but I spend a lot of time wondering if either of the companies can find success.&lt;br /&gt;&lt;br /&gt;On the surface, XCOR seems to me to be the most likely company in the new race-to-space to succeed.  The things that I see on the surface is that they have a couple rocket planes that actually fly with the rockets, they have developed and patented technologies critical to improving the engines (and others are using the technologies), and they aren't publicly speculating / promising when flights will be available.&lt;br /&gt;&lt;br /&gt;XCOR's &lt;a href="http://www.xcor.com/products/vehicles/xerus.html"&gt;Xerus&lt;/a&gt; should be impressive if they can pull it off.  Having built and flown the &lt;a href="http://www.xcor.com/products/vehicles/ez-rocket.html"&gt;EZ-Rocket&lt;/a&gt; 20+ times and built and flown the next generation, &lt;a href="http://www.xcor.com/products/vehicles/rocket-racer.html"&gt;Rocket Racer&lt;/a&gt;, it seems that they are evolving and iterating fantasticly.&lt;br /&gt;&lt;br /&gt;Rocketplane has all the right people and just dumped the Leer that they've been working on for a couple years.  To me, that says that they have no hope - sounds just like a dot-com run by rich kids.  On the other hand, they are contracting almost everything out except for the stuff that is truely their core competency.&lt;br /&gt;&lt;br /&gt;No matter what happens - those people in those companies are doing some way cool stuff.  Good luck to all - yes, I think that it takes some luck to make a successful company.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-2689190250979097063?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/2689190250979097063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=2689190250979097063&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2689190250979097063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/2689190250979097063'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/10/rocketplane-global-xcor-aerospace.html' title='Rocketplane Global... XCOR Aerospace...'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-757926938766494833</id><published>2007-10-24T01:52:00.000Z</published><updated>2007-10-24T02:04:09.092Z</updated><title type='text'>The purpose of the countdown is to:</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;Assure maximum safety for flight crews (if any), ground crews, and equipment, while the vehicle is prepared for flight.&lt;br /&gt;&lt;br /&gt;Avoid wearing out critical flight or ground equipment by activating it too long before launch.&lt;br /&gt;&lt;br /&gt;Enable the launch director to launch at an exact instant - corresponding, say, to a favorable position of celestial objects, or to requirements for orbital rendezvous.&lt;br /&gt;&lt;br /&gt;Synchronize launch preparations with supporting operations, such as the readying of radars and tracking cameras, or the setting up of road blocks near the launch site.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;- Dr. Wernher von Braun&lt;br /&gt;&lt;br /&gt;I think that for many hobby rocketeers with kids, that last bit may need to be changed to, "Synchronize launch preparations with supporting operations, such as the rounding up of the kids, the covering of the little ears, readying of radars, ...".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-757926938766494833?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/757926938766494833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=757926938766494833&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/757926938766494833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/757926938766494833'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/10/purpose-of-countdown-is-to.html' title='The purpose of the countdown is to:'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-5538785061907681192</id><published>2007-10-19T15:16:00.000Z</published><updated>2007-10-19T15:24:13.168Z</updated><title type='text'>Close to a Thor Simulation</title><content type='html'>Entering rocket details into RockSim is not my favorite task.  Fortunately for me, I almost finished creating the Thor in RockSim - that means that I'll be able to start running simulations soon.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_CJe_TZuR_n4/RxjK3KG23DI/AAAAAAAAAFk/iw7wE4WF4us/s1600-h/Thor20071019.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_CJe_TZuR_n4/RxjK3KG23DI/AAAAAAAAAFk/iw7wE4WF4us/s400/Thor20071019.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5123067625088670770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As for construction: Greg M provided the drill press and drilled the holes in the aft centering ring last night for the motor retainer.  Joe at HobbyTown helped me find another forward centering ring since one of the rings provided with the kit was consumed by the motor retainer.  I expect to set all the centering rings today and hope to do some glassing with Warren on the airframe tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-5538785061907681192?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/5538785061907681192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=5538785061907681192&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5538785061907681192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5538785061907681192'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/10/close-to-thor-simulation.html' title='Close to a Thor Simulation'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp0.blogger.com/_CJe_TZuR_n4/RxjK3KG23DI/AAAAAAAAAFk/iw7wE4WF4us/s72-c/Thor20071019.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-7502685406102567429</id><published>2007-10-17T14:36:00.000Z</published><updated>2007-10-17T14:45:30.908Z</updated><title type='text'>Clary, Rocket Man</title><content type='html'>i borrowed Rocket Man from the local library with the hope of learning a bit about Robert Goddard.  The book was pretty difficult to read, so I don't expect to ever read it again.  The biggest problem was that the author bounced around in time so it was confusing about what had happened versus what was going on at the time.  Another confusing bit was that the author used different names for the same people, but there were so many names in the book that it became a blur.&lt;br /&gt;&lt;br /&gt;A particularly interesting bit in the book was that they dispute a lot of Goddard's claims.  Goddard was certainly an intelligent visionary, but he was exclusive and when he found people that were likely smarter or more qualified he either convinced them to work on his team or he shunned them.  Goddard received more publicity than any other scientist, but he never published in scientific journals.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7502685406102567429?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7502685406102567429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7502685406102567429&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7502685406102567429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7502685406102567429'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/10/clary-rocket-man.html' title='Clary, Rocket Man'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-3692039920828303149</id><published>2007-09-23T05:07:00.000Z</published><updated>2007-09-23T05:34:32.020Z</updated><title type='text'>Launch Log 2007.09.22</title><content type='html'>We had 7 launches on this awesome late-summer afternoon.  We pulled out the Renegade which hasn't flown in a while, melted the Stingray, and broke the fin on the Purple Rhino - again.  Spencer wanted to fly the Firestreak SST but it has a broken fin from little boys playing with rockets so we'll have to wait for a replacement part.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Firehawk | 1/2 A3 | straight flight, higher than usual on 1/2 A3, drifted in recovery to land 100 yards from pad&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Renegade | C6 | Isaac did most of the prep, some weather cocking, drifted in recovery to land 120 yards from pad&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Army Man | B6 | impressive flight on a B6; no weather cocking but drifted a lot in recovery; landed about 200 yards from pad - bounced in a parking lot&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Stingray | 1/2 A3 | Spencer thought about prep'ing the rocket, weather cocked just enough to land close to pad on streamer recovery&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Purple Rhino | 4 x A10 | beautiful flight - love this rocket; no weather cocking; light wind so landed pretty close to pad&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Firehawk | 1/2 A3 | neighborhood kid joined us and did the prep; chute got stuff in ejection so motor ejected; no damage to rocket (other than lost motor retainer&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Stingray | 1/2 A3 | the ejection charge blew the nose-cone off the rocket and melted / deformed the top 60% of the fuselage; fuselage and nose-cone both recovered but rocket is damaged beyond repair because of the deforming of the fuselage&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Before the final Stingray flight, we attempted to launch Mighty Mouse 2.  I didn't have anything to use for flash-in-the-pan ignition, so we tried using solar igniters.  After 3 attempts of getting rocket to pad, count-down, fail, check connection and for shorts, we gave up.  We're thinking we need to build or buy a bigger launcher (one that uses a bigger battery anyway).&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_CJe_TZuR_n4/RvX5d6G22_I/AAAAAAAAAFE/ko8j2kJW2gQ/s1600-h/mightymouse2-20070922.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_CJe_TZuR_n4/RvX5d6G22_I/AAAAAAAAAFE/ko8j2kJW2gQ/s320/mightymouse2-20070922.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5113267244158606322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spencer can't hold down the launch key, so Isaac holds the key and Spencer pushes the button.&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_CJe_TZuR_n4/RvX6OqG23AI/AAAAAAAAAFM/RMhwWPZXAzs/s1600-h/stingray-20070922-pad.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_CJe_TZuR_n4/RvX6OqG23AI/AAAAAAAAAFM/RMhwWPZXAzs/s320/stingray-20070922-pad.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5113268081677229058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Team work - and the rocket lifts off.  Note that it is the person pushing the launch button that does the count-down.&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_CJe_TZuR_n4/RvX6eKG23BI/AAAAAAAAAFU/V8JCVroxvHM/s1600-h/stingray-20070922-liftoff.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/RvX6eKG23BI/AAAAAAAAAFU/V8JCVroxvHM/s320/stingray-20070922-liftoff.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5113268347965201426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spencer finishes off his launch by doing his own retrieval.  Well done, Spencer.&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_CJe_TZuR_n4/RvX6xaG23CI/AAAAAAAAAFc/P540cg1i7Zs/s1600-h/stingray-20070922-retrieval.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_CJe_TZuR_n4/RvX6xaG23CI/AAAAAAAAAFc/P540cg1i7Zs/s320/stingray-20070922-retrieval.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5113268678677683234" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3692039920828303149?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3692039920828303149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3692039920828303149&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3692039920828303149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3692039920828303149'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/09/launch-log-20070922.html' title='Launch Log 2007.09.22'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp0.blogger.com/_CJe_TZuR_n4/RvX5d6G22_I/AAAAAAAAAFE/ko8j2kJW2gQ/s72-c/mightymouse2-20070922.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-6849129848632558350</id><published>2007-09-23T04:53:00.001Z</published><updated>2007-09-23T05:05:44.261Z</updated><title type='text'>Bullet Ground-Testing</title><content type='html'>I've been reading a lot lately that you need to always ground-test to make sure that the charge can separate the loaded rocket.  I had actually planned to fly the Bullet without ground-testing but I'm ready to fly the Bullet and the next available date isn't until November so ground-testing sounded kinda fun.&lt;br /&gt;&lt;br /&gt;I prep'd the rocket (without an engine) and fed the wire for the Main ejection canister through the static port hole.  Some people, so I'm told, do their ground-testing using a tube taped to the static port hole and they suck on the tube and then when they release, the AV bay represurrized and the computer fires the charges.  I manually tested the computer separately a few days ago using it's built-&lt;br /&gt;in test sequences and am just testing the separation in my ground-testing here.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp1.blogger.com/_CJe_TZuR_n4/RvXyWKG229I/AAAAAAAAAE0/qrBqKP9Z5N4/s1600-h/bullet-20070922-ready.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/RvXyWKG229I/AAAAAAAAAE0/qrBqKP9Z5N4/s200/bullet-20070922-ready.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5113259414433225682" /&gt;&lt;/a&gt;&lt;a href="http://bp2.blogger.com/_CJe_TZuR_n4/RvXyWaG22-I/AAAAAAAAAE8/uSH0yecu9ZQ/s1600-h/bullet-20070922-pop.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_CJe_TZuR_n4/RvXyWaG22-I/AAAAAAAAAE8/uSH0yecu9ZQ/s200/bullet-20070922-pop.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5113259418728192994" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Isaac thought that the test failed; he knew that the rocket wasn't going to launch but he thought that the chute was supposed to open.  I used the canisters that I built a couple weeks ago and calculated that I needed about 2.5 g of FFFFg black powder for the ejection charge.  A failure would have either been the whole upper section shredding from too big a charge or the nose code not popping out with force from too small a charge.  Looks to me like the 2.5 g was just right.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-6849129848632558350?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/6849129848632558350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=6849129848632558350&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6849129848632558350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/6849129848632558350'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/09/bullet-ground-testing.html' title='Bullet Ground-Testing'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp1.blogger.com/_CJe_TZuR_n4/RvXyWKG229I/AAAAAAAAAE0/qrBqKP9Z5N4/s72-c/bullet-20070922-ready.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-7401388540130244616</id><published>2007-09-23T04:39:00.000Z</published><updated>2007-09-23T04:51:59.298Z</updated><title type='text'>Launch Log 2007.09.20</title><content type='html'>We met up with some friends at the park at 6p to play and launch some rockets.  We had 5 launches and ended the evening by losing Mighty Mouse - yes, the original.  Very sad.&lt;br /&gt;&lt;br /&gt;By the time we all ate, it was after 6:30p - that means the sun was about to go down.  The field had been in use by a bunch of soccer teams, so we weren't just waiting to finish eating.  We performed a rapid setup and prep on the Firestreak SST and launched it for a nearly perfect flight on a 1/2 A3.&lt;br /&gt;&lt;br /&gt;The second flight was the Firehawk on an A3, but we had intended to use a 1/2 A3.  With dusking coming and a bit of a break, we needed to keep landings close to the pad and that meant lower flights.  The Firehawk is a great flyer and it went out of sight on the A3.  There was almost no weather cocking so a long walk crossed my mind; fortunately, the chute only opened about 70% so decent was quick but not destructive.&lt;br /&gt;&lt;br /&gt;Third flight was the Firestreak SST again but this time with Sam pushing the button.  Another great flight on a 1/2 A3 - Spencer loves his rocket and set it asside with the intention of us launching it again right after launching the Stingray.  The Stingray was unexciting on a 1/2 A3 - just too small to see in the near dusk conditions.&lt;br /&gt;&lt;br /&gt;The Firestreak SST wasn't ready for a flight yet, so I loaded up Mighty Mouse for a flight on a C6.  What was I thinking?  Bad choice - so long Mighty Mouse.  After spending some time looking for Mighty Mouse, we cleaned up and went home.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-7401388540130244616?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/7401388540130244616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=7401388540130244616&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7401388540130244616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/7401388540130244616'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/09/launch-log-20070920.html' title='Launch Log 2007.09.20'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-8036054380799284346</id><published>2007-09-16T05:58:00.000Z</published><updated>2007-09-16T06:15:23.987Z</updated><title type='text'>Recovery Canisters</title><content type='html'>When I built the Bullet, I went with a common canister for storing the recovery charges: a PVC cap attached to the AV bay.  Now that I've watched many people prep for flights, I've decided to switch to &lt;a href="http://www.info-central.org/recovery_canister.shtml"&gt;these Polyethylene tubing-based&lt;/a&gt; canisters.  I'm hoping to do ground tests tomorrow for separation for main chute deployment so I made some canisters today.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp1.blogger.com/_CJe_TZuR_n4/RuzHZewuyVI/AAAAAAAAAEU/PGN77DQnlb0/s1600-h/canisterGlue1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/RuzHZewuyVI/AAAAAAAAAEU/PGN77DQnlb0/s200/canisterGlue1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5110678917726783826" /&gt;&lt;/a&gt;&lt;a href="http://bp2.blogger.com/_CJe_TZuR_n4/RuzHZuwuyWI/AAAAAAAAAEc/4GiJ14ZXITo/s1600-h/canisterGlue1wait.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_CJe_TZuR_n4/RuzHZuwuyWI/AAAAAAAAAEc/4GiJ14ZXITo/s200/canisterGlue1wait.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5110678922021751138" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;In the pictures above, you can see the first couple steps I use.  Since the glue takes a moment to set and the ROL article is light on details on technique, I decided to record my steps for future reference.  I found it easiest to put a partial ring of glue around the bottom before involving the e-match.  There would be just a little gap open to get the e-match in.  After the partial ring set, I put the e-match in and put just a small drop of glue in to hold the match and then let that set.  Finally, I'd put in the final bit of glue and fill it out at the bottom.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp2.blogger.com/_CJe_TZuR_n4/RuzI_uwuyXI/AAAAAAAAAEk/AeOVRkPjIp0/s1600-h/canisterGlue2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_CJe_TZuR_n4/RuzI_uwuyXI/AAAAAAAAAEk/AeOVRkPjIp0/s200/canisterGlue2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5110680674368407922" /&gt;&lt;/a&gt;&lt;a href="http://bp2.blogger.com/_CJe_TZuR_n4/RuzI_uwuyYI/AAAAAAAAAEs/_N5kZio9CP4/s1600-h/canisterGlue3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_CJe_TZuR_n4/RuzI_uwuyYI/AAAAAAAAAEs/_N5kZio9CP4/s200/canisterGlue3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5110680674368407938" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The reason for the multiple steps was that putting too much glue in at once made it too difficult to manage the e-match.  For the separation tests tomorrow, I'll need to add 3g of black powder to the canister and cap it with masking tape but the hard part is done now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-8036054380799284346?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/8036054380799284346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=8036054380799284346&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/8036054380799284346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/8036054380799284346'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/09/recovery-canisters.html' title='Recovery Canisters'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp1.blogger.com/_CJe_TZuR_n4/RuzHZewuyVI/AAAAAAAAAEU/PGN77DQnlb0/s72-c/canisterGlue1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-1062470923522080895</id><published>2007-09-10T15:56:00.000Z</published><updated>2007-09-10T16:15:30.037Z</updated><title type='text'>Launch Log 2007.09.09</title><content type='html'>Mom and I briefly attended the Tripoli Colorado commercial launch on Saturday (2007.09.08) but we didn't launch anything.  We got to see an impressive flight on a SkyRipper K motor - that was the first flight I'd seen on a hybrid (other than a couple Alpha Hybrid test flights that blew up the rockets).  I attended the Tripoli Colorado research launch on Sunday (2007.09.09) for about 5 hours and got to see some static tests, more Alpha Hybrid tests (yes, again, they destroyed the rocket), and some big launches on home-built motors.&lt;br /&gt;&lt;br /&gt;When we got home from our trip in the mountains, we all went over to the field by our house and launched a few rockets of our own.  The first flight was Spencers new purple rocket: the &lt;a href="http://www.estesrockets.com/products.php?number=0806"&gt;Firestreak SST&lt;/a&gt;.  The Firestreak SST was purchased to replace Spencer's previous favorite: the 'silver nose' Outlaw which finally broke a fin and is no longer flyable.  The Firestreak SST used a A3-4T for its first flight and flew great but recovery was not ideal: it uses a streamer for recovery but the streamer didn't appear to slow the rocket much.&lt;br /&gt;&lt;br /&gt;Our second flight was Isaac's new &lt;a href="http://www.estesrockets.com/products.php?number=0804"&gt;Firehawk&lt;/a&gt;.  Isaac built and put the decals on the Firehawk himself but I assisted with the glueing.  Isaac even tied the shock cord on.  We flew the Firehawk on an A3-4T but recovery here was also a bit of a problem: chute didn't open right and got tangled up.  We'll have to watch it closely on the next flight - perhaps we didn't pack the chute good enough on this first flight.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp3.blogger.com/_CJe_TZuR_n4/RuVsbwNZHLI/AAAAAAAAAEE/7kajobZuj5o/s1600-h/IsaacPrepingFirehawk.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_CJe_TZuR_n4/RuVsbwNZHLI/AAAAAAAAAEE/7kajobZuj5o/s200/IsaacPrepingFirehawk.jpg" border="0" alt="Isaac preparing Firehawk for first flight." id="BLOGGER_PHOTO_ID_5108608576375037106" /&gt;&lt;/a&gt;&lt;a href="http://bp0.blogger.com/_CJe_TZuR_n4/RuVscANZHMI/AAAAAAAAAEM/creutLpBZsg/s1600-h/IsaacAndFirehawk.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_CJe_TZuR_n4/RuVscANZHMI/AAAAAAAAAEM/creutLpBZsg/s200/IsaacAndFirehawk.jpg" border="0" alt="Isaac posing with Firehawk ready for flight." id="BLOGGER_PHOTO_ID_5108608580670004418" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It was a bit windy: we had to tilt the launch rod quite a bit to keep the rockets coming down within walking distance.&lt;br /&gt;&lt;br /&gt;We flew Mighty Mouse on a B4-2 and Army Man also on a B4-2.  Might Mouse landed in a pine tree but was recovered and had no damage.  Great straight flight and drifted a bit in recovery.  Army Man landed behind the school; Shanelle was hoping it was &lt;em&gt;on&lt;/em&gt; the school but the boys recovered it without trouble.  It flew great on the B4 with very little weather cocking (which is why it landed so far away :) ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1062470923522080895?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1062470923522080895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1062470923522080895&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1062470923522080895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1062470923522080895'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/09/launch-log-20070909.html' title='Launch Log 2007.09.09'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp3.blogger.com/_CJe_TZuR_n4/RuVsbwNZHLI/AAAAAAAAAEE/7kajobZuj5o/s72-c/IsaacPrepingFirehawk.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-3242272548874758479</id><published>2007-09-02T21:31:00.000Z</published><updated>2007-09-02T21:56:25.638Z</updated><title type='text'>Launch Log 2007.09.01</title><content type='html'>We launched at the NCR North Site which is in the Pawnee Grasslands.  The launch ceiling was around 20,000 or 25,000 feet but none of our rockets were sent to even 1/10th that altitude today.  We launched the Purple Rhino, Migthy Mouse, Army Man, and then Mighty Mouse 2.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp2.blogger.com/_CJe_TZuR_n4/RtstcANZHGI/AAAAAAAAADc/nauAjfe8i-g/s1600-h/MightyMouse2onPad20070901.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_CJe_TZuR_n4/RtstcANZHGI/AAAAAAAAADc/nauAjfe8i-g/s200/MightyMouse2onPad20070901.jpg" border="0" alt="Mighty Mouse 2 sitting the pad waiting for launch." id="BLOGGER_PHOTO_ID_5105724561670347874" /&gt;&lt;/a&gt;&lt;a href="http://bp0.blogger.com/_CJe_TZuR_n4/RtstcgNZHHI/AAAAAAAAADk/nZa1XElAlQI/s1600-h/MightyMouse2LiftOff20070901.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_CJe_TZuR_n4/RtstcgNZHHI/AAAAAAAAADk/nZa1XElAlQI/s200/MightyMouse2LiftOff20070901.jpg" border="0" alt="Mighty Mouse 2 lifting off the pad." id="BLOGGER_PHOTO_ID_5105724570260282482" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Our first flight was a flash-in-the-pan ignition of the Rhino.  It flew 4 A10-3T's which carried it high and straight even though only 3 of the 4 motors lit.  The second flight was the Mighty Mouse on a C6-7.  The 7 second delay was nice because that kept the Mighty Mouse pretty close to the pad even though it was a nice, high boost.  The third flight was Army Man with the split set for the center of the rocket.  Past flights of Army Man suggested that it was heavy or not aerodynamic so we used a C6-3; I'm pretty sure it hadn't hit apogee when the chute opened.  We had to walk quite a ways to recover Army Man but we did find it.  Finally, we launched Might Mouse 2 for the first time.  We used 3 A3-4T's with a flash in the pan (but the pan in this case was a Cherry Coke can rather than our usual ceramic dish).  I was worried that the flash wouldn't light all motors because the can wasn't as close as I usually like but all motors did light and it was high and straight.&lt;br /&gt;&lt;br /&gt;We saw a couple dozen other flights.  There were quite a few problems - more than I've seen at a public launch.  One rocket got tangled on the rod, caught fire, and then knocked the launch pad over.  Two rockets went unstable immediately and landed in the viewing area.  Quite a few recovery failures; this one in particular was interesting:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp2.blogger.com/_CJe_TZuR_n4/RtsvCANZHII/AAAAAAAAADs/-NIqNAJnyCI/s1600-h/PinAndBallPrep20070901.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_CJe_TZuR_n4/RtsvCANZHII/AAAAAAAAADs/-NIqNAJnyCI/s200/PinAndBallPrep20070901.jpg" border="0" alt="The pin / ball rocket on the pad preparing for launch." id="BLOGGER_PHOTO_ID_5105726314017004674" /&gt;&lt;/a&gt;&lt;a href="http://bp3.blogger.com/_CJe_TZuR_n4/RtsvCQNZHJI/AAAAAAAAAD0/oO3WQuFD1rk/s1600-h/PinAndBallBoost20070901.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_CJe_TZuR_n4/RtsvCQNZHJI/AAAAAAAAAD0/oO3WQuFD1rk/s200/PinAndBallBoost20070901.jpg" border="0" alt="Beautify flame on the pin / ball rocket." id="BLOGGER_PHOTO_ID_5105726318311971986" /&gt;&lt;/a&gt;&lt;a href="http://bp3.blogger.com/_CJe_TZuR_n4/RtsvCQNZHKI/AAAAAAAAAD8/T4_u7s6z0t4/s1600-h/PinAndBallFuneral20070901.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_CJe_TZuR_n4/RtsvCQNZHKI/AAAAAAAAAD8/T4_u7s6z0t4/s200/PinAndBallFuneral20070901.jpg" border="0" alt="Quite a crowd went out to examine the remains and mourn for the pin / ball." id="BLOGGER_PHOTO_ID_5105726318311972002" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This bowling pin and ball was pretty and flew nicely, but recovery failed completely.  It went ballistic and fortunately landed quite a ways away from the launch line because was a big, fast impact.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-3242272548874758479?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/3242272548874758479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=3242272548874758479&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3242272548874758479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/3242272548874758479'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/09/launch-log-20070901.html' title='Launch Log 2007.09.01'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp2.blogger.com/_CJe_TZuR_n4/RtstcANZHGI/AAAAAAAAADc/nauAjfe8i-g/s72-c/MightyMouse2onPad20070901.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-5427659677883237160</id><published>2007-06-21T17:26:00.000Z</published><updated>2007-06-21T17:41:43.030Z</updated><title type='text'>Launch Log 2007.06.21</title><content type='html'>Isaac woke me up at 6:30a this morning to go launch some rockets.  Unfortunately, I had a production deployment at 2a this morning, so I was slow to get out of bed.  We finally hit the launch site around 7:45a and had some nice launches.  It was a beautiful, warm morning; winds were calm.&lt;br /&gt;&lt;br /&gt;Our first launch was a new Estes Bandit that the local hobby show, Mile Sky Hobbies, gave us.  The owner had hosted a build 'n take booth at an air-show recently and we weren't able to attend so he gave us the model that he had built for demonstration.  The rocket is an E2X kit and flies nice and straight.  Our first flight was on an A8-3 just to verify that it would fly straight.&lt;br /&gt;&lt;br /&gt;Second flight was the tiny, yellow Estes Sting Ray.  Isaac did all the prep including the motor install and launch connection and then launched.  We launched with a 1/2A3 and the tiny thing still went high and far.&lt;br /&gt;&lt;br /&gt;Mighty Mouse took a turn on a B6-6 and had a great flight, as always.  Next, Isaac prep'd the &lt;a href="http://estesrockets.com/products.php?number=0810"&gt;Estes Swift&lt;/a&gt; for it's first flight.  Using a 1/2A3, the rocket went far out of site up and a little to the north.  We heard the motor ejection, but couldn't see any trace of the rocket or smoke.  Isaac is convinced that the Swift is orbitting earth at this very moment.&lt;br /&gt;&lt;br /&gt;The String Ray flew next on a B6-4.  The glide from powered flight to apogee was impressive.  Mighty Mouse flew on a B6-6 and then we flew the String Ray one more time on a B6-6.&lt;br /&gt;&lt;br /&gt;That's 7 flight...  I think we had 8 launches...  I'm forgetting something.  I better start carrying paper or a computer to the launch to record!  Launch prep was far better this time and I remembered all launch rods and parachutes today :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-5427659677883237160?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/5427659677883237160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=5427659677883237160&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5427659677883237160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/5427659677883237160'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/06/launch-log-20070621.html' title='Launch Log 2007.06.21'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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-35653547.post-1241682081366987208</id><published>2007-06-18T04:37:00.000Z</published><updated>2007-06-18T05:01:46.532Z</updated><title type='text'>Under Construction: Talon 2 and Rhino II</title><content type='html'>&lt;p&gt;&lt;br /&gt;In the smallish rockets that I build, the motor mounts have been pretty fun lately.  The two main rockets that I'm working on at the moment are the &lt;a href="http://www.giantleaprocketry.com/products_kits_talon2.asp"&gt;Talon 2&lt;/a&gt; and the &lt;a href="http://www.fliskits.com/products/rocketkits/kit_detail/rhino.htm"&gt;Rhino II&lt;/a&gt;.  The Rhino II is my second Rhino: the first is a cluster with 4 13mm motors; the Rhino II will fly with 5 13mm motors.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp3.blogger.com/_CJe_TZuR_n4/RnYO3X8e9pI/AAAAAAAAAA0/9caBwOgpoRg/s1600-h/DSC_4845.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_CJe_TZuR_n4/RnYO3X8e9pI/AAAAAAAAAA0/9caBwOgpoRg/s200/DSC_4845.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5077261974390109842" /&gt;&lt;/a&gt;&lt;a href="http://bp0.blogger.com/_CJe_TZuR_n4/RnYO3n8e9qI/AAAAAAAAAA8/Vny1Ks46EYA/s1600-h/DSC_4848.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_CJe_TZuR_n4/RnYO3n8e9qI/AAAAAAAAAA8/Vny1Ks46EYA/s200/DSC_4848.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5077261978685077154" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The Talon 2 my first Talon kit - it just has a 2 in the name because Giant Leap makes a bunch of different sizes of the kit.  This kit is a 'high power' kit similar to the Bullet, but far more complex to build.  The motor mount is shown below just before I assembled it into the rocket.  The black on the one end is the motor retainer that uses snap rings rather than a screw-on cap like the retainer on the Bullet.  The wire loop on the motor mount is the shock-cord mount - again, different from the U-bolt used by the Bullet.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp1.blogger.com/_CJe_TZuR_n4/RnYPh38e9rI/AAAAAAAAABE/8BJGuJ6BGlk/s1600-h/DSC_4853.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/RnYPh38e9rI/AAAAAAAAABE/8BJGuJ6BGlk/s200/DSC_4853.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5077262704534550194" /&gt;&lt;/a&gt;&lt;a href="http://bp1.blogger.com/_CJe_TZuR_n4/RnYPh38e9sI/AAAAAAAAABM/pXR0gov_3-g/s1600-h/DSC_4850.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/RnYPh38e9sI/AAAAAAAAABM/pXR0gov_3-g/s200/DSC_4850.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5077262704534550210" /&gt;&lt;/a&gt;&lt;a href="http://bp1.blogger.com/_CJe_TZuR_n4/RnYPh38e9tI/AAAAAAAAABU/ZFXD1sHN5Jc/s1600-h/DSC_4857.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/RnYPh38e9tI/AAAAAAAAABU/ZFXD1sHN5Jc/s200/DSC_4857.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5077262704534550226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The motor mount in the Talon 2 is 29mm in diameter and about 18" long: that's pretty big for as small a rocket as it is.  It uses G-10 fins which is a new material for me to work with.  G-10 is necessary for bigger, faster rockets because it is a lot stronger and less flexible than plywood.  One curiousity is that it uses a nylon shock-cord with kevlar sleeve rather than a simple kevlar shock-cord - I'm not sure why that is yet.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-1241682081366987208?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/1241682081366987208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=1241682081366987208&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1241682081366987208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/1241682081366987208'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/06/under-construction-talon-2-and-rhino-ii.html' title='Under Construction: Talon 2 and Rhino II'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp3.blogger.com/_CJe_TZuR_n4/RnYO3X8e9pI/AAAAAAAAAA0/9caBwOgpoRg/s72-c/DSC_4845.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35653547.post-4568804205754379717</id><published>2007-06-04T17:52:00.001Z</published><updated>2007-06-04T17:58:09.741Z</updated><title type='text'>NCR June Launch</title><content type='html'>No - I didn't launch the Bullet this weekend.  It was an awesome weekend of rocketry, though.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_CJe_TZuR_n4/RmRRi5wjjJI/AAAAAAAAAAk/35WhROICTLc/s1600-h/dragRace20070602.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_CJe_TZuR_n4/RmRRi5wjjJI/AAAAAAAAAAk/35WhROICTLc/s400/dragRace20070602.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5072268740387900562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the picture above, the two rockets were supposed to drag-race.  I believe that the rules are the winner has the best 2 out of 3 of: first to altitude, highest altitude, and first to land.  Art, with his BAMF, was the obvious winner in this launch because Dougs camera rocket didn't fire.  The next day, they tried again and both rockets launched, but Doug's rocket was only thinking about getting to the ground first: it went up, turned over and went back down.  I'm pretty sure it was super-sonic by the time it landed because it was really screaming and I was well over a mile away and could here it quite loudly.  The nose cone was buried 2 feet in the hard-packed desert dirt.  Art won again.&lt;br /&gt;&lt;br /&gt;Later on the day, after dozens of other cool flights, this 14 foot long Saturn V launched.  Most impressive:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_CJe_TZuR_n4/RmRRjJwjjKI/AAAAAAAAAAs/v91SWewk9Vs/s1600-h/saturnV20070603.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_CJe_TZuR_n4/RmRRjJwjjKI/AAAAAAAAAAs/v91SWewk9Vs/s400/saturnV20070603.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5072268744682867874" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35653547-4568804205754379717?l=puregeekjoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://puregeekjoy.blogspot.com/feeds/4568804205754379717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35653547&amp;postID=4568804205754379717&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4568804205754379717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35653547/posts/default/4568804205754379717'/><link rel='alternate' type='text/html' href='http://puregeekjoy.blogspot.com/2007/06/ncr-june-launch.html' title='NCR June Launch'/><author><name>MrTidy OTR</name><uri>http://www.blogger.com/profile/09150577947152681977</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://bp0.blogger.com/_CJe_TZuR_n4/RmRRi5wjjJI/AAAAAAAAAAk/35WhROICTLc/s72-c/dragRace20070602.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
