<?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-4297582210741907142</id><updated>2011-09-19T12:07:21.137-07:00</updated><category term='linux'/><category term='css3designer'/><category term='Computer Science'/><category term='Languages'/><category term='MIPS'/><category term='javascript'/><category term='unix'/><category term='ISA'/><category term='programming'/><category term='Physics'/><category term='google adwords api'/><category term='web hooks'/><category term='web development'/><category term='Erin Haselton'/><category term='Shakespeare'/><title type='text'>random ramblings</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-2389497603174766090</id><published>2011-04-04T12:16:00.000-07:00</published><updated>2011-04-04T13:40:19.670-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css3designer'/><title type='text'>Rewarding...</title><content type='html'>Probably just encountered one of the more rewarding feelings in my professional career.  Nope, wasn't a raise (but those are always nice...believe you me.), I was walking by a computer where I saw someone was using my tool, css3designer.com.  Some guy I didn't know, but I had to spy on him to see how he was using the site.  It was very nice to come across this out in the wild.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-2389497603174766090?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/2389497603174766090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=2389497603174766090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/2389497603174766090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/2389497603174766090'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2011/04/rewarding.html' title='Rewarding...'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-3591883493562789404</id><published>2011-01-18T11:24:00.000-08:00</published><updated>2011-01-18T11:25:35.301-08:00</updated><title type='text'>ie6 + ie7 css positioning fix</title><content type='html'>&lt;a href="http://themoderndeveloper.com/2011/01/ie6-ie7-css-positioning-bug/"&gt;Posted here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-3591883493562789404?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/3591883493562789404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=3591883493562789404' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/3591883493562789404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/3591883493562789404'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2011/01/ie6-ie7-css-positioning-fix.html' title='ie6 + ie7 css positioning fix'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-2233589716727354268</id><published>2010-12-17T10:14:00.000-08:00</published><updated>2010-12-17T11:41:11.768-08:00</updated><title type='text'>OCD in CS</title><content type='html'>This &lt;a href="http://www.xkcd.com"&gt;man&lt;/a&gt; is brilliant.  Brilliant because he is able to take computer science topics and turn them into comics...funny ones at that.&lt;br /&gt;&lt;br /&gt;&lt;img width=376 height=376 src="http://imgs.xkcd.com/comics/tree.png" /&gt;&lt;br /&gt;&lt;br /&gt;(alt text: "Not only is that terrible in general, but you just KNOW Billy's going to open the root present first, and then everyone will have to wait while the heap is rebuilt.")&lt;br /&gt;&lt;br /&gt;His latest was gold, as always, but my OCD in CS wants me to edit his tree very badly!  &lt;strong&gt;IF&lt;/strong&gt; I had it my way, I'd whip that tree up in an &lt;a href="http://en.wikipedia.org/wiki/AVL_tree"&gt;AVL&lt;/a&gt; fashion.  Everyone loves a self-balancing tree?!  [and yes, opening presents with starting at the root would be quite desastrious]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-2233589716727354268?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/2233589716727354268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=2233589716727354268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/2233589716727354268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/2233589716727354268'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2010/12/ocd-in-cs.html' title='OCD in CS'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-4434077550306155268</id><published>2010-10-18T10:05:00.000-07:00</published><updated>2010-10-18T10:07:08.235-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Javascript patterns and antipatterns</title><content type='html'>Original post &lt;a href="http://www.themoderndeveloper.com"&gt; here &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This most likely is just the first in a series of posts on the matter.  Let me preface this post with the thought that I've come across quite a bit of code in my professional life.  When I was a bit younger and happened to come across a piece of code that I knew was horrible, I'd was for the most part apathetic.  But since being heavily involved in core Javascript for the past year from writing plug-ins to playing around with server-side JS and everything in-between, I've come across not only bad legacy JS, but dangerous JS that really does more damage than good.  I guess this is to be expected because JS is so easy to get something going without know what is being done.  &lt;br /&gt;&lt;br /&gt;I admit that starting out I too fell victim to common bad practices, or antipatterns.  It was only natural that I learned from reading someone else's solution to a problem without going into detail of what the language was actually doing; I wasn't concerned with that at the time.  This is no longer the case since JS has gain tremendous traction in the development role.  In order to have super premium code that will preform the way that it is expected to without doing harm to others code is to:  seriously know the language inside and out along with adhering to certain design patterns that will not only be optimized, but safe, clean and easy to read.&lt;br /&gt;&lt;br /&gt;Here is my little attempt to show little snippets that I've learn along the way that are essential for me to be 100% confident in my code.&lt;br /&gt;&lt;br /&gt;One of the most common antipatterns that I've come across is the overuse of global variables.  Yes, they are quick and easy but also potentially dangerous, not to mention annoying.  But aside from my personal annoyance at the sloppy coding, JS does have some bugs within the language can have unforeseen consequences on the sloppy code.  Along with the overuse of global variables, are sometimes the way the variables are defined.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="javascript"&gt;&lt;br /&gt;// global namespace&lt;br /&gt;myVar = 5; //antipattern&lt;br /&gt;var myVar = 5;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Both of these statements are valid, and for the most part they will do what the author expects them to do, but they are different.  The variable lacking the 'var' is called an &lt;em&gt;implied global&lt;/em&gt; and the other is an &lt;em&gt;explicitly defined&lt;/em&gt; variable.  &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="javascript"&gt;&lt;br /&gt;// antipattern&lt;br /&gt;function MyFunction( args1 ) {&lt;br /&gt;    myVar = 5;&lt;br /&gt;    if ( args1 === myVar ) {&lt;br /&gt;        return true;&lt;br /&gt;    }&lt;br /&gt;    return false;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This function is easy enough, it checks the parameter passed in with the author's intended local variable 'myVar'.  Since myVar in this example is defined without 'var', it is an implied global.  What author might not have intended is now 'myVar' has been added to the global namespace which can cause problems if there are variables already defined with the same name.&lt;br /&gt;&lt;br /&gt;Corrected:&lt;br /&gt;&lt;pre name="code" class="javascript"&gt;&lt;br /&gt;// correct pattern&lt;br /&gt;function MyFunction( args1 ) {&lt;br /&gt;    var myVar = 5;  //corrected&lt;br /&gt;    if ( args1 === myVar ) {&lt;br /&gt;        return true;&lt;br /&gt;    }&lt;br /&gt;    return false;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Another different between implied globals and explicit ones, or ones defined with 'var' is the ability to delete the variable if wished.  It is safe to say if a global variable is necessary it most likely shouldn't be deleted and be available through the program's life-cycle.  Variable that are implied globals &lt;strong&gt;can&lt;/strong&gt; be deleted and explicit &lt;strong&gt;cannot&lt;/strong&gt;.  Seeing why this is a problem requires you to take a step back and see the true purpose of a global variable.  Implied globals can be deleted which means that they are properties or elements of the global object.  This is undesired for the purpose of truly using a global variable.  Lastly, since we are working with Javascript and not the DOM 100% of the time, adding elements or global variables to the window object on DOM is ill-advised.  To have your program less prone to bugs while still relying on using global variables no matter what environment you may be working in, create your own global object.  &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="javascript"&gt;&lt;br /&gt;var globalObj = (function () { &lt;br /&gt;    return this;&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/4297582210741907142-4434077550306155268?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/4434077550306155268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=4434077550306155268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/4434077550306155268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/4434077550306155268'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2010/10/javascript-patterns-and-antipatterns.html' title='Javascript patterns and antipatterns'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-5619628385677917851</id><published>2010-08-26T09:40:00.000-07:00</published><updated>2010-08-26T09:44:42.900-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>unix commands</title><content type='html'>Want to know the size of a directory or directories?&lt;br /&gt;&lt;br /&gt;du -sh [directory/directories]&lt;br /&gt;&lt;br /&gt;"du" = disk usage, -sh = "sum the disk usage of the directories and make it human readable"&lt;br /&gt;&lt;br /&gt;ex: du -sh /var/www&lt;br /&gt;&lt;br /&gt;(though I probably wouldn't recommend running the command due to the size of the "www" directory)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-5619628385677917851?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/5619628385677917851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=5619628385677917851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/5619628385677917851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/5619628385677917851'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2010/08/unix-commands.html' title='unix commands'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-3175280718619287971</id><published>2010-08-20T12:36:00.000-07:00</published><updated>2010-08-20T19:05:58.755-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Future Development</title><content type='html'>Being a developer is an interesting as well as an extremely frustrating job.  I could work two weeks on a project with an additional two or three days debugging for my five second pay-off.  As crazy as that might sound, I could not imagine doing anything else (except for maybe music or art....or philosophy...or even &lt;a href="http://www.shaselton.blogspot.com" target="_blank"&gt;cultural studies&lt;/a&gt;).  &lt;br /&gt;&lt;br /&gt;Being a programmer, and more specifically web developer, has it's share of interesting problems that I couldn't find in any other field. This is the only field that I've come across that has new paradigms, revolutions, and shifts every couple of years if not faster.  This requires an extensive amount of reading and research to stay at the top of the field consistently.  Due to the reinventing nature of the field, traps and pit-falls can easily happen to the best of us.  Either reading too much, which only allows for a theoretical approach without implementation or experience to reading too little which puts one behind the rest of their peers is a hard thing to balance.  When reading the latest and greatest technology out, how does one know whether invest time into learning or simply just skip over? I struggle with this constantly.&lt;br /&gt;&lt;br /&gt;By trade, I'm a PHP developer.  The platform that I build on is an ever-changing, fast-paced one.  But there is one thing that seems to make itself extremely obvious in the future of my field: javascript.  Yes, this may sound like old news to some because javascript has been out since the mid '90s, but with the trend of where the Web is going, only recently javascript has started to make huge leaps and bounds ahead of anything as a staple of future web development.  Tools such as jQuery (yes, also been around since the mid 2000), node.js, and many others has A) brought development with javascript to an extremely high level, B) development possible on the front end as well as the back (yes, all ECMAscripts are agnostic in theory, but the practice of such was rare) and C) it has branched out to mobile development such as pure scripting game engines, jqtouch, phone gap, and many others.&lt;br /&gt;&lt;br /&gt;I've always been decent enough in javascript to get done what needed to get done, but lately I've been spending the majority of my time learning the language's popular design patterns and best practices.  There is a wealth of information out there to turn a novice into an experienced developer.  I've been spending some serious time developing jQuery plugins because I truly believe that my work will last longer in javascript than any other technology at the moment.  It is a gamble, but I think it is a safe gamble.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-3175280718619287971?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/3175280718619287971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=3175280718619287971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/3175280718619287971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/3175280718619287971'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2010/08/future-development.html' title='Future Development'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-1218344830053823916</id><published>2010-06-18T09:59:00.000-07:00</published><updated>2010-06-18T10:05:06.594-07:00</updated><title type='text'>LiteFramePHP</title><content type='html'>is now out...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.liteframephp.com"&gt;LiteFramePHP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a small MVC, PHP framework that is built out of a single object.  It may be small but it certainly has many features that you'd find in a full-fledged MVC framework such as CakePHP. &lt;br /&gt;&lt;br /&gt;The site hosting the files was quickly thrown up, so there still is a lot to be done.  Mainly, the documentation!  &lt;br /&gt;&lt;br /&gt;More to come...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-1218344830053823916?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/1218344830053823916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=1218344830053823916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/1218344830053823916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/1218344830053823916'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2010/06/liteframephp.html' title='LiteFramePHP'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-8627698319863435991</id><published>2010-06-09T08:39:00.000-07:00</published><updated>2010-06-09T09:54:03.641-07:00</updated><title type='text'>Open Sourcing</title><content type='html'>I admittedly look at the Open Source movement as one that parallels a spirtual or NGO cause.  At the core of it, there isn't allure of money that drives people to work hard and then to share their ideas openly.  Something about that tells me that the movement as a whole is greater than the sum of its parts, and this is shown every day with more and more code that is available for use.  I owe an incalculable amount of my development and knowledge to this movement, and I didn't have pay a penny if I so choose not to.  I've probably learned more through Open Source on development than my time in college.&lt;br /&gt;&lt;br /&gt;It is time for me to become one of the parts of this movement.  I want to attempt to give back freely what I have taken away in hopes to help out others; at the very least to support the movement.  I must admit that I am quite nervous though, I am exposing my ideas and code which I usually am very protective of.  They will be open to ridicule for those that choose to use my code.  &lt;br /&gt;&lt;br /&gt;I've been working on two different frameworks with a buddy at work that includes quite an extensive amount of different modules.  To give an idea, we probably have roughly around 8-10k lines of code.  First, a php, super lightweight framework.  Yes, I realize that the world might not need yet another php framework, but after using MVC frameworks such as Cake and Zend I was blown away at the size of the framework that was needed to get up and running on a new project.  The challenge was to keep this framework as light as possible while sill providing all of the necessary functionality.  I think that we did a pretty good job.  The time that it took to develop probably equaled the time that we talked it over and this is usually a good thing.  Hopefully that'll be an indication of the quality.&lt;br /&gt;&lt;br /&gt;Next, a series of plug-ins that are piggy-backing off of jQuery.  This is probably what I'm most proud of.  I believe the code quality to be fairly strong.  We are using some fairly new, a bit advanced, js code development to keep the code super clean, flexible, and any other buzz word that you choose to insert.  It has always been a challenge to develop javascript with the same mindset of true OOP, not just one or two objects that might have a private function/variable that is thrown in there for the novelty of it.  &lt;br /&gt;&lt;br /&gt;Some of the next major steps will be documentation.  If I hope others to use, I need to provide information.  At any rate, I hope to release both of these frameworks by the end of the week for those that don't need documentation.  &lt;br /&gt;&lt;br /&gt;Here is to exposing my brain. Cheers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-8627698319863435991?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/8627698319863435991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=8627698319863435991' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/8627698319863435991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/8627698319863435991'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2010/06/open-sourcing.html' title='Open Sourcing'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-7564675186335863363</id><published>2010-06-07T08:35:00.000-07:00</published><updated>2010-06-09T08:54:17.060-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='web hooks'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Web Hooks</title><content type='html'>I've been doing a lot of API integration work lately.  Mainly my days have been spent trying to master Google's Adwords, Yahoo's Search Marketing, and Microsoft's Bing.  On top of that, a large chunk of my time has also been involved in &lt;a href="http://mailchimp.com"&gt;Mail Chimp&lt;/a&gt; and &lt;a href="http://paypal.com"&gt;Paypal's&lt;/a&gt; APIs.  Dealing with these different APIs requires an incredible amount of reading which in turn requires a decent amount of time.  The purpose in dealing with all of these APIs is to automate processes which allows for incredible scale with zero overhead (other than the guy writing the software).  &lt;br /&gt;&lt;br /&gt;I am able to trigger events that these 3rd party companies have if a change comes through our system.  I am limited in having these APIs, which have no idea about each other, communicate with each other based on an event that *they* might receive. Confusing?!&lt;br /&gt;&lt;br /&gt;An example of this could be the event of a user unsubscribing from our mail list through Mail Chimp, which handles all of our mailings. Since a user unsubscribes from Mail Chimp, I have it such that that event would trigger Mail Chimp to send me the information of that event (e.g. user's name, why they unsubscribed, date they unsubscribed, etc) to a URL that I have set up (like an event listener) that processes these 3rd party events to update our system appropriately.  So in this example, when I get information on Mail Chimp's event, I might change the value of the user in our database to let us know that they are off our mailing list.  These are called "web hooks".&lt;br /&gt;&lt;br /&gt;This is great.  I am now processing information based on events that are outside of my system.  Now you can start using your imagination on having 3rd party events starting to interact with other 3rd party systems. Continuing with the previous example, we can take the unsubscribed user that we got information on from Mail Chimp and check our database for their action based on Adwords and then update our Adwords automatically to reflect the change in our system based on the unsubscribed user.  Now I have events from one system impacting how I treat another one, all automatically.&lt;br /&gt;&lt;br /&gt;APIs were a huge step in allowing for automation, but they can only take you so far. APIs are only half of the puzzle.  Web Hooks are the other half.  Now APIs can be connected together through custom HTTP Post callbacks.  This idea isn't new, but I'm starting to see it gain sizable traction in the web.  Hopefully developers developing new APIs will keep web hooks in mind when building.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-7564675186335863363?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/7564675186335863363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=7564675186335863363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/7564675186335863363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/7564675186335863363'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2010/06/web-hooks.html' title='Web Hooks'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-3110575251745554009</id><published>2010-03-01T13:59:00.000-08:00</published><updated>2010-03-01T14:11:46.617-08:00</updated><title type='text'>chainable generic javascript objects</title><content type='html'>yeah...is a mouth full but it is insanely good stuff.&lt;br /&gt;&lt;br /&gt;&lt;td class="smallfont"&gt;&lt;br /&gt; &lt;div&gt;&lt;br /&gt; &lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 410px; height: 150px; text-align: left;"&gt;function GenericObj(){&lt;br /&gt; var ChainableObject = function(){ return new ChainableObject.fn.init();};&lt;br /&gt; ChainableObject.fn = ChainableObject.protoype = {};&lt;br /&gt; ChainableObject.fn.init = function(){};&lt;br /&gt; ChainableObject.fn.init.prototype = ChainableObject.fn;&lt;br /&gt; return ChainableObject;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;My buddy and co-worker &lt;a href="http://www.pedramtech.com/"&gt;Mahdi&lt;/a&gt; (don't worry, the site has been under construction forever...i just needed somewhere to link) are currently working on a jQuery toolkit that will be module based.  &lt;a href="http://www.jquerytoolkit.com"&gt;jQuery ToolKit&lt;/a&gt; (yeah, that too is under construction).  This little nugget is in the toolkit and more gold like this you can expect to find.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-3110575251745554009?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/3110575251745554009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=3110575251745554009' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/3110575251745554009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/3110575251745554009'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2010/03/chainable-generic-javascript-objects.html' title='chainable generic javascript objects'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-4153113452702758645</id><published>2010-01-29T17:44:00.000-08:00</published><updated>2010-01-29T17:48:12.138-08:00</updated><title type='text'>piano</title><content type='html'>i would very much enjoy playing concerts for a living...sigh...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-4153113452702758645?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/4153113452702758645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=4153113452702758645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/4153113452702758645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/4153113452702758645'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2010/01/piano.html' title='piano'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-3042849676277281421</id><published>2009-12-26T13:57:00.000-08:00</published><updated>2009-12-26T14:01:49.171-08:00</updated><title type='text'>Everest</title><content type='html'>the climbing of Everest has begun.  I've officially started my compiler.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-3042849676277281421?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/3042849676277281421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=3042849676277281421' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/3042849676277281421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/3042849676277281421'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/12/everest.html' title='Everest'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-8400435539615126828</id><published>2009-12-08T15:51:00.000-08:00</published><updated>2009-12-08T18:57:10.568-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google adwords api'/><title type='text'>NuSOAP for Adwords v2009 api</title><content type='html'>I had the recent pleasure of looking through the upgrades, and ultimately testing, google's new adwords api.  This release is quite a shift from the past adwords apis.  One thing to take note is the use of a 3rd party required file, NuSOAP.  &lt;br /&gt;&lt;br /&gt;I downloaded the file from google's link pointing to sourceforge and I was quite surprised to find that much of the file has deprecated function calls for php 5.3.x. I couldn't wrap my brain around why google would be 'upgrading' with a 3rd party file that isn't going to be working when php 6 comes out.  This oversight is nearly impossible to be an oversight because google is still releasing v2009; it is impossible to miss!&lt;br /&gt;&lt;br /&gt;After much work, and help from &lt;a href="http://www.clintpriest.com/"&gt;client prient&lt;/a&gt;, I was able to knock out a version that will survive (at least through php 6).&lt;br /&gt;&lt;br /&gt;I am really still in disbelief that google would/could let something like this happen.&lt;br /&gt;&lt;br /&gt;If you are having problems with the deprecated functions, you can get my updated file here: &lt;a href="http://shaselton.com/nusoap/nusoap.txt"&gt;New NuSOAP&lt;/a&gt; .  It should go without saying, but I'll say it anyway, that this file comes without any warranty...only 'as is'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-8400435539615126828?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/8400435539615126828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=8400435539615126828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/8400435539615126828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/8400435539615126828'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/12/nusoap-for-adwords-v2009-api.html' title='NuSOAP for Adwords v2009 api'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-8375646654449255571</id><published>2009-12-07T18:36:00.000-08:00</published><updated>2009-12-08T18:55:39.165-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shakespeare'/><title type='text'>hiatus</title><content type='html'>I decided to give this Shakespeare guy another shot after a good ten year break.  My last encounter was in high school.  It wasn't a bad one, but it wasn't a great one either so after a Shakespeare hiatus I decided to give the guy another go.  Picking up a copy of Julius Caesar last week and reading it, I think it is safe to say that Shakespeare knew how to use the quill and paper.  I guess I just wasn't old enough to see the greatness in high school.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-8375646654449255571?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/8375646654449255571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=8375646654449255571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/8375646654449255571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/8375646654449255571'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/12/hiatus.html' title='hiatus'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-1457517984292408479</id><published>2009-10-15T17:39:00.000-07:00</published><updated>2009-10-15T17:42:30.757-07:00</updated><title type='text'>Cat</title><content type='html'>My cat has the worst sense of balance than any other cat I've ever come in contact with.  I put good money down saying his balance would rival mine...which isn't great.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-1457517984292408479?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/1457517984292408479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=1457517984292408479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/1457517984292408479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/1457517984292408479'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/10/cat.html' title='Cat'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-9004606230911017472</id><published>2009-09-30T13:24:00.001-07:00</published><updated>2009-09-30T13:24:55.921-07:00</updated><title type='text'>Africa</title><content type='html'>...I miss you&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-9004606230911017472?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/9004606230911017472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=9004606230911017472' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/9004606230911017472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/9004606230911017472'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/09/africa.html' title='Africa'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-8110240206005383321</id><published>2009-09-17T09:49:00.000-07:00</published><updated>2009-09-17T09:50:00.680-07:00</updated><title type='text'>Atlas revisited.</title><content type='html'>Rearden heard Bertram Scudder, outside the group, say to a girl who made some sound of indignation, "Don't let him disturb you. You know, money is the root of all evil – and he's the typical product of money."&lt;br /&gt;&lt;br /&gt;      Rearden did not think that Francisco could have heard it, but he saw Francisco turning to them with a gravely courteous smile.&lt;br /&gt;&lt;br /&gt;      "So you think that money is the root of all evil?" said Francisco d'Aconia. "Have you ever asked what is the root of money? Money is a tool of exchange, which can't exist unless there are goods produced and men able to produce them. Money is the material shape of the principle that men who wish to deal with one another must deal by trade and give value for value. Money is not the tool of the moochers, who claim your product by tears, or of the looters, who take it from you by force. Money is made possible only by the men who produce. Is this what you consider evil?&lt;br /&gt;&lt;br /&gt;      "When you accept money in payment for your effort, you do so only on the conviction that you will exchange it for the product of the effort of others. It is not the moochers or the looters who give value to money. Not an ocean of tears nor all the guns in the world can transform those pieces of paper in your wallet into the bread you will need to survive tomorrow. Those pieces of paper, which should have been gold, are a token of honor – your claim upon the energy of the men who produce. Your wallet is your statement of hope that somewhere in the world around you there are men who will not default on that moral principle which is the root of money. Is this what you consider evil?&lt;br /&gt;&lt;br /&gt;      "Have you ever looked for the root of production? Take a look at an electric generator and dare tell yourself that it was created by the muscular effort of unthinking brutes. Try to grow a seed of wheat without the knowledge left to you by men who had to discover it for the first time. Try to obtain your food by means of nothing but physical motions – and you'll learn that man's mind is the root of all the goods produced and of all the wealth that has ever existed on earth.&lt;br /&gt;&lt;br /&gt;      "But you say that money is made by the strong at the expense of the weak? What strength do you mean? It is not the strength of guns or muscles. Wealth is the product of man's capacity to think. Then is money made by the man who invents a motor at the expense of those who did not invent it? Is money made by the intelligent at the expense of the fools? By the able at the expense of the incompetent? By the ambitious at the expense of the lazy? Money is made – before it can be looted or mooched – made by the effort of every honest man, each to the extent of his ability. An honest man is one who knows that he can't consume more than he has produced.&lt;br /&gt;&lt;br /&gt;      "To trade by means of money is the code of the men of good will. Money rests on the axiom that every man is the owner of his mind and his effort. Money allows no power to prescribe the value of your effort except by the voluntary choice of the man who is willing to trade you his effort in return. Money permits you to obtain for your goods and your labor that which they are worth to the men who buy them, but no more. Money permits no deals except those to mutual benefit by the unforced judgment of the traders. Money demands of you the recognition that men must work for their own benefit, not for their own injury, for their gain, not their loss – the recognition that they are not beasts of burden, born to carry the weight of your misery – that you must offer them values, not wounds – that the common bond among men is not the exchange of suffering, but the exchange of goods. Money demands that you sell, not your weakness to men's stupidity, but your talent to their reason; it demands that you buy, not the shoddiest they offer, but the best your money can find. And when men live by trade – with reason, not force, as their final arbiter – it is the best product that wins, the best performance, then man of best judgment and highest ability – and the degree of a man's productiveness is the degree of his reward. This is the code of existence whose tool and symbol is money. Is this what you consider evil?&lt;br /&gt;&lt;br /&gt;      "But money is only a tool. It will take you wherever you wish, but it will not replace you as the driver. It will give you the means for the satisfaction of your desires, but it will not provide you with desires. Money is the scourge of the men who attempt to reverse the law of causality – the men who seek to replace the mind by seizing the products of the mind.&lt;br /&gt;&lt;br /&gt;      "Money will not purchase happiness for the man who has no concept of what he wants; money will not give him a code of values, if he's evaded the knowledge of what to value, and it will not provide him with a purpose, if he's evaded the choice of what to seek. Money will not buy intelligence for the fool, or admiration for the coward, or respect for the incompetent. The man who attempts to purchase the brains of his superiors to serve him, with his money replacing his judgment, ends up by becoming the victim of his inferiors. The men of intelligence desert him, but the cheats and the frauds come flocking to him, drawn by a law which he has not discovered: that no man may be smaller than his money. Is this the reason why you call it evil?&lt;br /&gt;&lt;br /&gt;      "Only the man who does not need it, is fit to inherit wealth – the man who would make his own fortune no matter where he started. If an heir is equal to his money, it serves him; if not, it destroys him. But you look on and you cry that money corrupted him. Did it? Or did he corrupt his money? Do not envy a worthless heir; his wealth is not yours and you would have done no better with it. Do not think that it should have been distributed among you; loading the world with fifty parasites instead of one would not bring back the dead virtue which was the fortune. Money is a living power that dies without its root. Money will not serve that mind that cannot match it. Is this the reason why you call it evil?&lt;br /&gt;&lt;br /&gt;      "Money is your means of survival. The verdict which you pronounce upon the source of your livelihood is the verdict you pronounce upon your life. If the source is corrupt, you have damned your own existence. Did you get your money by fraud? By pandering to men's vices or men's stupidity? By catering to fools, in the hope of getting more than your ability deserves? By lowering your standards? By doing work you despise for purchasers you scorn? If so, then your money will not give you a moment's or a penny's worth of joy. Then all the things you buy will become, not a tribute to you, but a reproach; not an achievement, but a reminder of shame. Then you'll scream that money is evil. Evil, because it would not pinch-hit for your self-respect? Evil, because it would not let you enjoy your depravity? Is this the root of your hatred of money?&lt;br /&gt;&lt;br /&gt;      "Money will always remain an effect and refuse to replace you as the cause. Money is the product of virtue, but it will not give you virtue and it will not redeem your vices. Money will not give you the unearned, neither in matter nor in spirit. Is this the root of your hatred of money?&lt;br /&gt;&lt;br /&gt;      "Or did you say it's the love of money that's the root of all evil? To love a thing is to know and love its nature. To love money is to know and love the fact that money is the creation of the best power within you, and your passkey to trade your effort for the effort of the best among men. It's the person who would sell his soul for a nickel, who is the loudest in proclaiming his hatred of money – and he has good reason to hate it. The lovers of money are willing to work for it. They know they are able to deserve it.&lt;br /&gt;&lt;br /&gt;      "Let me give you a tip on a clue to men's characters: the man who damns money has obtained it dishonorably; the man who respects it has earned it.&lt;br /&gt;&lt;br /&gt;      "Run for your life from any man who tells you that money is evil. That sentence is the leper's bell of an approaching looter. So long as men live together on earth and need means to deal with one another – their only substitute, if they abandon money, is the muzzle of a gun.&lt;br /&gt;&lt;br /&gt;      "But money demands of you the highest virtues, if you wish to make it or to keep it. Men who have no courage, pride, or self-esteem, men who have no moral sense of their right to their money and are not willing to defend it as they defend their life, men who apologize for being rich – will not remain rich for long. They are the natural bait for the swarms of looters that stay under rocks for centuries, but come crawling out at the first smell of a man who begs to be forgiven for the guilt of owning wealth. They will hasten to relieve him of the guilt – and of his life, as he deserves.&lt;br /&gt;&lt;br /&gt;      "Then you will see the rise of the double standard – the men who live by force, yet count on those who live by trade to create the value of their looted money – the men who are the hitchhikers of virtue. In a moral society, these are the criminals, and the statutes are written to protect you against them. But when a society establishes criminals-by-right and looters-by-law – men who use force to seize the wealth of disarmed victims – then money becomes its creators' avenger. Such looters believe it safe to rob defenseless men, once they've passed a law to disarm them. But their loot becomes the magnet for other looters, who get it from them as they got it. Then the race goes, not to the ablest at production, but to those most ruthless at brutality. When force is the standard, the murderer wins over the pickpocket. And then that society vanishes, in a spread of ruins and slaughter.&lt;br /&gt;&lt;br /&gt;      "Do you wish to know whether that day is coming? Watch money. Money is the barometer of a society's virtue. When you see that trading is done, not by consent, but by compulsion – when you see that in order to produce, you need to obtain permission from men who produce nothing – when you see that money is flowing to those who deal, not in goods, but in favors – when you see that men get richer by graft and by pull than by work, and your laws don't protect you against them, but protect them against you – when you see corruption being rewarded and honesty becoming a self-sacrifice – you may know that your society is doomed. Money is so noble a medium that it does not compete with guns and it does not make terms with brutality. It will not permit a country to survive as half-property, half-loot.&lt;br /&gt;&lt;br /&gt;      "Whenever destroyers appear among men, they start by destroying money, for money is men's protection and the base of a moral existence. Destroyers seize gold and leave to its owners a counterfeit pile of paper. This kills all objective standards and delivers men into the arbitrary power of an arbitrary setter of values. Gold was an objective value, an equivalent of wealth produced. Paper is a mortgage on wealth that does not exist, backed by a gun aimed at those who are expected to produce it. Paper is a check drawn by legal looters upon an account which is not theirs: upon the virtue of the victims. Watch for the day when it becomes, marked: 'Account overdrawn.'&lt;br /&gt;&lt;br /&gt;      "When you have made evil the means of survival, do not expect men to remain good. Do not expect them to stay moral and lose their lives for the purpose of becoming the fodder of the immoral. Do not expect them to produce, when production is punished and looting rewarded. Do not ask, 'Who is destroying the world?' You are.&lt;br /&gt;&lt;br /&gt;      "You stand in the midst of the greatest achievements of the greatest productive civilization and you wonder why it's crumbling around you, while you're damning its life-blood – money. You look upon money as the savages did before you, and you wonder why the jungle is creeping back to the edge of your cities. Throughout men's history, money was always seized by looters of one brand or another, but whose method remained the same: to seize wealth by force and to keep the producers bound, demeaned, defamed, deprived of honor. That phrase about the evil of money, which you mouth with such righteous recklessness, comes from a time when wealth was produced by the labor of slaves – slaves who repeated the motions once discovered by somebody's mind and left unimproved for centuries. So long as production was ruled by force, and wealth was obtained by conquest, there was little to conquer. Yet through all the centuries of stagnation and starvation, men exalted the looters, as aristocrats of the sword, as aristocrats of birth, as aristocrats of the bureau, and despised the producers, as slaves, as traders, as shopkeepers – as industrialists.&lt;br /&gt;&lt;br /&gt;      "To the glory of mankind, there was, for the first and only time in history, a country of money – and I have no higher, more reverent tribute to pay to America, for this means: a country of reason, justice, freedom, production, achievement. For the first time, man's mind and money were set free, and there were no fortunes-by-conquest, but only fortunes-by-work, and instead of swordsmen and slaves, there appeared the real maker of wealth, the greatest worker, the highest type of human being – the self-made man – the American industrialist.&lt;br /&gt;&lt;br /&gt;      "If you ask me to name the proudest distinction of Americans, I would choose – because it contains all the others – the fact that they were the people who created the phrase 'to make money'. No other language or nation had ever used these words before; men had always thought of wealth as a static quantity – to be seized, begged, inherited, shared, looted, or obtained as a favor. Americans were the first to understand that wealth has to be created. The words 'to make money' hold the essence of human morality.&lt;br /&gt;&lt;br /&gt;      "Yet these were the words for which Americans were denounced by the rotted cultures of the looters' continents. Now the looters' credo has brought you to regard your proudest achievements as a hallmark of shame, your prosperity as guilt, your greatest men, the industrialists, as blackguards, and your magnificent factories as the product and property of muscular labor, the labor of whip-driven slaves, like the pyramids of Egypt. The rotter who simpers that he sees no difference between the power of the dollar and the power of the whip, ought to learn the difference on his own hide – as, I think, he will.&lt;br /&gt;&lt;br /&gt;      "Until and unless you discover that money is the root of all good, you ask for your own destruction. When money ceases to be the tool by which men deal with one another, then men become the tools of men. Blood, whips and guns – or dollars. Take your choice – there is no other – and your time is running out."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-8110240206005383321?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/8110240206005383321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=8110240206005383321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/8110240206005383321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/8110240206005383321'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/09/atlas-revisited.html' title='Atlas revisited.'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-9131456664381591034</id><published>2009-06-27T18:11:00.000-07:00</published><updated>2009-06-27T18:42:41.543-07:00</updated><title type='text'>Problem 1</title><content type='html'>So I realize that I have not made good on my promise to post the problems I've worked like I said I would in this &lt;a href="http://shaselton1.blogspot.com/2009/02/new-languages.html"&gt;post&lt;/a&gt;, but rest assured I'm working on it....kinda. But without further adieu, I present to you my solutions for the first problem list in that book from the previous post.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://shaselton.com/problem1.6.cpp"&gt;my solutions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I constructed both a recursive and non-recursive solution and ran a mini benchmark between the two.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0XYGnWbqPWc/SkbJ0WwjeeI/AAAAAAAAABI/50BRsFxOW4Q/s1600-h/problem1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_0XYGnWbqPWc/SkbJ0WwjeeI/AAAAAAAAABI/50BRsFxOW4Q/s320/problem1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5352187108476025314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, though the benchmark was small, the recursive solution was slower...not too surprising because my dev machine isn't the newest there is on the market.&lt;br /&gt;&lt;br /&gt;Total programming time: 30 mins (and honestly, most of that time was spent looking for the unix solution to track the milliseconds it took each solution to run...i've only ever done benchmark stuff on a windows environment.)&lt;br /&gt;&lt;br /&gt;Difficulty: Easy.&lt;br /&gt;&lt;br /&gt;You have another solution, hit me!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-9131456664381591034?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/9131456664381591034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=9131456664381591034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/9131456664381591034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/9131456664381591034'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/06/problem-1.html' title='Problem 1'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_0XYGnWbqPWc/SkbJ0WwjeeI/AAAAAAAAABI/50BRsFxOW4Q/s72-c/problem1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-562892316635483232</id><published>2009-03-11T12:28:00.000-07:00</published><updated>2009-03-11T13:18:09.251-07:00</updated><title type='text'>AI</title><content type='html'>Fuzzy logic isn't as cuddly as the name suggests.  It was one of the more abstract 'systems' i've designed for work, and implementation was worse.  The concept makes complete sense in the real world and is quite inherent even with the smallest of tasks we do.&lt;br /&gt;&lt;br /&gt;Essentially, fuzzy logic/systems tries to put the 'feel' into an otherwise black and white, instruction executing machine.  For example, it would be easy for a human when driving fast and approaching a corner to understand that slightly braking is necessary as to not flip the car.  But how much do you break?  It is more of a feeling process on knowing how much breaking is necessary.  For a computer, you can have predefined actions such as brake and accelerate.  So when a computer approaches a turn going fast, you can tell it to break...but how much?  Normally, the predefined action programmed into the computer would have the computer slam on the breaks bring the car to a halt.  How do we give the computer the ability to 'feel out' the situation?  Fuzzy logic!&lt;br /&gt;&lt;br /&gt;The process of programming/developing/designing an action, say braking, to belong to two or more states isn't too challenging.  It is taking the current situation of the system/computer and giving it the brains to apply maybe a 70% brake to make the turn that is severe.  Having the computer analyze the speed, the degree of turn, the surface, weather, time of day, oncoming traffic, location (residential, industrial, etc), size of the car, amount of gas, stiffness of the brake pedal, and so on just to give the car the thought, "i will brake 40% to make this turn safely".  This may seem a bit excessive because when making a turn, you probably never think of most of these things...they are inherit, second nature to us, but the ability interrupt these conditions as second nature give us that ability to have that 'feel'.&lt;br /&gt;&lt;br /&gt;here is a preview to some of the processes that go behind designing and building one of these systems:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0XYGnWbqPWc/Sbgb3_OvcRI/AAAAAAAAAAg/-8Lz7_S8UiY/s1600-h/photo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_0XYGnWbqPWc/Sbgb3_OvcRI/AAAAAAAAAAg/-8Lz7_S8UiY/s320/photo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5312026409163518226" /&gt;&lt;/a&gt;&lt;br /&gt;Next post could involved some of the math and thought process behind fuzzy logic, fuzzification, defuzzification, degree of memberships, and everything else that goes along with the topic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-562892316635483232?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/562892316635483232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=562892316635483232' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/562892316635483232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/562892316635483232'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/03/ai.html' title='AI'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_0XYGnWbqPWc/Sbgb3_OvcRI/AAAAAAAAAAg/-8Lz7_S8UiY/s72-c/photo.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-4205351441438119354</id><published>2009-02-24T16:25:00.000-08:00</published><updated>2009-02-24T16:40:32.851-08:00</updated><title type='text'>picacross</title><content type='html'>I've always had fun doing independent game projects with my buddies, but this week was the first time that I've built a game that I actually put for sale; an odd, exciting feeling.  I've spent so much time just building random, little projects because it was something that I loved doing, but now seeing people pay money to play my game is rewarding (aside from monetary reasons which isn't proving to be bad at all) because I've built something that people are willing to pay for to be entertained.  The initial feedback from it couldn't be better, so now I am doing something that I haven't done with any of my gaming projects before: pimping it to the public.  So for the three people that read this blog and have a G1, (to which I realize the vend diagram is probably yielding a zero cross section) spend a buck and download my game 'picacross pro'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-4205351441438119354?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/4205351441438119354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=4205351441438119354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/4205351441438119354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/4205351441438119354'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/02/picacross.html' title='picacross'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-5985145635674475515</id><published>2009-02-16T10:09:00.000-08:00</published><updated>2009-02-16T11:08:26.709-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Erin Haselton'/><category scheme='http://www.blogger.com/atom/ns#' term='Languages'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>New Languages</title><content type='html'>I've been interested in learning new languages to develop in.  For work we are developing in php 95% of the time and not wanting to get rusty on my languages that I already know, I've decided to buy a &lt;a href="http://www.amazon.com/Programming-Challenges-Steven-S-Skiena/dp/0387001638/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1234807634&amp;sr=8-1"&gt;programming challenge&lt;/a&gt; book (also good if you want to brush up on your algorithm development) and complete each problem in several different languages.  I think this will be a good way to become familiar with some that I haven't had experience with.  &lt;br /&gt;&lt;br /&gt;Right now I've completed the first couple problems in: C++, Java, C#, and php.  I am looking to port these solutions over to: python, LISP (always been fascinated with the mystic-like following behind this language.  Apparently, once fully understood, it is like speaking [or coding] in the language of the Gods), Erlang (I've written a great many programs in this language, but I'd like to brush up on my parallel computing), and maybe a bit of objective-c...you know, so if I wanted to write an iphone/pod app.&lt;br /&gt;&lt;br /&gt;I might post a few of the problems here with my solutions (which will open me up for possible ridicule, but I guess that is a good thing...anything to improve my skill set).  &lt;br /&gt;&lt;br /&gt;On a random note, I might throw some graphic programming up here.  I've been lightly working on a particle engine.&lt;br /&gt;&lt;br /&gt;Also, I feel like I'm in school again.  I've been 'attending' Standford's artificial intelligence online through their free web courses.  I recommend you check it out, good stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-5985145635674475515?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/5985145635674475515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=5985145635674475515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/5985145635674475515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/5985145635674475515'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/02/new-languages.html' title='New Languages'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-6743036243906877042</id><published>2009-01-07T11:22:00.000-08:00</published><updated>2009-01-07T14:35:40.410-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>+1 up</title><content type='html'>have compilers made it so:&lt;br /&gt;i++ == ++i&lt;br /&gt;in terms of speed?&lt;br /&gt;&lt;br /&gt;not that i spend too much time thinking about this, but i've always used the pre-increment to avoid the temp variable that is created with post-increment.  Is it one of those things that compilers these days have fixed? &lt;br /&gt;&lt;br /&gt;i remember the days of rolling out loops to gain a decent percentage of speed, but modern day compilers pretty much fixed that problem, so no more roll-outs--same with incrementing?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-6743036243906877042?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/6743036243906877042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=6743036243906877042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/6743036243906877042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/6743036243906877042'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2009/01/1-up.html' title='+1 up'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-2287483678481612544</id><published>2008-10-02T01:30:00.000-07:00</published><updated>2008-10-02T01:56:55.422-07:00</updated><title type='text'>Time I Wish I Had (Part 1)</title><content type='html'>Simply put, I love game programming.  Yes, this entails a lot.  Graphics programming, game play logic, artificial intelligence development, user interface, sound programming...everything about it is interesting to me in some fashion.  &lt;br /&gt;&lt;br /&gt;I was lucky enough to work with a friend during the last semester of college to build a Real Time Strategy (RTS) game that incorporated all of these elements listed.  It was built in Microsoft's XNA environment using C#.  My buddy, also named Scott, had worlds more experience in game development than I, so he was essentially the project lead in our "Tech Wars" RTS game.&lt;br /&gt;&lt;br /&gt;I got to dive into certain ares of development that had been until that point theory to me.  Aspects of the game that included the AI and gameplay were the most interesting for me...to be able to give objects life, and to give them "rules" on how to react under different situations was challenging but extremely entertaining at the same time.  Though nerdy, it was somewhat empowering to be able to give objects life and to tell them how to think.&lt;br /&gt;&lt;br /&gt;I honestly wish I had more time to expand on this project and to work on new ones...this working for 30 mins here, an hour there doesn't get me anywhere!&lt;br /&gt;&lt;br /&gt;here is the &lt;a href="http://www.shaselton.com/Manuel.pdf" target="_blank"&gt;game manual&lt;/a&gt; for our project last semester.&lt;br /&gt;&lt;br /&gt;I'll go over some of the more technical things during my next post and what I am currently working on in terms of game development.  A hint:  Particle Engines!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-2287483678481612544?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/2287483678481612544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=2287483678481612544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/2287483678481612544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/2287483678481612544'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2008/10/time-i-wish-i-had-part-1.html' title='Time I Wish I Had (Part 1)'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-3446507234174908419</id><published>2008-05-29T02:00:00.001-07:00</published><updated>2008-05-29T02:03:11.408-07:00</updated><title type='text'>Some Web Development</title><content type='html'>It is late, but not too late, so I thought I'd give the reader (you!) a quick peak into my brain right now so I can take a break from some web development work. You'll be stoked to know that I'm going to ramble about web development!! Yaays for some, Oh noes for others. You've been warned.&lt;br /&gt;&lt;br /&gt;Lately I've been working as a consultant to do some web development for a huge company (which provides natural gas and electricity for 66% of California...figure it out). The progress of work is going fairly well which is nice because I haven't done any hard-core web development work in over ten months...but moving on, as a consultant I am given a set of, "I want it to do this," and some, "We need this type of functionality," along with a million other buzzwords that include, but are not limited to: streamline, intuitive, microformats, RSS, and the worst one of them all "Web 2.0".&lt;br /&gt;&lt;br /&gt;This particular project has me coding with PHP and using mySQL as the database. Now I have had some experience with Ruby on Rails and AJAX, which falls under the umbrella of that glorious "Web 2.0" title, which involved PHP, javascript, XML, and mySQL. AJAX can do and create some neat effects for the user, but doesn't mean that we should try create everything in an AJAX fashion. With this project I was given the instructions to make the project as 2.0 as I could...of course I question this (meaning I question it in my head, they're the ones signing the checks) because I'm almost sure that: A) Web 2.0 doesn't have an official set of standards (at least to my knowledge) which define something as 2.0 verses 1.0 (or maybe even Web 1.54f ;)) and B)the project manager will take some nice looking css or DHTML effects as 2.0ish and not know any better.&lt;br /&gt;&lt;br /&gt;I don't know where this "Web 2.0" obsession came from and why it is such a necessary thing to try to achieve in web development. As any developer knows there are multiple solutions for any given problem and singularity idea that if something isn't "Web 2.0" then it is behind the times is quite absurd.&lt;br /&gt;&lt;br /&gt;In my next consultant job when asked to make something "2.0" I might just have to say, "Yeah, I can do that, but I can make it 'Haselton 4.6' which is something that is newer and is a higher number than that '2.0'" and then just make some flamboyant DHTML/PHP/ASP.NET project...or not and just nod my head and collect the check.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-3446507234174908419?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/3446507234174908419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=3446507234174908419' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/3446507234174908419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/3446507234174908419'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2008/05/some-web-development_29.html' title='Some Web Development'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-8840953134148504102</id><published>2008-04-28T23:17:00.000-07:00</published><updated>2008-10-02T01:29:16.831-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MIPS'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><category scheme='http://www.blogger.com/atom/ns#' term='ISA'/><title type='text'>ISA for a RISC</title><content type='html'>I get the question, "so what do you do in computer science?" quite a bit.  A truly simple question without a simple answer.  My mind races when I get this question.  Do I tell them about the mathematical logic, number theory, graph theory, numerical analysis, or inform them of automata, computability and computational complexity theories, or I could go the route of analysis of algorithms and data structures, or even go into the realm of system architecture which includes computer architecture, computer organization, and operating systems.  But I'm leaving out the data mining,  relational databases, artificial intelligence, automated reasoning, and machine learning that I could also talk about.  I usually just say, "I program" and be over with it because lets be real, unless you're a fellow CECS student/major/graduate/enthusiast you are not going to want to hear about all that &lt;b&gt; exciting&lt;/b&gt; stuff.  But now I am going to give you an actual glimpse of some of the things that I work on.  &lt;br /&gt;&lt;br /&gt;Here is a project that I worked on last semester in my computer architecture class, so I hope that you enjoy it as much as I did working on it :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.shaselton.com/MIPS.pdf" target="_blank"&gt;fun times&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color=red&gt;Note: the file is around 2.5 MB so it might take 10+ seconds to load the page&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-8840953134148504102?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/8840953134148504102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=8840953134148504102' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/8840953134148504102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/8840953134148504102'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2008/04/isa-for-risc.html' title='ISA for a RISC'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4297582210741907142.post-9139712820815999490</id><published>2008-04-22T00:38:00.000-07:00</published><updated>2008-04-28T23:57:36.652-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Physics'/><title type='text'>those speedy little electrons!</title><content type='html'>If you're anything like me, you sometime wonder just how fast those little miracles known as electrons really go in everyday substances. With my small background in electricity and magnetism and a big case of wonder (and I know you wonder about this stuff too!) I made up some random scenarios (google helped a bit to which you'll see later) to see if I could actually calculate the speed of an electron.&lt;br /&gt;&lt;br /&gt;I know that copper is a fairly typical conductor that is used, so I choose the length of 3.00m and the diameter, or width of 1.5mm of copper randomly to work with. Also, I had to give a current (I) that was being applied to the wire, I randomly choose 8.00 amps.  With using copper, I asked google the resisitivity and concentration of copper.  These are both important in determining if a substance, in our case copper, is a decent conductor.  &lt;br /&gt;&lt;br /&gt;Google didn't disappoint and came back with the answers of resisitivity (p) = 1.7*10^-8 (ohms)(meters) and the concentration (n) = 8.5*10^28 meters(negative cubed).&lt;br /&gt;&lt;br /&gt;Armed with this information, I set out initially to find what is known as the "drift velocity" of a single electron in copper.  A bit of background:  millions of nano collisions are happening around us that make up the very things we interact with, same goes for a single electron with a current moving down a copper wire.  The current essentially "guides" the electron a certain direction down the wire, but the  electron can't go down the wire without bouncing off matter that makes up the copper wire.  Thus we come to something known as the "drift velocity", or the average speed at which an electron goes before colliding with something else.&lt;span style="font-weight:bold;"&gt;&lt;font color=red&gt;*&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The calculation of the drift velocity was fairly simple.  I had to find the magnitude (J) of the current density in the copper wire.  Related functions of current (I) = nq(drift)A&lt;br /&gt;J = A/m^2  With A = cross section of the wire and m = mass of an electron&lt;br /&gt;A = &amp;#x3C0; r^2 = 3.14(0.0075)^2 = 1.8 *1 0^-4&lt;br /&gt;m = (9.1*10^-31)^2 kg = 8.28100 * 10^-61&lt;br /&gt;and it is known that the current density is proportional to the drift speed such that: J = n*e*(drift velocity).  Simple algebra leads us to: drift = J/(n*e), or somewhere around 3.30 * 10 ^-4 m/s.&lt;br /&gt;&lt;br /&gt;So what does this mean?  It means that, on average, an electron will speed up to 3.30 * 10^-4 meters per second before bouncing into something...pretty neat, huh?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This of course got me to thinking how many actual (or close to actual) collisions that were going on in this copper wire every second.&lt;br /&gt;&lt;br /&gt;For this I had to answer how many collisions per second does each electron undergo.  With algebraic expression for the mean time between collisions equaling:  time = mass/((electron's charge)^2 * n * p) &lt;br /&gt;Which came out to be:  &lt;br /&gt;9.1 * 10^-31 / ((1.6*10^-19)^2 * (8.5 * 10^28) * (1.7 * 10^-8)) = 2.46 * 10^-14 s&lt;br /&gt;&lt;br /&gt;1/(2.46 * 10^-14) = how many collision one electron encounters each second which is 4.07 * 10^13 !!!&lt;br /&gt;&lt;br /&gt;Now multiply that times the volume of the wire (how many electrons the wire holds) which happens to be 4.5 * 10^23 and you get (drum roll please...) &lt;br /&gt;1.83 * 10^37 collisions happening every single freakin' second.  To try to grasp that number with greater awe, it is:&lt;br /&gt;18300000000000000000000000000000000000 collisions every second!&lt;br /&gt;Pretty damn amazing how much stuff is going on under your nose without you knowing it, huh?  With my curiosity satisfied, it was time for an In 'n Out double double, or should be better known as 2(n) ;).&lt;br /&gt;&lt;br /&gt;&lt;font color=red&gt;* I have thought about what you're probably thinking, is it possible that an electron travel down the wire without colliding into something?  Well, if I were to take you out to the woods and blind fold you and told you to walk straight for a mile, you think that you would never hit a tree? &lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4297582210741907142-9139712820815999490?l=shaselton1.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shaselton1.blogspot.com/feeds/9139712820815999490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4297582210741907142&amp;postID=9139712820815999490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/9139712820815999490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4297582210741907142/posts/default/9139712820815999490'/><link rel='alternate' type='text/html' href='http://shaselton1.blogspot.com/2008/04/those-speedy-little-electrons.html' title='those speedy little electrons!'/><author><name>Scott</name><uri>http://www.blogger.com/profile/03137428345085992108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='24' src='http://photos1.blogger.com/blogger/3793/3036/1600/scott_working.gif'/></author><thr:total>0</thr:total></entry></feed>
