<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Tech Your Universe</title>
	<link>http://www.techyouruniverse.com</link>
	<description>Musings about technology from a Geek</description>
	<pubDate>Tue, 30 Jun 2009 04:12:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<item>
		<title>What software developers can learn from BattleBots</title>
		<link>http://www.techyouruniverse.com/software/what-software-developers-can-learn-from-battlebots</link>
		<comments>http://www.techyouruniverse.com/software/what-software-developers-can-learn-from-battlebots#comments</comments>
		<pubDate>Tue, 16 Jun 2009 00:15:12 +0000</pubDate>
		<dc:creator>nick</dc:creator>
		
		<category><![CDATA[software]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[convergence of software and hardware engineering]]></category>

		<category><![CDATA[simplicity in software development]]></category>

		<category><![CDATA[software development battlebots]]></category>

		<guid isPermaLink="false">http://www.techyouruniverse.com/software/what-software-developers-can-learn-from-battlebots</guid>
		<description><![CDATA[I attended Robogames in San Francisco this past weekend with my 3 sons. We had a great time watching the robots try to kill each other. I let out a Tim Allen grunt at several points, especially when we saw one of the robots with a flame thrower.







I had some time for reflection in between [...]]]></description>
			<content:encoded><![CDATA[<p>I attended <a href="http://www.robogames.net/">Robogames</a> in San Francisco this past weekend with my 3 sons. We had a great time watching the robots try to kill each other. I let out a <a href="http://www.youtube.com/watch?v=BAhVmjptZMI">Tim Allen grunt</a> at several points, especially when we saw one of the robots with a flame thrower.</p>
<div style="float:right; margin-left:10px">
<object width="320" height="265"></p>
<param name="movie" value="http://www.youtube.com/v/R8HrM7kleQI&#038;hl=en&#038;fs=1&#038;"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/R8HrM7kleQI&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed></object>
</div>
<p>
I had some time for reflection in between matches, and my pattern-recognition-heavy brain kicked into gear to find out what was similar between the engineering efforts behind robot building and a software engineering. Not everything lines up, but I did notice that some of <a href="/software/simplicity-in-software-design">my thoughts of simplicity and robustness</a> carried over to the world of attack robots. In no particular order:</p>
<ul>
<li><b>Staying moving is more important than having a good weapon</b>. While it did occasionally happen that a kick ass weapon ended a match (and when it did, it was supremely cool!), it was certainly not the majority. Instead of weapons, most of the time the other robot was defeated by getting "stuck" in one way or another, either by being flipped upside down or stuck on an obstacle.
<p>
How does this translate to the software world? If you have a great piece of software, but it doesn&#8217;t work, it won&#8217;t be successful. <i>Never let any new <s>weapon</s> feature compromise stability and robustness</i>.</p>
</li>
<li><b>Simplicity wins</b> - The more moving parts, the more things that can go wrong and break. It was easy to see the <s>robots</s> <a href="/software/php-vs-java-vs-cc-for-web-applications ">products that were over-engineered</a> by the uber geeks. I laughed when I saw these robots quickly die because something simple went wrong. My favorite example was a group of "rocket scientists" that built a robot with two ginormous spinning wheels as weapons. Each wheel was turned by an elaborate contraption of gears and pulleys. You know the end of the story. <i>Resist the temptation to over-engineer, and pride yourself on the simplest solution that accomplishes the goals</i>. Or, to quote Albert Einstein,<br />
<blockquote><p>
Everything should be made as simple as possible, but not simpler.
</p>
</blockquote>
</li>
<li><b>Test, Test, Test</b> - you could really tell a difference between the "mature" robots who had seen a couple of fights, and you could really tell the robots that their owners decide to use them for the first time in the ring. <i>Thorough testing should be done before <s>the robot</s> a product goes into <s>battle</s> the real world</i>
</li>
<li><b>Quality construction and materials</b>. This was almost as important as design. Flimsy aluminum and other cheap materials quickly gave way under battle, and poorly engineered welds or connections suffered the same fate. Same goes in software - <a href="http://en.wikipedia.org/wiki/Spaghetti_code">spaghetti code</a> may look like it&#8217;s going to work, but won&#8217;t stand up to a fierce battle.
</li>
</ul>
<p>It&#8217;s always fun when we can learn from the convergence of two different sciences. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.techyouruniverse.com/software/what-software-developers-can-learn-from-battlebots/feed</wfw:commentRss>
		</item>
		<item>
		<title>The cure for spam - forever</title>
		<link>http://www.techyouruniverse.com/technology/the-cure-for-spam-forever</link>
		<comments>http://www.techyouruniverse.com/technology/the-cure-for-spam-forever#comments</comments>
		<pubDate>Mon, 11 May 2009 22:26:35 +0000</pubDate>
		<dc:creator>nick</dc:creator>
		
		<category><![CDATA[technology]]></category>

		<category><![CDATA[stop spam forever]]></category>

		<guid isPermaLink="false">http://www.techyouruniverse.com/technology/the-cure-for-spam-forever</guid>
		<description><![CDATA[SPAM. No, not the barely edible processed meat, I&#8217;m talking about unsolicited messages we all receive, typically via e-mail. BTW - a common misconception is that SPAM is all junk mail. By the nerdiest of definitions, spam is only the unsolicited messages. If you signed up for a newsletter or a alert every time a [...]]]></description>
			<content:encoded><![CDATA[<p>SPAM. No, not the <a href="http://www.spam.com/">barely edible processed meat</a>, I&#8217;m talking about unsolicited messages we all receive, typically via e-mail. BTW - a common misconception is that SPAM is all junk mail. By the nerdiest of definitions, spam is only the <b>unsolicited</b> messages. If you signed up for a newsletter or a alert every time a new job is posted, that&#8217;s not spam, that&#8217;s something you asked for. SPAM, by definition, has to be unsolicited.</p>
<p>
Another useful tidbit - the term SPAM comes from a famous Monty Python skit - the analogy is that it&#8217;s something that keeps coming over and over again even though you didn&#8217;t ask for it nor did you want it. Here&#8217;s the <a href="http://www.youtube.com/watch?v=ODshB09FQ8w">original skit on youtube</a>, but fair warning, it&#8217;s so repetitive that it is a bit painful to watch&#8230; much like well, SPAM.
</p>
<p>
Lots of theories abound for how to solve the spam problem. <a href="http://www.barracudanetworks.com">Filters</a>. <a href="http://spamassassin.apache.org/">Bayesian spam detectors</a>. There is an entire anti-spam industry where companies spend hundreds of millions (billions?) of dollars a year fighting spam.
</p>
<p>
Fear not, I have the ultimate solution so everyone can stop getting spam. And it&#8217;s quite easy, but will take the effort of the world over. Intrigued? Read on.
</p>
<p>
Why does spam exist? Because advertisers can cheaply and easily reach millions of eyeballs with very low cost. Sure, most of the people that get the e-mail don&#8217;t read it. Quite a few are even annoyed. But of the remaining that is left, a few read it. And guess, what, a few of those actually go to the website to see what is being sold. And a few of those wind up buying something.
</p>
<p>
So a spammer&#8217;s math works like this. I send out 10,000,000 messages for the cost of bandwidth and processing time, which can be free if they are using a hacked/hijacked machine, or just a few dollars if they pay someone. Let&#8217;s say it costs $25. Sure, ISP&#8217;s don&#8217;t like this behavior, so they&#8217;ll be kicked off, but they just go to the next one.
</p>
<p>
Of that 10,000,000 messages sent out, let&#8217;s say 50% of them bounce, because the spammers e-mail list is out of date, or the person&#8217;s inbox is full, or the spam filter rejects them. 5,000,000 left.
</p>
<p>
Of that 5,000,000 people who get the message, 1% read it. 50,000 left.
</p>
<p>
Of the 50,000 people who actually read the message, 1% go to the website. 500 left.
</p>
<p>
Of the 500 people that go to the website, 10% buy something. Assuming they make $25 on each product purchased, that means they make $1250 (50 X $25). Not too shabby a return for $25. In some parts of the world, $1200 is more than people make in a year.
</p>
<p>
So how do we stop all this madness? Drum roll&#8230;.
</p>
<p>
<b>STOP BUYING PRODUCTS FROM SPAMMERS!</b>
</p>
<p>
If no one buys from spammers, the above formula breaks. Spammers will continue sending spam as long as it works. As long as you <i>one-percenters</i> are out there making it worth their while, they&#8217;ll keep leveraging the law of numbers and technology to send us messages we don&#8217;t want.
</p>
<p>
Do your part. Don&#8217;t support spammers. Don&#8217;t buy products advertised via spam!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techyouruniverse.com/technology/the-cure-for-spam-forever/feed</wfw:commentRss>
		</item>
		<item>
		<title>Why on earth doesn&#8217;t javascript have a json_encode?!</title>
		<link>http://www.techyouruniverse.com/software/why-on-earth-doesnt-javascript-have-a-json_encode</link>
		<comments>http://www.techyouruniverse.com/software/why-on-earth-doesnt-javascript-have-a-json_encode#comments</comments>
		<pubDate>Fri, 24 Apr 2009 16:35:36 +0000</pubDate>
		<dc:creator>nick</dc:creator>
		
		<category><![CDATA[software]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[json_encode javascript]]></category>

		<guid isPermaLink="false">http://www.techyouruniverse.com/software/why-on-earth-doesnt-javascript-have-a-json_encode</guid>
		<description><![CDATA[Every major language now has tools for JSON encoding a string of text, which is a format that is natively read, understand, and used by Javascript. PHP&#8217;s json_encode works great, I use it all the time for data transport. The reasons for using XML are getting harder and harder to come by. JSON is much [...]]]></description>
			<content:encoded><![CDATA[<p>Every major language now has tools for JSON encoding a string of text, which is a format that is natively read, understand, and used by Javascript. <a href="http://www.php.net/json_encode">PHP&#8217;s <code>json_encode</code></a> works great, I use it all the time for data transport. The reasons for using XML are getting harder and harder to come by. <a href="/software/json-vs-xml-vs-serialize-for-data">JSON is much easier to work with</a>.</p>
<p>Every major language has a built in json_encode, except, <b>Javascript</b>!</p>
<p>WTF?  Irony at it&#8217;s best.</p>
<p>I&#8217;m using <a href="http://www.json.org/js.html">Douglas Crockford&#8217;s JSON.js</a> in the meantime, but Firefox, Internet Explorer, Safari developers - please include support for this in a future release.</p>
<p>
<b>Update Jun 29 2009:</b> I was listened too. <img src='http://www.techyouruniverse.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Firefox 3.1+ and IE 8+ now have native JSON support. <a href="http://blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31/">More info</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.techyouruniverse.com/software/why-on-earth-doesnt-javascript-have-a-json_encode/feed</wfw:commentRss>
		</item>
		<item>
		<title>Automatic isight capture to have your Mac be a time lapse camera</title>
		<link>http://www.techyouruniverse.com/technology/automatic-isight-capture-to-have-your-mac-be-a-time-lapse-camera</link>
		<comments>http://www.techyouruniverse.com/technology/automatic-isight-capture-to-have-your-mac-be-a-time-lapse-camera#comments</comments>
		<pubDate>Tue, 31 Mar 2009 17:04:18 +0000</pubDate>
		<dc:creator>nick</dc:creator>
		
		<category><![CDATA[apple]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[automatically take pictures with isight camera]]></category>

		<category><![CDATA[isight capture]]></category>

		<guid isPermaLink="false">http://www.techyouruniverse.com/technology/automatic-isight-capture-to-have-your-mac-be-a-time-lapse-camera</guid>
		<description><![CDATA[My Apple MacBook Air has a built in iSight camera. I wanted to have it take pictures automatically every minute and save them in a folder for an upcoming home improvement project, effectively turning it into a time lapse camera. It&#8217;s also good for being able to take pictures of people using your computer. Handy [...]]]></description>
			<content:encoded><![CDATA[<p>My Apple MacBook Air has a built in iSight camera. I wanted to have it take pictures automatically every minute and save them in a folder for an upcoming home improvement project, effectively turning it into a time lapse camera. It&#8217;s also good for being able to take pictures of people using your computer. Handy when used in combination with my <a href="/technology/phone-home-script-to-protect-your-laptop">phone home script</a>. <img src='http://www.techyouruniverse.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>
Here are the steps.</p>
<ol>
<li><a href="http://www.intergalactic.de/pages/iSight.html" target="_blank">Download</a> isightcapture, a command line utility for capturing images. Drag it into /Applications/ folder
</li>
<li>Make a folder for where you want the images stored. I used <code>~/isight_capture/</code>.
</li>
<li>Set up a cronjob to take the pictures and name them with a minute in the filename. From terminal (you need to know <code>vi</code>:
<ol>
<li><code>crontab -e</code>
</li>
<li>Paste <code>*/2 * * * * /Applications/isightcapture ~/isight_capture/image.`date +\%Y-\%m-\%d_\%H_\%M`.jpg</code>
</li>
<li>Save and quit
 </li>
</ol>
</li>
</ol>
<p>That&#8217;s it! Within one minute, you&#8217;ll start to see images in your ~/isight_capture folder every two minutes. Note that they will build up as long as the computer is on, which is about 15 megabytes a day. You may want to have something else that cleans them up. You could also try every 5 minutes instead with <code>*/5</code> for the minutes for the cron, which will do it every 5 minutes instead.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techyouruniverse.com/technology/automatic-isight-capture-to-have-your-mac-be-a-time-lapse-camera/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP vs Java vs C/C++ for web applications</title>
		<link>http://www.techyouruniverse.com/software/php-vs-java-vs-cc-for-web-applications</link>
		<comments>http://www.techyouruniverse.com/software/php-vs-java-vs-cc-for-web-applications#comments</comments>
		<pubDate>Tue, 24 Feb 2009 17:22:41 +0000</pubDate>
		<dc:creator>nick</dc:creator>
		
		<category><![CDATA[php]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[php vs java]]></category>

		<guid isPermaLink="false">http://www.techyouruniverse.com/software/php-vs-java-vs-cc-for-web-applications</guid>
		<description><![CDATA[


From Incremental Operations Blog, this call stack shows the layers involved in a [typical?] Java stack. 

To be fair, this is not necessarily Java itself, but poorly written Java code. But based on my experience, this type of excessive architecture is accepted best practice in the Java world, and the architecture astronauts seem to gravitate [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right">
<a href="http://ptrthomas.files.wordpress.com/2006/06/jtrac-callstack1.png"><img src="http://ptrthomas.files.wordpress.com/2006/06/jtrac-callstack1.png" width="400" border="0"/></a>
</div>
<p>From <a href="http://ptrthomas.wordpress.com/2006/06/06/java-call-stack-from-http-upto-jdbc-as-a-picture/">Incremental Operations Blog</a>, this call stack shows the layers involved in a [typical?] Java stack. </p>
<p>
To be fair, this is not necessarily Java itself, but poorly written Java code. But based on my experience, this type of excessive architecture is accepted best practice in the Java world, and the architecture astronauts seem to gravitate to this technology.
</p>
<p>
The original pipe dream of Java was "build once, run anywhere". Since that hasn&#8217;t exactly materialized, Java is the bastard step child of programming. It doesn&#8217;t really fit in anywhere. It is neither high performance nor robust (C/C++), nor easy to program in (PHP/Python/Ruby). It&#8217;s awkwardly stuck in the middle, and doesn&#8217;t do either well. If you <b>need</b> performance that exceeds native PHP/Python capabilities (rare in the typical work place), use a C/C++ extension for the heavy lifting, and if that&#8217;s not enough, your app is at the top 1% of performance demand, and you need to use C/C++ directly.
</p>
<p>
I&#8217;ve heard the defendants of java claim that&#8217;s faster than C/C++, but fundamentally that&#8217;s not possible, since it&#8217;s a layer on top of C/C++. Yes, JIT this and caching that, but these add complexity, which violates <a href="/software/simplicity-in-software-design">my #1 rule of software design</a>, and if you added those same JIT and caching layers to C/C++, they would be even faster.
</p>
<p>
I will give Java the win in 2 areas of web based programming:</p>
<ol>
<li>Where development time and performance <i>does not matter</i>, and data integrity is the absolute most important factor. For example, stock trading and banking sites. If I was asked to build <a href="http://www.etrade.com">E*trade.com</a>, I would use Java and Oracle instead of PHP and MySQL. It would take 5 times longer to do everything, and hardware/software costs would be 10x more, and the web site would be slower, but it would be the most robust solution.
</li>
<li>Where development time and performance <i>does not matter</i>, and there are advantages in maintaining advanced "state" information with transactions and rollbacks. For example - online poker sites and <a href="http://www.ticketmaster.com">ticketmaster.com</a> (advanced reservationing). I&#8217;m sure someone&#8217;s done that using Ajax, but I wouldn&#8217;t trust money flowing over such a system, and I&#8217;d recommend Java.
</li>
</ol>
<p>For the other 99.9% of web applications, scripting languages or C/C++ is a better choice, and the complexity that Java introduces is despicable, and in my opinion, making the choice for Java is doing a disservice to your company in terms of cost (both development time and hardware).
</p>
<p>
Show me a web application that scales well in Java, and I&#8217;ll rewrite it for in in PHP in half the time and it will be twice as fast and one more "9&#8243; in availability. If it&#8217;s still not fast enough, it needs to be done in C.
</p>
<p>
I am not always popular with this argument. Quite a few of my developer peers, whom I respect, have strong pro-java arguments. I have a bet with one of these Java ninny&#8217;s - I think that <b>Java will be less prevalent in 5 years</b> than it is now, because of it&#8217;s excels-at-nothing nature. There is a bottle of expensive tequila riding on this, so I expect to be right. We&#8217;ll see. <img src='http://www.techyouruniverse.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.techyouruniverse.com/software/php-vs-java-vs-cc-for-web-applications/feed</wfw:commentRss>
		</item>
		<item>
		<title>Google Canonical Href - with Mediawiki</title>
		<link>http://www.techyouruniverse.com/wikia/google-canonical-href-with-mediawiki</link>
		<comments>http://www.techyouruniverse.com/wikia/google-canonical-href-with-mediawiki#comments</comments>
		<pubDate>Fri, 13 Feb 2009 18:18:49 +0000</pubDate>
		<dc:creator>nick</dc:creator>
		
		<category><![CDATA[mediawiki]]></category>

		<category><![CDATA[seo]]></category>

		<category><![CDATA[wikia]]></category>

		<category><![CDATA[google canonical href]]></category>

		<category><![CDATA[google canonical href mediawiki extension]]></category>

		<category><![CDATA[google canonical tag]]></category>

		<guid isPermaLink="false">http://www.techyouruniverse.com/wikia/google-canonical-href-with-mediawiki</guid>
		<description><![CDATA[It&#8217;s time to unwind the giant mess of 301&#8217;s, meta tag, and robots.txt hacks that we have in place &#8212; all aimed and eliminating "duplicate" content for search engines. We now have a simple way to tell search engines what the canonical representation of a url. That&#8217;s the promise of the new canonical tag, and [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s time to unwind the giant mess of 301&#8217;s, meta tag, and robots.txt <i>hacks</i> that we have in place &#8212; all aimed and eliminating "duplicate" content for search engines. We now have a simple way to tell search engines what the canonical representation of a url. That&#8217;s the promise of the new canonical tag, and I think it will work. Here&#8217;s the syntax:<br />
&lt;link type="canonical" href="/the/trusted/url/of/the/page"&gt;</p>
<p>
More info here:<br />
<a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html</a>
</p>
<p>
And note that it is also supported by <a href="http://ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ ">Yahoo!</a> and <a rel="nofollow" href="http://blogs.msdn.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx">MSN</a>.
</p>
<p>
Why am I so excited about it? Because I implemented it at <a href="http://www.wikia.com">Wikia</a>, who was Google&#8217;s "trusted user" (note that Google mentions <a href="http://starwars.wikia.com">starwars.wikia.com</a> as one of their examples)
</p>
<p>
Mediawiki has a problem with duplicate content. First, it has "soft" redirects, where two articles with different urls can point to the same content (which Google labels as "duplicates"). I had previously written extensions for Mediawiki that turn these into "hard" redirects (by issuing a Location: header with a 301 redirect). This showed a positive uplift for SEO, but it always felt like a hack. The canonical tag is a far more elegant solution, and improves performance by reducing 301&#8217;s.
</p>
<p>
Second, there are many entry points into an article in mediawiki:</p>
<pre>
/wiki/Article_Name
/wiki/index.php/Article_Name
/wiki/index.php?title=Article+Name
/wiki/Article_Name?action=view
</pre>
<p>
All of the above urls will produce the *exact* same content in Mediawiki, but search engines will treat them as different urls, which splits page rank and may introduce the infamous <a href="http://www.google.com/search?client=safari&#038;rls=en-us&#038;q=seo+duplicate+content&#038;ie=UTF-8&#038;oe=UTF-8">duplication penalty</a>.
</p>
<p>
Both of these problems can be easily solved with the new canonical tag, and it&#8217;s quite elegant.
</p>
<p>
I&#8217;ve written a new Mediawiki Extension for supporting the google canonical href tag at Wikia. It&#8217;s open source, and available at <a href="https://wikia-code.com/wikia/trunk/extensions/wikia/CanonicalHref/CanonicalHref.php">Wikia&#8217;s SVN repo</a> for all to use. I will be contributing it to the core mediwiki software as an extension soon. <b>Update</b>: Now available in the <a href="http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/CanonicalHref/CanonicalHref.php">Wikimedia SVN repo</a>
</p>
<p>
This is a big help outside of Mediawiki as well, take "printable" pages as an example, or even urls with extra parameters in the query string - the canonical tag can funnel all of the page rank into one version of the page.
</p>
<p>
Kudos to Google (esp. Matt Cutts), Yahoo!, and MSN on coming together to provide a clean and elegant solution to help fight the duplicate content problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techyouruniverse.com/wikia/google-canonical-href-with-mediawiki/feed</wfw:commentRss>
		</item>
		<item>
		<title>I only block for memcached</title>
		<link>http://www.techyouruniverse.com/technology/i-only-block-for-memcached</link>
		<comments>http://www.techyouruniverse.com/technology/i-only-block-for-memcached#comments</comments>
		<pubDate>Wed, 11 Feb 2009 21:18:48 +0000</pubDate>
		<dc:creator>nick</dc:creator>
		
		<category><![CDATA[technology]]></category>

		<category><![CDATA[wikia]]></category>

		<category><![CDATA[blocking]]></category>

		<category><![CDATA[I only block for memcached]]></category>

		<category><![CDATA[memcached scaling]]></category>

		<guid isPermaLink="false">http://www.techyouruniverse.com/technology/i-only-block-for-memcached</guid>
		<description><![CDATA[

Want to know the magic secret to building scalable apps? Don&#8217;t have blocking calls. Think back to all the performance problems you&#8217;ve ever had. Chances are your app was waiting on one of the following:

Database

HTTP ( a remote web service)

File system (either local or remote [NFS])

Some other blocking service


Remove all these, and your app is [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right"><a href="http://nick.sullivanflock.com/memcached2.jpg"><img src="http://nick.sullivanflock.com/memcached2.jpg" alt="I only block for memcached tshirt" width="300"/></a></div>
<p>
Want to know the magic secret to building scalable apps? <b>Don&#8217;t have blocking calls</b>. Think back to all the performance problems you&#8217;ve ever had. Chances are your app was waiting on one of the following:</p>
<ul>
<li>Database
</li>
<li>HTTP ( a remote web service)
</li>
<li>File system (either local or remote [NFS])
</li>
<li>Some other blocking service
</li>
</ul>
<p>Remove all these, and your app is fast! The one exception that has always treated me well is <a href="http://www.danga.com/memcached/">memcached</a>. memcached in and of itself doesn&#8217;t block, and if you can write an app that only blocks on memcached, you&#8217;ve written a very well scaled app.
</p>
<p>
You may think I&#8217;m exaggerating. And maybe I am, to make a point. But I just did built an app that scales using memcached, and it powers <b>all of Wikia&#8217;s ad traffic on two servers</b>, handling approximately 500 transactions a second, and storing 7500 pieces of data per second.
</p>
<p>
Actually, one server can handle the load, I just use two for redundancy. <img src='http://www.techyouruniverse.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />
</p>
<p>
Scale with memcached, skip all the other blocking calls! Tip: Ajax isn&#8217;t blocking.
</p>
<p>
I liked this idea so much that I had T-shirts made that say "I only block for memcached". I&#8217;ve sold a couple to friends, and I will be giving one to Brad Fitzpatrick, the creator of memcached, as a Thank You from all of the users of memcached. Thanks Brad!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techyouruniverse.com/technology/i-only-block-for-memcached/feed</wfw:commentRss>
		</item>
		<item>
		<title>Automatically figure out which social bookmarking site to use with css</title>
		<link>http://www.techyouruniverse.com/technology/automatically-figure-out-which-social-bookmarking-site-to-use-with-css</link>
		<comments>http://www.techyouruniverse.com/technology/automatically-figure-out-which-social-bookmarking-site-to-use-with-css#comments</comments>
		<pubDate>Mon, 19 Jan 2009 17:16:22 +0000</pubDate>
		<dc:creator>nick</dc:creator>
		
		<category><![CDATA[technology]]></category>

		<category><![CDATA[display social bookmarking icons css]]></category>

		<guid isPermaLink="false">http://www.techyouruniverse.com/technology/automatically-figure-out-which-social-bookmarking-site-to-use-with-css</guid>
		<description><![CDATA[With dozens of them, displaying them all is rediculous (although I&#8217;ve seen it). Why not just display the ones that the user visits?

This write up (from someone I work with at Wikia) explains how - by using the CSS for "visited" links.


http://www.azarask.in/blog/post/socialhistoryjs/


A bit creepy, but interesting enough to pass along.
]]></description>
			<content:encoded><![CDATA[<p>With dozens of them, displaying them all is rediculous (although I&#8217;ve seen it). Why not just display the ones that the user visits?</p>
<p>
This write up (from someone I work with at Wikia) explains how - by using the CSS for "visited" links.
</p>
<p>
<a href="http://www.azarask.in/blog/post/socialhistoryjs/">http://www.azarask.in/blog/post/socialhistoryjs/</a>
</p>
<p>
A bit creepy, but interesting enough to pass along.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techyouruniverse.com/technology/automatically-figure-out-which-social-bookmarking-site-to-use-with-css/feed</wfw:commentRss>
		</item>
		<item>
		<title>Ultimate vimrc file - Good for php, bash, ruby and others</title>
		<link>http://www.techyouruniverse.com/software/ultimate-vimrc-file-good-for-php-bash-ruby-and-others</link>
		<comments>http://www.techyouruniverse.com/software/ultimate-vimrc-file-good-for-php-bash-ruby-and-others#comments</comments>
		<pubDate>Wed, 14 Jan 2009 05:25:03 +0000</pubDate>
		<dc:creator>nick</dc:creator>
		
		<category><![CDATA[php]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[ultimate vimrc]]></category>

		<category><![CDATA[vimrc for php]]></category>

		<guid isPermaLink="false">http://www.techyouruniverse.com/uncategorized/ultimate-vimrc-file-good-for-php-bash-ruby-and-others</guid>
		<description><![CDATA[I&#8217;ve built this one up for a few years, and now it&#8217;s time to share. Notable features:

Syntax highlighting

Test compile for syntax errors. This means that every time you write the file, it will check the file for syntax errors and alert you immediately. This saves much back and forth with development. It works with the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve built this one up for a few years, and now it&#8217;s time to share. Notable features:</p>
<ul>
<li>Syntax highlighting
</li>
<li>Test compile for syntax errors. This means that every time you write the file, it will check the file for syntax errors and alert you immediately. This saves much back and forth with development. It works with the following languages:
<ol>
<li>php
    </li>
<li>bash
    </li>
<li>perl
    </li>
<li>httpd.conf
    </li>
<li>xml
    </li>
<li>ruby
    </li>
<li>puppet
    </li>
<li>javascript (if you have <a href="http://www.jslint.com/">jslint</a> installed)
   </li>
</ol>
</li>
<li>
</li>
<li>Tab completion of php functions (if you download <a href="http://lerdorf.com/funclist.txt">Rasmus&#8217;s function list</a> and put it in your home directory. <code>curl -o ~/.phpfunclist.txt -v http://lerdorf.com/funclist.txt</code>)
<p>Ok, enough teasing. The ultimate vimrc file can be found <a href="http://nick.sullivanflock.com/code/trunk/util/vim/mastervimrc">here</a></p>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.techyouruniverse.com/software/ultimate-vimrc-file-good-for-php-bash-ruby-and-others/feed</wfw:commentRss>
		</item>
		<item>
		<title>Apple - Please put Wireless Broadband in every MacBook</title>
		<link>http://www.techyouruniverse.com/technology/apple-please-put-wireless-broadband-in-every-macbook</link>
		<comments>http://www.techyouruniverse.com/technology/apple-please-put-wireless-broadband-in-every-macbook#comments</comments>
		<pubDate>Sat, 08 Nov 2008 02:58:09 +0000</pubDate>
		<dc:creator>nick</dc:creator>
		
		<category><![CDATA[technology]]></category>

		<category><![CDATA[apple wireless broadband]]></category>

		<guid isPermaLink="false">http://www.techyouruniverse.com/technology/apple-please-put-wireless-broadband-in-every-macbook</guid>
		<description><![CDATA[Dear Steve Jobs,
Right now I use Verizon Wireless broadband. It&#8217;s better than not having it, but I would much prefer to have it built into my Macbook Pro. Right now I have external USB device, and while it works, it is clunky at best. 
Please partner with AT&#038;T, so that I pay one bill, and [...]]]></description>
			<content:encoded><![CDATA[<p>Dear Steve Jobs,</p>
<p>Right now I use Verizon Wireless broadband. It&#8217;s better than not having it, but I would much prefer to have it built into my Macbook Pro. Right now I have external USB device, and while it works, it is clunky at best. </p>
<p>Please partner with AT&#038;T, so that I pay one bill, and get my iPhone and wireless Broadband together. Do your usual routine where you make it easy to use, painless, intuitive, etc.</p>
<p>It shouldn&#8217;t be that difficult to pull off, as you already have 3G iPhones available. They already have wireless broadband built into laptops in Europe, check there for more info.</p>
<p>Thanks,</p>
<p>Loyal Apple Customer</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techyouruniverse.com/technology/apple-please-put-wireless-broadband-in-every-macbook/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
