<?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-6009552102277600745</id><updated>2012-02-07T11:55:27.800-08:00</updated><title type='text'>Mercenary Code</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mercenary-code.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mercenary-code.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>SamH</name><uri>http://www.blogger.com/profile/05789166518145984818</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>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6009552102277600745.post-766401987014496542</id><published>2012-02-07T11:55:00.000-08:00</published><updated>2012-02-07T11:55:27.805-08:00</updated><title type='text'>Class file X is missing in scala</title><content type='html'>&lt;blockquote&gt;class file needed by X is missing. reference value Y of Z refers to nonexisting symbol. &lt;/blockquote&gt;This can be caused if you are using the maven-bundle-plugin to generate OSGI bundles if you forget to include the packet in the "Export-Package" list. This can be a very frustrating error to diagnose. In my option it is a bug in the bundle plugin because it allows you to export classes that are unusable. Hopefully google picks this up and saves someone in the future some time (probably me).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6009552102277600745-766401987014496542?l=mercenary-code.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mercenary-code.blogspot.com/feeds/766401987014496542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6009552102277600745&amp;postID=766401987014496542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/766401987014496542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/766401987014496542'/><link rel='alternate' type='text/html' href='http://mercenary-code.blogspot.com/2012/02/class-file-x-is-missing-in-scala.html' title='Class file X is missing in scala'/><author><name>SamH</name><uri>http://www.blogger.com/profile/05789166518145984818</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-6009552102277600745.post-8677359206379584348</id><published>2010-05-18T09:59:00.000-07:00</published><updated>2010-05-18T10:30:55.605-07:00</updated><title type='text'>JSCoverage, cobertura and selenium</title><content type='html'>I spent a few hours this morning trying to add code coverage to our javascript code base. I came across the pretty well written &lt;a href="http://siliconforks.com/jscoverage/"&gt;jscoverage&lt;/a&gt; tool and liked the look of the results. What I didn't like was the output format, I needed a way to collect the results for use in continuous integration. We use hudson and the cobertura plugin successfully for both c++ and java projects so I took a crack at converting the jscoverage data into something usable in our system.&lt;br /&gt;&lt;br /&gt;Here's what I came up with: &lt;a href="https://gist.github.com/0ea3404276df86296099"&gt;JSCoverage to Cobertura&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I based my solution off of the reporting code embedded in the jscoverage-server generated files. That report function was the main difference between the regular jscoverage output and the jscoverage-server output, by sending this code with the request we can use the stock jscoverage generated files. My scripts are written in ruby but could be easily ported to other languages, the key is really the function that is uploaded and evaluated inside the browser, that returns a hunk of json that is a map of filenames to arrays of line hit counts. I call the collect_coverage function in the teardown of each of my selenium tests and since the @@coverage variable is shared across all of the test cases all of the runs are merged together so I get a good picture of the coverage. Obviously there is no branch coverage but if jscoverage were to get that capability it would be relatively straight forward to add it to the cobertura output.&lt;br /&gt;&lt;br /&gt;One problem is that the collection of data is only 'test-driver' initiated, this means its impossible to test 'exit' behavior or tests that exercise more than one page (since the coverage information is kept in the DOM it is lost on reload). One way to handle this would be inverting the control and having a POST occur before the page is closed (which is what jscoverage-server aimed to accomplish) but that requires alot more plumbing work which makes it less flexible, more likely to break. Plus this is not much of an issue when running javascript unit tests since the page is never reloaded.&lt;br /&gt;&lt;br /&gt;Using this setup we now have the javascript coverage of our unit and acceptance tests run by selenium converted to the cobertura xml format and tracked in hudson, isn't open source great! Let me know if there are issues with script in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6009552102277600745-8677359206379584348?l=mercenary-code.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mercenary-code.blogspot.com/feeds/8677359206379584348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6009552102277600745&amp;postID=8677359206379584348' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/8677359206379584348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/8677359206379584348'/><link rel='alternate' type='text/html' href='http://mercenary-code.blogspot.com/2010/05/jscoverage-cobertura-and-selenium.html' title='JSCoverage, cobertura and selenium'/><author><name>SamH</name><uri>http://www.blogger.com/profile/05789166518145984818</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-6009552102277600745.post-8612470249930759504</id><published>2010-04-14T13:38:00.001-07:00</published><updated>2010-04-14T14:34:07.286-07:00</updated><title type='text'>Scala Constructor Oddities and NPEs</title><content type='html'>While trying to track down a bug today I discovered a set of behaviors in scala that seem very dangerous to me and they exposed a few scala implementation details I wasn't expecting to see. The first thing I found was its trivial to make a class that is impossible to construct:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class UnConstructableClass{&lt;br /&gt;  def dontExcept() { b.size}&lt;br /&gt;  dontExcept&lt;br /&gt;  val b = List()&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you run "new UnConstructableClass", you will get a NullPointerException. It turns out that while the object is being constructed all of the fields (val and var) are assigned null before that line in the constructor is run, so its possible to have unexpected null values and exceptions in scala code that is supposed to be immune to nulls! &lt;br /&gt;&lt;br /&gt;Thats an obviously pathological case and veteran scala developers will say that "you should allways define your vals/vars before using them". This is of-course true and a good rule of thumb but I would make 2 points. The first is that the compiler has enough information to error or atleast warn us when we've done something stupid like this. The second issue is that function definitions don't behave the same way, we can use them before they have been defined, we can switch the definiton and call for dontExcept and it still excepts. I think I understand the technical reasons why this occurs but its very non-intutive behavior in my mind.&lt;br /&gt;&lt;br /&gt;What makes this behavior so insidious is the effects when using abstract classes. If we call a base classes function we have be completley sure that all parts of our derived class have been constructed or else we can end up with NPE's in completely unexpected locations. Consider the following: &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class DerivedClass(delayCall : Boolean) extends BaseClass(delayCall)&lt;br /&gt;{&lt;br /&gt;  start&lt;br /&gt;  val b = List()&lt;br /&gt;  def act() : Int = {b.size}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;abstract class BaseClass(delayCall: Boolean){&lt;br /&gt;  implicit def asRunnable(func : ()=&gt;unit) : Runnable = {new Runnable(){def run(){func()}}}&lt;br /&gt;  &lt;br /&gt;  def act() : Int  // abstract or overriden function&lt;br /&gt;  var result : Int = -1;&lt;br /&gt;  def start(){&lt;br /&gt;    if(delayCall) {&lt;br /&gt;      var t = new Thread(() =&gt; {&lt;br /&gt;        try{&lt;br /&gt;          result = act()&lt;br /&gt;        }catch{&lt;br /&gt;          case n : NullPointerException =&gt; &lt;br /&gt;          result = -2;&lt;br /&gt;        }&lt;br /&gt;      })&lt;br /&gt;      val r = new Random&lt;br /&gt;      t.start&lt;br /&gt;      if(r.nextBoolean())Thread.sleep(10)&lt;br /&gt;    }&lt;br /&gt;    else result = act()&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If we run try to construct a DerivedClass(false) then we will get an immediate NPE during construction because the behavior is totally deterministic. If instead we construct a DerivedClass(true) which calls our abstract function at a non-deterministic time in the future we may or may not get an NPE. This effect may also occur with overriden functions though I haven't investigated that yet. &lt;br /&gt;&lt;br /&gt;Combining this type of issue and the often non-obvious asyncronous behavior of method calls (!?) its making me question when it is safe to call functions inside the class body constructor. The original bug that drove me to investigate this issue was "autostarting" an actor, calling the start function inside of the constuctor. This would cause a 1 out of 10 failure where a derived class wasn't fully constructed before the act() method was called and it tried to use an abstract field. For now the rule of thumb of initializing all fields before calling any functions will have to suffice.&lt;br /&gt;&lt;br /&gt;I have a working example of these issues with test cases in a gist: http://gist.github.com/366364&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6009552102277600745-8612470249930759504?l=mercenary-code.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mercenary-code.blogspot.com/feeds/8612470249930759504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6009552102277600745&amp;postID=8612470249930759504' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/8612470249930759504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/8612470249930759504'/><link rel='alternate' type='text/html' href='http://mercenary-code.blogspot.com/2010/04/scala-constructor-oddities-and-npes.html' title='Scala Constructor Oddities and NPEs'/><author><name>SamH</name><uri>http://www.blogger.com/profile/05789166518145984818</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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6009552102277600745.post-2676663533548144554</id><published>2010-03-01T10:58:00.000-08:00</published><updated>2010-03-01T11:40:06.191-08:00</updated><title type='text'>When a dash is not a dash... Or damn you Word!</title><content type='html'>We are in the final stages of testing a communication driver for a piece of custom hardware attached via serial. The application provides a command line interface for testing that the device is communicating properly and that commands sent to the device operate as expected. We had written up a long test procedure to document what the tool is capable of doing and how best to use it. The document was written in word and was well formatted and easy to read. We were satisfied with everything we had done and released the executable and supporting documents to some of our engineers to test. Things worked as expected for a few days and then suddenly it stops working with an odd error message. The standard command line to start the app was:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;driver.exe -I -S default_driver.xml&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This translates to "interactive" (-I), "simulated" (-S) and then the xml config file to use.  Well today all of a sudden this command line was getting a slew of odd "unexpected argument" errors. We have been using the same argument parsing library &lt;a href="http://graphics.stanford.edu/~drussel/Argument_helper/"&gt;http://graphics.stanford.edu/~drussel/Argument_helper/&lt;/a&gt; for a few years so it was quite unbelievable that the library was at fault. We tried it on our machines and worked fine for us, but sure enough on his machine we could replicate the error. We figured it must be a memory corruption bug and pored through the code looking for anywhere where we could be borking the memory but couldn't find anything. Out of frustration we reordered the arguments and it started working as expected. Then we went back to the original order and it worked! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We puzzled over this for a while then we realized that we had told the engineer to copy the command line from the testing document. Turns out word had helpfully replaced one of the argument flag dashes with a dash doppelganger. It looks exactly like a dash but didn't have the ascii value for a flag, which is what our command line argument parsing library was looking for. What made this all the more frustrating was that copying and pasting this value into nearly anything else got the expected dash character. This included using the echo command to print copy/pasted command to a file.  This crazy dash character doesn't even copy/paste consitently in word, if we select that character, hit control-F and search, it silently replaces it with a regular dash in the find box so that char doesnt even show up in the search of the file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We have added a check to the command line parsing to make sure that all chars are in the standard ascii set (between ' ' and '~') so we don't get bit again.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6009552102277600745-2676663533548144554?l=mercenary-code.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mercenary-code.blogspot.com/feeds/2676663533548144554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6009552102277600745&amp;postID=2676663533548144554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/2676663533548144554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/2676663533548144554'/><link rel='alternate' type='text/html' href='http://mercenary-code.blogspot.com/2010/03/when-dash-is-not-dash-or-damn-you-word.html' title='When a dash is not a dash... Or damn you Word!'/><author><name>SamH</name><uri>http://www.blogger.com/profile/05789166518145984818</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-6009552102277600745.post-4576511745701154682</id><published>2010-02-02T07:19:00.000-08:00</published><updated>2010-02-02T07:29:29.524-08:00</updated><title type='text'>Rails 2.3.5 Slow Webrick</title><content type='html'>I found an issue with rails 2.3.5 webrick that caused remote connections not on the host machine to be brutally slow. I did some research and found that avadi-daemon was the culprit. On my machine I disabled the daemon and speeds instantly rebounded to where they were supposed to be.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;sudo /etc/init.d/avahi-daemon stop&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If that fixes the issue for you, make sure you uninstall or disable it so it doesn't start the next time you reboot. (I deleted the symlink from /etc/rc3.d/).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rails.lighthouseapp.com/projects/8994/tickets/2987-new-233-app-perf-very-poor-from-remote-machine"&gt;Lighthouse ticket.&lt;/a&gt; (Though I think I should escalate this ticket somewhere else, no developers appear to be following the ticket.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6009552102277600745-4576511745701154682?l=mercenary-code.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mercenary-code.blogspot.com/feeds/4576511745701154682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6009552102277600745&amp;postID=4576511745701154682' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/4576511745701154682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/4576511745701154682'/><link rel='alternate' type='text/html' href='http://mercenary-code.blogspot.com/2010/02/rails-235-slow-webrick.html' title='Rails 2.3.5 Slow Webrick'/><author><name>SamH</name><uri>http://www.blogger.com/profile/05789166518145984818</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-6009552102277600745.post-292451514876329807</id><published>2010-01-12T06:58:00.000-08:00</published><updated>2010-01-12T07:11:18.321-08:00</updated><title type='text'>Qpid Ruby Driver</title><content type='html'>We have been playing with Apache's qpid as an amqp broker and I was getting annoyed with the need to include ext/sasl to run anything that used it as a gem. They were 99% of the way there but they didn't make the gem spec correctly so that it would actually run the sasl extconf.rb file. All you need to do is add the following line to the gem specification definition. (Line 108 in qpid-0.5/ruby/Rakefile)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;s.extensions &lt;&lt; 'ext/sasl/extconf.rb'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now you can just include "qpid" in your client code without having to get sasl on the path.&lt;br /&gt;&lt;br /&gt;This is one of thoses cases where github would be good, I don't know the best way to push this change back to whoever manages this code. There was a github branch of this code &lt;a href="http://github.com/colinsurprenant/qpid"&gt;(colinsurprenant-qpid)&lt;/a&gt; but it is over a year out of date and doesn't even run against the current 0-10 version of qpid. It's too bad because he had addressed the strange way the amqp protocol xml spec files were handled and stored. I may have too look at repatching in those changes and adding the protocol files to the gem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6009552102277600745-292451514876329807?l=mercenary-code.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mercenary-code.blogspot.com/feeds/292451514876329807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6009552102277600745&amp;postID=292451514876329807' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/292451514876329807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/292451514876329807'/><link rel='alternate' type='text/html' href='http://mercenary-code.blogspot.com/2010/01/qpid-ruby-driver.html' title='Qpid Ruby Driver'/><author><name>SamH</name><uri>http://www.blogger.com/profile/05789166518145984818</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-6009552102277600745.post-5282227182271264061</id><published>2009-12-21T13:11:00.000-08:00</published><updated>2009-12-21T13:19:28.736-08:00</updated><title type='text'>Converting Rails Numeric Migrations to Time Stamp</title><content type='html'>I looked on the web and couldn't find a good script to rename numeric migrations to timestamp ones when upgrading an application to a more recent rails (in this case so I can make it an engine).&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/261246.js?file=convert_migrations_to_timestamp.rb"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6009552102277600745-5282227182271264061?l=mercenary-code.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mercenary-code.blogspot.com/feeds/5282227182271264061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6009552102277600745&amp;postID=5282227182271264061' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/5282227182271264061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/5282227182271264061'/><link rel='alternate' type='text/html' href='http://mercenary-code.blogspot.com/2009/12/converting-rails-numeric-migrations-to.html' title='Converting Rails Numeric Migrations to Time Stamp'/><author><name>SamH</name><uri>http://www.blogger.com/profile/05789166518145984818</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-6009552102277600745.post-2360835772630709327</id><published>2009-01-04T12:03:00.000-08:00</published><updated>2009-02-04T16:52:59.965-08:00</updated><title type='text'>Tyler Hansbrough Scoring Record</title><content type='html'>I have created a little google spreadsheet to calculate the average score Tyler will need to break that assclown JJ Redicks ACC scoring record this season. I'll update it after every game.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://spreadsheets.google.com/pub?key=p3VWUoIhiNb3jO3uexzZ6Lg"&gt;http://spreadsheets.google.com/pub?key=p3VWUoIhiNb3jO3uexzZ6Lg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Update: Here is an .xls of the spreadsheet. &lt;a href="http://sites.google.com/site/mercenerycode/files"&gt;http://sites.google.com/site/mercenerycode/files&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6009552102277600745-2360835772630709327?l=mercenary-code.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mercenary-code.blogspot.com/feeds/2360835772630709327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6009552102277600745&amp;postID=2360835772630709327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/2360835772630709327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/2360835772630709327'/><link rel='alternate' type='text/html' href='http://mercenary-code.blogspot.com/2009/01/tyler-hansbrough-scoring-record.html' title='Tyler Hansbrough Scoring Record'/><author><name>SamH</name><uri>http://www.blogger.com/profile/05789166518145984818</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-6009552102277600745.post-5262968990970131233</id><published>2008-09-22T19:51:00.000-07:00</published><updated>2008-09-22T19:54:07.598-07:00</updated><title type='text'>Open Id</title><content type='html'>I started posting on stackoverflow.com and since I didn't have an OpenId and none of my other crappy blogs really have much to do with coding I made a new one with a cool name. Maybe ill post the fun or intresting things I find here. Probably not though, I am too lazy and too bad a writer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6009552102277600745-5262968990970131233?l=mercenary-code.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mercenary-code.blogspot.com/feeds/5262968990970131233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6009552102277600745&amp;postID=5262968990970131233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/5262968990970131233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6009552102277600745/posts/default/5262968990970131233'/><link rel='alternate' type='text/html' href='http://mercenary-code.blogspot.com/2008/09/open-id.html' title='Open Id'/><author><name>SamH</name><uri>http://www.blogger.com/profile/05789166518145984818</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></feed>
