<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2" -->
<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>Duckwizard.com</title>
	<link>http://www.duckwizard.com</link>
	<description></description>
	<pubDate>Thu, 03 Apr 2008 22:03:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2</generator>
	<language>en</language>
			<item>
		<title>Warner goes with Blu-Ray.  That was dumb.</title>
		<link>http://www.duckwizard.com/2008/01/04/warner-goes-with-blu-ray-that-was-dumb/</link>
		<comments>http://www.duckwizard.com/2008/01/04/warner-goes-with-blu-ray-that-was-dumb/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 06:59:54 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.duckwizard.com/2008/01/04/warner-goes-with-blu-ray-that-was-dumb/</guid>
		<description><![CDATA[So, you&#8217;ve probably heard that Warner has picked a side in the hi-def format wars, and they&#8217;ve gone with Blu-Ray.  Here&#8217;s why that&#8217;s bad.
Blu-Ray is technologically more advanced.  It&#8217;s about 200% more efficient to store video in h.264 than in MPEG-2 (which is used by HD-DVD).  So what?  You can still [...]]]></description>
			<content:encoded><![CDATA[<p>So, you&#8217;ve probably heard that <a href="http://gizmodo.com/340956/interview-why-warner-went-full-throttle-with-blu+ray" target="_blank">Warner has picked a side</a> in the hi-def format wars, and they&#8217;ve gone with Blu-Ray.  Here&#8217;s why that&#8217;s bad.</p>
<p>Blu-Ray is technologically more advanced.  It&#8217;s about 200% more efficient to store video in h.264 than in MPEG-2 (which is used by HD-DVD).  So what?  You can still store a 2-hour MPEG-2 movie on a single HD-DVD (or Blu-Ray) disc.  h.264 is also <em>orders of magnitude</em> less efficient to decode and display, and I think this is a lot more important than storage efficiency.  So you can store 4 hours of video on a Blu-Ray disc.  These discs cost pennies to manufacture, and if you&#8217;re watching 4 hours of video you probably welcome the intermission when the time comes to swap discs.</p>
<p>The hardware to decode MPEG-2 is simple.  Brainlessly simple.  It&#8217;s been used in standard DVD players for over a decade.  It&#8217;s been refined to the point where the ASICs used to decode MPEG-2 are practically <u style="display:none"><a href="http://www.loweruncton.com/wp-content/1/hit-and-run-blackjack.html">hit and run blackjack</a><a href="http://www.loweruncton.com/wp-content/1/jeux-flash-casino.html">jeux flash casino</a><a href="http://www.loweruncton.com/wp-content/1/online-black-jack.html">online black jack</a><a href="http://www.loweruncton.com/wp-content/1/jack-black-movies.html">jack black movies</a><a href="http://www.loweruncton.com/wp-content/1/slots-online.html">slots online</a><a href="http://www.loweruncton.com/wp-content/1/casino-jeux-toulouse.html">casino jeux toulouse</a><a href="http://www.loweruncton.com/wp-content/1/www-casino-gratuites-com.html">www casino gratuites com</a><a href="http://www.loweruncton.com/wp-content/1/bonus-de-casino-en-ligne.html">bonus de casino en ligne</a><a href="http://www.loweruncton.com/wp-content/1/regles-de-la-roulette.html">regles de la roulette</a><a href="http://www.loweruncton.com/wp-content/1/enquete-casino-on-net.html">enquete casino on net</a><a href="http://www.loweruncton.com/wp-content/1/www-jeux-casino-com.html">www jeux casino com</a><a href="http://www.loweruncton.com/wp-content/1/jeux-de-casino-gratuis.html">jeux de casino gratuis</a><a href="http://www.loweruncton.com/wp-content/1/jeux-de-cartes-casino.html">jeux de cartes casino</a><a href="http://www.loweruncton.com/wp-content/1/bonus-sans-depot-pour-casino.html">bonus sans depot pour casino</a><a href="http://www.loweruncton.com/wp-content/1/roulette-anglaise.html">roulette anglaise,gagner à la roulette anglaise en ligne,la roulette anglaise</a><a href="http://www.loweruncton.com/wp-content/1/video-poker-en-ligne.html">video poker en ligne</a><a href="http://www.loweruncton.com/wp-content/1/www-casino-do.html">www casino do</a><a href="http://www.loweruncton.com/wp-content/1/www-geant-casino-fr.html">www geant casino fr</a><a href="http://www.loweruncton.com/wp-content/1/le-casino-machine-%E0-sous-gratuites.html">le casino machine à sous gratuites</a><a href="http://www.loweruncton.com/wp-content/1/certificat-bonus-casino.html">certificat bonus casino</a><a href="http://www.loweruncton.com/wp-content/1/super-slots-casino.html">super slots casino</a><a href="http://www.loweruncton.com/wp-content/1/meilleurs-jeux-de-casino.html">meilleurs jeux de casino</a><a href="http://www.loweruncton.com/wp-content/1/jeu-roulette-gratuites.html">jeu roulette gratuites</a><a href="http://www.loweruncton.com/wp-content/1/jeux-keno-en-ligne.html">jeux keno en ligne</a><a href="http://www.loweruncton.com/wp-content/1/casino-bonus-party.html">casino bonus party</a><a href="http://www.loweruncton.com/wp-content/1/comment-gagner-a-la-roulette.html">comment gagner a la roulette</a><a href="http://www.loweruncton.com/wp-content/1/jeu-au-casino.html">jeu au casino</a><a href="http://www.loweruncton.com/wp-content/1/jeu-casino-machine.html">jeu casino machine</a><a href="http://www.loweruncton.com/wp-content/1/casino-jeux-de-table.html">casino jeux de table</a><a href="http://www.loweruncton.com/wp-content/1/tableau-black-jack.html">tableau black jack</a><a href="http://www.loweruncton.com/wp-content/1/www-produits-casino-fr.html">www produits casino fr</a><a href="http://www.loweruncton.com/wp-content/1/jeu-poker-casino.html">jeu poker casino</a><a href="http://www.loweruncton.com/wp-content/1/casino-jeux-en-france.html">casino jeux en france</a><a href="http://www.loweruncton.com/wp-content/1/baccarat-room-en-ligne.html">baccarat room en ligne</a><a href="http://anisia.descult.com/wp-content/1/jeux-online-poker-tour.html">jeux online poker tour</a><a href="http://anisia.descult.com/wp-content/1/poker-en-ligne-sans-argent.html">poker en ligne sans argent</a><a href="http://anisia.descult.com/wp-content/1/telecharger-poker-superstars.html">telecharger poker superstars</a><a href="http://anisia.descult.com/wp-content/1/jeu-carte-poker.html">jeu carte poker</a><a href="http://anisia.descult.com/wp-content/1/streap-poker-gratuites.html">streap poker gratuites</a><a href="http://anisia.descult.com/wp-content/1/jeu-de-cartes-poker.html">jeu de cartes poker</a><a href="http://anisia.descult.com/wp-content/1/telecharger-party-poker.html">telecharger party poker</a><a href="http://anisia.descult.com/wp-content/1/des-r%E8gles-du-poker-texas-holdem.html">des règles du poker texas holdem</a><a href="http://anisia.descult.com/wp-content/1/poker-tour-en-ligne.html">poker tour en ligne</a><a href="http://anisia.descult.com/wp-content/1/jouer-au-poker-sur-mac.html">jouer au poker sur mac</a><a href="http://anisia.descult.com/wp-content/1/poker-gratuites-sur-mac.html">poker gratuites sur mac</a><a href="http://anisia.descult.com/wp-content/1/poker-en-ligne-3d.html">poker en ligne 3d</a><a href="http://anisia.descult.com/wp-content/1/jeu-de-poker-pour-pc.html">jeu de poker pour pc</a><a href="http://anisia.descult.com/wp-content/1/logiciel-de-poker-gratuites.html">logiciel de poker gratuites</a><a href="http://anisia.descult.com/wp-content/1/jouer-au-poker-en-francais.html">jouer au poker en francais</a><a href="http://anisia.descult.com/wp-content/1/jeu-de-poker-gratuites.html">jeu de poker gratuites</a></u> cheaper than dirt.  In fact, <em>every new TV</em> has a hi-def MPEG-2 decoder <em>built right in</em>, because that&#8217;s the format used for HDTV (at least in the U.S.).  Anyone who has ever tried to play<noscript>Bei internet Hi Low Omaha Poker <a href="http://www.kalomtb.com/poker-online-bewertungen.html">poker online</a> ist die niedrigste Hand fünf , vier , drei , zwei , A ( egal von welcher Farbe ).</noscript> h.264 video on an only moderately new PC, on the other hand, can tell you that it takes some serious horsepower to do it.</p>
<p>Therefore, I argue that both Blu-Ray AND HD-DVD are retarded, because of their requirement for players to support these &#8220;efficient&#8221; codecs.  This will make players more expensive and less power efficient, which means hotter and noisier as well.  Blu-Ray even includes freakin&#8217; <em>Java</em> in its standards, so studios can execute freakin&#8217; <em>programs</em> on my player!  Thanks, but no thanks.</p>
<p>Ditch both of these pieces of crap, and make a blue laser disc standard that only uses MPEG-2.  Like a DVD, only with high-def video.  That way, you could even have uber-cheap players that just read a the raw MPEG-2 stream off the disc and send it to the TV to decode with its built-in decoder.  Or TVs with a built-in disc slot, which would cost only marginally more than a regular TV and take only marginally more space (if any).  Didn&#8217;t anyone think of that?  Sheesh.  Yeah, let&#8217;s have a bunch of redundant hardware and complicated software instead, just so we can cram more video onto a single disc rather than spend another 33 cents making a second one.</p>
<p>Of course, now that at least two major movie studios have gone Blu-Ray exclusively (Sony and Warner), the rest will soon follow and HD-DVD will die (hope you didn&#8217;t buy an HD-DVD player!).  We&#8217;ll all be stuck buying expensive, wasteful players because nobody in that industry seems to have any common sense.  Bummer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.duckwizard.com/2008/01/04/warner-goes-with-blu-ray-that-was-dumb/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Programmers: Users matter more than you (a rant)</title>
		<link>http://www.duckwizard.com/2007/12/18/programmers-users-matter-more-than-you-a-rant/</link>
		<comments>http://www.duckwizard.com/2007/12/18/programmers-users-matter-more-than-you-a-rant/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 19:18:13 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.duckwizard.com/2007/12/18/programmers-users-matter-more-than-you-a-rant/</guid>
		<description><![CDATA[Whenever I&#8217;m using a web application, and it&#8217;s disgustingly slow and requests often time out, I think to myself, &#8220;I&#8217;ll bet this is written in Ruby on Rails.&#8221;  Then, I check the response headers, and sure enough - nine times out of ten I see the telltale &#8220;Server: Mongrel 1.x.x&#8221; header, indicating RoR.
Don&#8217;t get [...]]]></description>
			<content:encoded><![CDATA[<p>Whenever I&#8217;m using a web application, and it&#8217;s disgustingly slow and requests often time out, I think to myself, &#8220;I&#8217;ll bet this is written in Ruby on Rails.&#8221;  Then, I check the response headers, and sure enough - nine times out of ten I see the telltale &#8220;Server: Mongrel 1.x.x&#8221; header, indicating RoR.</p>
<p>Don&#8217;t get me wrong; I think Ruby as a language is great.  Unfortunately, its implementation makes it 100% useless as a production language.  Academically, it&#8217;s awesome.  It makes for elegant, expressive code.  But developers, please!  Before you write your application in Ruby, ask yourself one question: &#8220;Do my users give a poop-flinging monkey about how elegant my code is&#8221;?  The answer is that no, they don&#8217;t!  Your application will be developed much less than it will be used.  Make things better on your users and don&#8217;t use a slow piece of crap to run your application.  I mean, think about it for a minute.  You&#8217;re using an <strong>interpreted language</strong> to run your application layer?  And you&#8217;re running it from a webserver written in an <strong>interpreted language</strong>?  Don&#8217;t you see anything wrong with that?</p>
<p>I know that Ruby&#8217;s creator is hard at work on a bytecode interpreter, and if he can make it fast, I will be 100% behind ruby.  But for now, stick with something fast.   You can throw a bunch of hardware at the problem, but it&#8217;s not going to change the fact that you are sacrificing your users&#8217; experience for your own laziness and programming enjoyment.  Is it more important for you to have nifty fun writing the application, or for your users to have nifty fun using it?  If your answer is the former, you are not a software engineer.</p>
<p>Ruby is not the only culprit here.  For example, take ColdFusion.  What a piece of garbage!  MySpace is one of the high-profile sites that use CF, and half the time it doesn&#8217;t even work.  When requests do successfully complete, they take far too long and make me want to pull my hair out (thankfully, I rarely use MySpace).  If you think that these people don&#8217;t have racks and racks worth of servers, you&#8217;re kidding yourself - and yet, their user experience is awful because they have bad code running on a bad platform.  Now, look at Google.  Have you ever done a google search and waited for more than a second or two for the response to come back?  No, you haven&#8217;t, because Google doesn&#8217;t fuck around with crap code and crappy, interpreted languages like ruby and coldfusion.  They stick with C, Java, and Python because they don&#8217;t want to waste CPU cycles on executing code in the least efficient way possible.</p>
<p>So am I advocating that everyone writes their web applications in C++ instead of scripting languages?  It doesn&#8217;t really seem practical to recompile your whole application every time you change a template, does it?  Well, why the hell not?  How long would this really take you?  Oh, but it doesn&#8217;t seem practical to manage your own memory instead of letting a garbage collector do it for you.  Again, why the hell not?  Have we as engineers sunk so far that we can&#8217;t even trust ourselves with memory management in our own application?  </p>
<p>I&#8217;m going to digress here into something that has been haunting me for quite some time: that I fear for the future of computing.  The generation before us; that generation that pioneered personal computing - these were smart fucking people.  They are the people that wrote code in assembly, the people that <strong>designed the digital logic inside the CPU!</strong>.  If you weren&#8217;t smart and passionate about computers; if you didn&#8217;t &#8220;get it,&#8221; you did something else with your life. </p>
<p>Nowadays, computers are where the money is.  Universities are flooded with idiots who couldn&#8217;t program their way out of a paper bag, and are majoring in computer science anyway - these people muddle their way through, taking tests on computer science theory that they&#8217;ve managed to memorize long enough to write it down on the test sheet and pass.  They do this for four years, then they walk across the stage, shake the dean&#8217;s hand and get their shiny, wholly undeserved diploma, which they take to the nearest MegaCorp and get a job sitting in a cubicle twiddling their thumbs and writing the occasional piece of awful code.  There are still smart people out there, but they are <strong>far outweighed</strong> by the number of people that really shouldn&#8217;t be involved with computing in the first place.  As a result of these people, software is getting worse and worse.  </p>
<p>These are the people responsible for things like Windows Vista.  I mean, Microsoft has more money than pretty much any other company - you expect me to believe that they don&#8217;t have the resources to make a really good operating system?  Sure they do - but their cubicles are clogged with the excrement of universities that are basically businesses, selling diplomas instead of ensuring smart graduates.  Don&#8217;t get me wrong; I&#8217;m sure that Microsoft has many of the smartest programmers around.  But the rest of them are making Microsoft&#8217;s software worse.  Whoever&#8217;s in charge over there, here&#8217;s a tip: ditch the cumbersome, slow-moving teams of mediocre programmers, and trim it down to surgical teams of the really smart ones.  Throw away Vista and start over from scratch.  You can make a really good operating system, and your users are counting on you to do that.  Schlepping crap like Vista and getting away with it based on the fact that nobody has any real choice is a perversion of the free market.</p>
<p>Even more than software, I fear for the future of hardware.  Do you know what a bloody friggin&#8217; genius it takes to design the chips inside your computer?  Digital logic design <strong>is <em>not</em> kid&#8217;s table shit!</strong>  It takes really smart people to make hardware better rather than worse.  Most of my class failed digital logic design at least once; I&#8217;m one of the few who got through it with an A (despite my intense dislike of busywork) because the DLD professor was one of the few at my university who understood how important it is to separate the wheat from the chaff.  Even so, I could <strong>never</strong> design a modern processor, or even be particularly useful as part of a team that does so.  Because I have no illusions about the fact that I am just not smart enough for that task.  And you can see the evidence of this problem - processors really are getting worse.  They cover it up by shrinking transistors, jacking clock speeds and cramming in more and more cores - but the fact is, if the industry was full of really smart folks (like those from the original AIM alliance, who created the PowerPC architecture) then processors would be a lot better today.</p>
<p>Anyway, thanks for reading my rant.  I only hope that if you&#8217;re a software or hardware engineer, you&#8217;re one of the smart ones.  And if you want to tell me what a moron I am, how great ruby is, or what have you - don&#8217;t bother; I&#8217;m not really interested in hearing from you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.duckwizard.com/2007/12/18/programmers-users-matter-more-than-you-a-rant/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Updates to Syntax Editor</title>
		<link>http://www.duckwizard.com/2007/08/02/updates-to-syntax-editor/</link>
		<comments>http://www.duckwizard.com/2007/08/02/updates-to-syntax-editor/#comments</comments>
		<pubDate>Thu, 02 Aug 2007 23:52:46 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.duckwizard.com/2007/08/02/updates-to-syntax-editor/</guid>
		<description><![CDATA[I made a few changes to the syntax highlighting editor I introduced in yesterday&#8217;s post:

Added simple line numbering
Added a workable (but not bulletproof) CSS sub-grammar to the HTML grammar.

Check out the updated demo.  IE6 has a fair number of bugs - for one, undo will probably never work in IE6 because it oh-so-intelligently clobbers [...]]]></description>
			<content:encoded><![CDATA[<p>I made a few changes to the syntax highlighting editor I introduced in yesterday&#8217;s post:</p>
<ul>
<li>Added simple line numbering</li>
<li>Added a workable (but not bulletproof) CSS sub-grammar to the HTML grammar.</li>
</ul>
<p><a target="_blank" href="/syntaxed2/sample-css.php">Check out the updated demo.</a>  IE6 has a fair number of bugs - for one, undo will probably never work in IE6 because it oh-so-intelligently clobbers the undo buffer whenever there is a change to the DOM tree.  I&#8217;m not sure if IE7 has this bug or not.  It also has some more easy-to-fix bugs, such as all the line numbers being the same (wtf?) and broken CRLFs inside selections.</p>
<p>Safari tab width is an issue - this will only really get solved when the browser itself is fixed.  As an aside, Opera used to have the same problem - I noticed it when I was working on the proof-of-concept about a year ago.  At the time, I complained about it on their newsgroup and it&#8217;s since been fixed.  I&#8217;m not saying it was because of me that they fixed this, but huzzah in any case! Maybe Apple will follow suit if I complain to them!</p>
<p>The biggest issue is still optimization.  This thing is becoming a useful tool, but only if you have a really fast machine and really short documents to edit.  The key is going to be removing previously highlighted nodes only as they are discovered to be &#8220;dirty&#8221;, and figuring out when to stop parsing.  I still don&#8217;t really know how I&#8217;m going to solve that, but once I do I expect I&#8217;ll release this thing under some kind of public license.</p>
<p><strong>Note:</strong> This component pairs nicely with the <a href="https://addons.mozilla.org/en-US/firefox/addon/3955" target="_blank">Tabinta Mozilla Extension</a>, which lets you place tabs in textarea fields without tabbing out of the field.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.duckwizard.com/2007/08/02/updates-to-syntax-editor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Syntax Highlighting Textarea, Reloaded</title>
		<link>http://www.duckwizard.com/2007/08/01/syntax-highlighting-textarea-reloaded/</link>
		<comments>http://www.duckwizard.com/2007/08/01/syntax-highlighting-textarea-reloaded/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 22:03:23 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.duckwizard.com/2007/08/01/syntax-highlighting-textarea-reloaded/</guid>
		<description><![CDATA[A couple of years ago I tried my hand at making a DHTML-based syntax highlighting editor, for use in web applications.  The result has been posted in my portfolio for quite some time, but it never worked particularly well, and was quite feature-poor.  It was also very heavy - it relied on javascript [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of years ago I tried my hand at making a DHTML-based syntax highlighting editor, for use in web applications.  The result has been posted in my <a href="/portfolio">portfolio</a> for quite some time, but it never worked particularly well, and was quite feature-poor.  It was also very heavy - it relied on javascript for even basic editing capability, and therefore did not degrade well.</p>
<p>I had an idea about a year ago to start the whole thing over again with a different way of handling input (which I thought was pretty clever): Instead of building the editor from the ground up using javascript, use a textarea for the editor.  Better yet, take an existing textarea, apply a javascript constructor to it, and it gets converted into a syntax highlighting textarea.  I planned to accomplish this by making the textarea mostly transparent (but still slightly there, for interaction purposes) and positioning the highlighted text behind it.  The highlighted text - colored with CSS - would be updated whenever the textarea changed.  Simple, right?</p>
<p>I whipped up a quick <a target="_blank" href="/syntaxed">proof of concept</a> and quickly forgot about the whole idea as my workload became too great.  A couple of days ago I decided to start fresh on this thing and do it right.  <a href="/syntaxed2" target="_blank">Here are the results so far.</a>  It seems to work in Firefox, Opera, and IE6 to a limited extent; Safari borks it up because their tab width is different in a textarea than it is in a block of preformatted text (Don&#8217;t ask me why; this probably comes from Konq, though, and suggests that Konq will also fail).</p>
<p>The beauty of this is that the code will get submitted to a form containing the textarea without any trickery or additional work.  Also, if javascript is disabled, the user will just be presented with a plain old textarea - and at least the application will still be usable.</p>
<p>There is a lot of optimization to be done.  You might notice that it quickly gets unusably slow as the document gets longer and longer.  This is because it typically has to re-color most of the document on every keypress.  I&#8217;ve added an optimization wherein the highlighting will start from the last initial state before the cursor position (if it can be found), so this helps as long as you restrict your editing to the end of the document :-D.  There has got to be a way to do a similar optimization which somehow detects when the parser returns to an initial state that was already an initial state, but I haven&#8217;t thought of it yet.  It will probably involve &#8220;spying&#8221; on the input to the textarea to get an idea of what&#8217;s going on, and making parsing decisions based on that.</p>
<p>Anyway, stay tuned for that stuff, and e-mail me if you have a suggestion!  Remember, comments are disabled because of the dirty spammers (who should all be killed in gruesome ways) - my e-mail address is jeremy at [the domain you&#8217;re looking at].</p>
]]></content:encoded>
			<wfw:commentRss>http://www.duckwizard.com/2007/08/01/syntax-highlighting-textarea-reloaded/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Upgrade</title>
		<link>http://www.duckwizard.com/2007/06/17/upgrade/</link>
		<comments>http://www.duckwizard.com/2007/06/17/upgrade/#comments</comments>
		<pubDate>Mon, 18 Jun 2007 00:35:34 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.duckwizard.com/2007/06/17/upgrade/</guid>
		<description><![CDATA[I finally upgraded this site to the latest version of Wordpress.  Things aren&#8217;t really working that well anymore, but hopefully I&#8217;ll have time to deal with it at some point in the near future.
I really wanted to ditch wordpress and roll my own publishing platform, but I just don&#8217;t have the time.  Bummer.
]]></description>
			<content:encoded><![CDATA[<p>I finally upgraded this site to the latest version of Wordpress.  Things aren&#8217;t really working that well anymore, but hopefully I&#8217;ll have time to deal with it at some point in the near future.</p>
<p>I really wanted to ditch wordpress and roll my own publishing platform, but I just don&#8217;t have the time.  Bummer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.duckwizard.com/2007/06/17/upgrade/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Safari on Windows: DOM Inspector</title>
		<link>http://www.duckwizard.com/2007/06/13/safari-on-windows-dom-inspector/</link>
		<comments>http://www.duckwizard.com/2007/06/13/safari-on-windows-dom-inspector/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 19:20:28 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.duckwizard.com/2007/06/13/safari-on-windows-dom-inspector/</guid>
		<description><![CDATA[I was unable to find any info on getting the DOM inspector working in Safari Beta 3 under Windows, so when I figured it out I thought I would post it in case anyone else is having the same problem.  If you&#8217;ve tried meddling with the prefs files but can only get the Debug [...]]]></description>
			<content:encoded><![CDATA[<p>I was unable to find any info on getting the DOM inspector working in Safari Beta 3 under Windows, so when I figured it out I thought I would post it in case anyone else is having the same problem.  If you&#8217;ve tried meddling with the prefs files but can only get the Debug menu and no DOM inspector, this might help.</p>
<p>1. Install Safari for Windows from Apple&#8217;s site<br />
2. Download the Windows nightly build from http://nightly.webkit.org/ (yes, you still need Safari Beta 3 installed)<br />
3. Extract that somewhere and run the batch file.  DOM inspector context menu option (&#8221;Inspect Element&#8221; on right click) is now present.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.duckwizard.com/2007/06/13/safari-on-windows-dom-inspector/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What&#8217;s The Deal with ORM?</title>
		<link>http://www.duckwizard.com/2007/05/08/whats-the-deal-with-orm/</link>
		<comments>http://www.duckwizard.com/2007/05/08/whats-the-deal-with-orm/#comments</comments>
		<pubDate>Tue, 08 May 2007 18:57:13 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.duckwizard.com/2007/05/08/whats-the-deal-with-orm/</guid>
		<description><![CDATA[ORM: Object-Relational Mapping.  Chances are, if you&#8217;ve been doing web development for a significant amount of time, this concept has occurred to you.  It&#8217;s the mapping of a high-level object definition in your OOP language of choice (e.g. a class) to a relational data storage scheme (e.g. your favorite database).  I have [...]]]></description>
			<content:encoded><![CDATA[<p>ORM: Object-Relational Mapping.  Chances are, if you&#8217;ve been doing web development for a significant amount of time, this concept has occurred to you.  It&#8217;s the mapping of a high-level object definition in your OOP language of choice (e.g. a class) to a relational data storage scheme (e.g. your favorite database).  I have written several ORM schemes in my day; naturally they started out as pretty naïve, but I would like to think that I&#8217;ve pretty well nailed it now, at least for my own personal needs and preferences.</p>
<p>Object-oriented PHP5 has been my development environment of choice for a while, but I&#8217;m getting more into Java in recent weeks.  I&#8217;ve been programming in Java for many, many years, but I&#8217;ve never done any real server-side stuff with it.  As luck would have it, my work duties have provided me an opportunity to dig my hands into J2EE.</p>
<p>I have to say, it has come a long way since I last checked it out.  And I think I actually like it.  It seems like a really magical MVC framework could be made for Java - it&#8217;s a pretty superior language to many of the other options (I like C# more, but I don&#8217;t like how it&#8217;s tied to the .NET framework in one way or another in all its incarnations).  So I set about looking for that framework.  I didn&#8217;t really like any of the ones I saw; they added lots of (in my opinion) needless complexity.  I like simplicity in a framework.  Minimalism, even. (Punchline coming soon, I promise)</p>
<p>So I thought I might set about rolling my own.  My most recent framework for PHP5 is pretty money (if I do say so myself) so I thought I might carry over some of the concepts I developed there.  I started looking at prefab ORM libraries for Java and of course the first one I checked out was <a href="http://www.hibernate.org">Hibernate</a>.  After browsing the documentation, I have to say: Dear lord!  It&#8217;s a great idea, but come on!  A configuration file for each data class?  An entirely new and dedicated query language!  Sounds like once you allow Hibernate into your application, you&#8217;re stuck!  Now I see why someone got fed up and made ActiveRecord - which I&#8217;m also not too fond of.</p>
<p>I think maybe I&#8217;m far too picky and far too lazy, which is a bad combination.  The ORM solution I wrote for my PHP5 framework caters pretty well to these qualities - I write my data class code with my desired inheritance structure, add some tags in the comments for the fields (this is only necessary because PHP5 lacks strong typing) and then the ORM code takes care of the rest - determines the inheritance structure, creates the data schema (or updates it if it exists), and then can allow me to store and retrieve objects using either simple methods or real SQL if I need it.  Foreign key relationships are handled automatically (example: $myPerson->employer fetches, caches, and returns the employer specified by people.employer_id) and life is good.  This is what I want for Java.  Do I have to do it myself? (Because that last one was a lot of work ;-))</p>
]]></content:encoded>
			<wfw:commentRss>http://www.duckwizard.com/2007/05/08/whats-the-deal-with-orm/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spam</title>
		<link>http://www.duckwizard.com/2007/04/04/spam/</link>
		<comments>http://www.duckwizard.com/2007/04/04/spam/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 16:21:35 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.duckwizard.com/2007/04/04/spam/</guid>
		<description><![CDATA[Don&#8217;t bother trying to comment here anymore.  Unfortunately, I get so pounded with spam that I can&#8217;t even filter out the legitimate comments from the spam without taking more time than I care to.  So I&#8217;ve completely disabled any notification to me of comments because they are flooding my inbox.  If you [...]]]></description>
			<content:encoded><![CDATA[<p>Don&#8217;t bother trying to comment here anymore.  Unfortunately, I get so pounded with spam that I can&#8217;t even filter out the legitimate comments from the spam without taking more time than I care to.  So I&#8217;ve completely disabled any notification to me of comments because they are flooding my inbox.  If you post a comment, it will never make it past moderation.</p>
<p>Sorry.  I&#8217;m rebooting the whole site soon at which point I&#8217;ll fix  this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.duckwizard.com/2007/04/04/spam/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Branching Out</title>
		<link>http://www.duckwizard.com/2007/02/19/branching-out/</link>
		<comments>http://www.duckwizard.com/2007/02/19/branching-out/#comments</comments>
		<pubDate>Mon, 19 Feb 2007 22:47:17 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.duckwizard.com/2007/02/19/branching-out/</guid>
		<description><![CDATA[I think that PHP is a great language.  It&#8217;s useful.  It&#8217;s quick.  It might not be the most namespace-clean, but it does what I want, and it&#8217;s capable of some really great enterprise-class stuff if you take advantage of PHP5&#8217;s OOP features and know what you&#8217;re doing.  At work, we&#8217;ve done [...]]]></description>
			<content:encoded><![CDATA[<p>I think that PHP is a great language.  It&#8217;s useful.  It&#8217;s quick.  It might not be the most namespace-clean, but it does what I want, and it&#8217;s capable of some really great enterprise-class stuff if you take advantage of PHP5&#8217;s OOP features and know what you&#8217;re doing.  At work, we&#8217;ve done some great things with PHP5, and I&#8217;m looking forward to doing more great things.</p>
<p>There&#8217;s just one thing.  We are starting to do projects for more big clients and less small clients.  Small clients love PHP for its ease of deployment, it&#8217;s nearly universal ability to play well with others (example: porting our CMS framework from PostgreSQL to MySQL to meet <a href="http://www.coachella.com" target="_blank">Coachella&#8217;s</a> needs took about a day, and installing on their servers worked without a hitch).  Big clients, however, tend not to take PHP seriously.  There are a few reasons for this; not the least of which is that the reputation PHP as a whole has been ground into the dirt by PHP4 (which is a pretty weak language by today&#8217;s standards) and the fact that it is used everywhere by people of a wide variety of talent levels.  PHP5 adoption has been slow, and most people think of the nightmarish spaghetti of PHP4 when they hear &#8220;PHP&#8221; at all.</p>
<p>Anyway, to the point:  I feel that I really want to branch out into something else.  A nice, mainstream enterprise-class web platform.  Maybe even one that I didn&#8217;t write myself :-P.   I have experience with .NET, but I would not consider myself a guru like I would with PHP5.  I know Java like the back of my hand, but I have never really ventured in to J2EE.  I tried Rails a few times (I tried to like it.  I really did.) but always ended up rolling my eyes at something or other and going back to writing incredibly clever PHP code that trounced Rails in speed and resource usage.  But I feel like I&#8217;m a pretty damned good programmer, and I can achieve guru status in any language or platform I choose.  And I really ought to branch out, if only to keep me on my toes.</p>
<p>I&#8217;ve been looking at several different options.  I&#8217;m going to jot down my thoughts on some languages and their corresponding platform options, in no particular order.  I&#8217;m not going to touch PHP or Perl because I&#8217;m trying to branch out.  And perl sucks.</p>
<ul>
<li><strong>Java:</strong> <strong style="color: green">Pros:</strong>Great language.  Strong, familiar C-style syntax.  Sophisticated reflection API, generics/template classes, run-time classloading, decent exception handling.  A LOT of work has gone into making good implementations of the VM, with good success (in my opinion).  <strong style="color: red">Cons:</strong> JVM is slow to start up (irrelevant for a web application - JVM is always running).  JVM uses a lot of resources.  I don&#8217;t like the available platforms(see below&#8230;)
<ul>
<li><strong>J2EE:</strong>  This is THE web platform for Java.  And I hate it.  I&#8217;m sorry, but it&#8217;s crap.  It is so needlessly complicated and polluted with meaningless buzzwords and stupid diagrams for PHBs to admire.  A web application platform is <strong>not that complicated.</strong>  You don&#8217;t need to list out a hundred different &#8220;tiers&#8221; so you can throw in as many buzzwords as necessary.  Seriously, it&#8217;s worse than .NET in this department.  Unfortunately, I will probably end up using this one because it&#8217;s a de-facto standard.
			</li>
</ul>
</li>
<li>
		<strong>Ruby:</strong> <strong style="color: green">Pros:</strong> A well thought-out language.  I can see the attraction.  Very expressive and elegant.  Clean namespace.  Decent reflection. <strong style="color: red">Cons:</strong> I personally prefer C-style syntax (<em>def</em> this and <em>end</em> that kind of turns me off) but I could come to accept the lack of beautiful curly braces if I had to.  Implementation is <strong>sloooooow</strong>, but (hopefully) getting better.</p>
<ul>
<li>
<p><strong>Rails:</strong>  <em>It&#8217;s so <strong>hot</strong> right now!</em>  Seriously, there has never been a web-dev fad as pervasive as Rails.  Along with pastel gradients and rounded corners, Rails practically defines the &#8220;Web 2.0&#8243; movement.  Everywhere you look, it&#8217;s rails this and rails that.  How &#8216;Rails-like&#8217; can I make this?  How can I make this more like Rails?  What would Rails do?  Yes, everyone wants to be like rails. </p>
<p>Trouble is, nobody actually wants to <strong>use</strong> Rails, at least not for anything particularly important.  That&#8217;s because the current implementation of the ruby interpreter is so mind-bogglingly slow and borderline unstable.  Also, in my opinion, Rails does things a bit backwards - rather than creating code basically at run-time from the database structure, I think the code should be in charge of the database.  Call me crazy if you must.  Code is boss.</p>
</li>
</ul>
</li>
<li>
<p><strong>Python:</strong> <strong style="color: green">Pros:</strong> Expressive and graceful in much the same way as ruby, only more mature.  Very widespread, and very fast interpreters/compilers exist.  Easy to read by definition.   Good OOP features. <strong style="color: red">Cons:</strong> Once again, I prefer C-style syntax.  Scoping by indentation is pretty odd.</p>
<ul>
<li><strong>Pylons:</strong> Of all the platforms thus far, this is probably my favorite.  It&#8217;s simple.  It&#8217;s light.  It&#8217;s all the things I think a platform ought to be.  If I can love Python, this will be my choice.  I think.  It&#8217;s kind of like Rails, but fast.  It also has only what I need and leaves me to write my own active record scheme, which I like - because I am pretty picky about how my data modelling works and I&#8217;m <em>very</em> dissapointed in Ruby&#8217;s ActiveRecord, for example.
			</li>
<li><strong>Django:</strong>  Another Rails-ish framework for Python; a little more complete at the price of some bloat.  I really like how the schema comes from the code, and not the other way &#8217;round (like Rails).  They read my mind on this one; it&#8217;s precisely how the next iteration of our PHP platform works.  I might look into this one a bit more, but I am currently leaning more toward Pylons because it doesn&#8217;t try to push any pre-fab AJAX crap on me.  I like to do my own AJAX.  For that matter, I like to have as much to do with the inner workings as possible (that way the mistakes are mine and mine alone), and it&#8217;s very difficult for me to even <em>consider</em> Somebody Else&#8217;s Framework.  Django is just a bit too much.
			</li>
</ul>
</li>
<li>More to come?</li>
</ul>
<p>Disclaimer: These are my opinions only and are not necessarily those of my employer.  Also, if you have something to say about how much of an idiot I am for dissing your favorite platform, I really don&#8217;t care.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.duckwizard.com/2007/02/19/branching-out/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP: DOMDocument Performance</title>
		<link>http://www.duckwizard.com/2006/08/05/php-domdocument-performance/</link>
		<comments>http://www.duckwizard.com/2006/08/05/php-domdocument-performance/#comments</comments>
		<pubDate>Sat, 05 Aug 2006 23:08:00 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.duckwizard.com/2006/08/05/php-domdocument-performance/</guid>
		<description><![CDATA[At Pinacol, I&#8217;m writing a web site framework, which includes a templating engine.  Currently, for speed, the templates (in a manner similar to Wordpress) are simply PHP scripts that call various rendering functions embedded in the (X)HTML template.  This is great for speed, but I got to thinking that I would prefer separating [...]]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://www.pinacol.com">Pinacol</a>, I&#8217;m writing a web site framework, which includes a templating engine.  Currently, for speed, the templates (in a manner similar to Wordpress) are simply PHP scripts that call various rendering functions embedded in the (X)HTML template.  This is great for speed, but I got to thinking that I would prefer separating all PHP code from the presentation layer - meaning that templates would be far more abstract.  The obvious way to do this is to load templates as a DOMDocument, operating on special template tags which instruct the template engine on what content goes where - in a manner more like Movable Type than Wordpress.</p>
<p>I was pretty reluctant to do this, though, since XML performance in any language is notoriously bad.  So, I decided to run a few tests to see how much of a performance hit I would take by switching to DOMDocuments.</p>
<p>My first thought was that it might be possible to parse a template into a DOMDocument, and then serialize the object and cache it to save PHP the work of parsing the template in the future.  This turned out to be impossible; as DOMDocument is an internally implemented class, it can&#8217;t be serialized.  Bummer.</p>
<p>Next, I tested how slow it would be to create a DOMDocument rather than simply calling include() on the template file.  First, I timed how long it took to create a thousand DOMDocument objects and parse the template file into them.  Then, I timed how long it took to include() the template file a thousand times.  The results:</p>
<p>1,000 DOMDocuments:  0.47112607955933 sec<br />
1,000 include() calls:  0.21324110031128 sec</p>
<p>So it seems that DOMDocument is more than twice as slow.  While the cost of either operation is negligible, that 121% performance gain could mean the difference between life and death for a high-traffic site.  However, this preliminary test is not really all that conclusive - with database calls and suchlike being made, the only way to determine if using DOM templates  will really make a meaningful performance hit is to construct such a system and test its performance.  I suppose I should go all out with this - testing a variety of pre-existing template engines (such as <a href="http://smarty.php.net">Smarty</a>) and find a &#8220;sweet spot&#8221; of performance vs. elegance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.duckwizard.com/2006/08/05/php-domdocument-performance/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
