<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Thought Palace &#187; Uncategorized</title>
	<atom:link href="http://jens.mooseyard.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://jens.mooseyard.com</link>
	<description>Little boxes made of words, by Jens Alfke</description>
	<lastBuildDate>Tue, 09 Feb 2010 17:58:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Box2D</title>
		<link>http://jens.mooseyard.com/2007/11/box2d/</link>
		<comments>http://jens.mooseyard.com/2007/11/box2d/#comments</comments>
		<pubDate>Sun, 18 Nov 2007 23:52:30 +0000</pubDate>
		<dc:creator>jens</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[graphics]]></category>

		<guid isPermaLink="false">http://mooseyard.com/Jens/2007/11/box2d/</guid>
		<description><![CDATA[	Thanks to Steve Dekorte&#8217;s blog, I just ran across Box2D , an open-source 2D physics engine for games. In other words, it simulates the motion over time of convex polygons, taking into account inertia, gravity, collisions, friction, angular momentum, torque &#8212; all the things I once painstakingly learned in college and then completely forgot. Now they&#8217;ve suddenly become fascinating again, since Box2D does all the hard work. The app just has to describe the objects, then call Box2D in a loop to find out how their coordinates change over time.

	Box2D comes with some demos that are bare-bones graphically, but amazingly realistic in motion, including a swinging chain, a web of springs, and a pyramid of blocks that you can undermine and collapse:

A far more sophisticated usage of Box2D is in the indie game Crayon Physics Deluxe, &#8220;in which you get to experience what it would be like if your drawings would be magically transformed into real physical objects.&#8221; You must watch the amazing video on that site. (Then cry, because it&#8217;s only for Windows.)

	Speaking of Windows, the official Box2D package only builds on that platform, so far. But the core library is platform-independent C++, and the demos use OpenGL, so [...]]]></description>
			<content:encoded><![CDATA[	<p>Thanks to <a href="http://www.dekorte.com/blog/blog.cgi" title="">Steve Dekorte&#8217;s blog</a>, I just ran across <b><a href="http://www.box2d.org/" title="">Box2D</a> </b>, an open-source 2D physics engine for games. In other words, it simulates the motion over time of convex polygons, taking into account inertia, gravity, collisions, friction, angular momentum, torque &#8212; all the things I once painstakingly learned in college and then completely forgot. Now they&#8217;ve suddenly become fascinating again, since Box2D does all the <a href="http://www.chrishecker.com/Physics_References" title="">hard work</a>. The app just has to describe the objects, then call Box2D in a loop to find out how their coordinates change over time.</p>

	<p>Box2D comes with some demos that are bare-bones graphically, but amazingly realistic in motion, including a swinging chain, a web of springs, and a pyramid of blocks that you can undermine and collapse:<br />
<img src="http://mooseyard.com/projects/box2d/pyramid.png" width="500"/><br />
A far more sophisticated usage of Box2D is in the indie game <a href="http://www.kloonigames.com/crayon/" title="">Crayon Physics Deluxe</a>, &#8220;in which you get to experience what it would be like if your drawings would be magically transformed into real physical objects.&#8221; You <em>must watch the amazing video</em> on that site. (Then cry, because it&#8217;s only for Windows.)</p>

	<p>Speaking of Windows, the official Box2D package only builds on that platform, so far. But the core library is platform-independent C++, and the demos use OpenGL, so porting isn&#8217;t a big deal. Building on some work of some others who&#8217;d written makefiles, I put together an Xcode project. Now you can <a href="http://mooseyard.com/projects/box2d/Box2DTestBed.zip" title=""><strong>download the demo app</strong></a> if you want to play with it. If you want to experiment, you can copy the Box2D dylib itself out of the app bundle, or <a href="http://mooseyard.com/projects/box2d/Box2D_r49+MacXcodeSupport.patch" title="">download my patch</a> and apply it to revision 49 from the <a href="http://sourceforge.net/svn/?group_id=205387" title="">Subversion repository</a>.</p>

	<p>There&#8217;s a killer opportunity here to <strong>plug Box2D into Core Animation</strong>. Then you&#8217;d have the gorgeous high-speed compositing of the latter, coupled with far more sophisticated animation capabilities. (The animation functionality in CA is fully subclassable, so this should be straightforward to do.) I&#8217;ve been fooling around with Core Animation lately, and having a lot of fun making pretty pictures that slide around smoothly. I&#8217;ve never before felt the need for a game-physics engine, but the prospect of making my pretty pictures move with that kind of realism is suddenly very enticing!</p>
 ]]></content:encoded>
			<wfw:commentRss>http://jens.mooseyard.com/2007/11/box2d/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Apricot Jam Recipe</title>
		<link>http://jens.mooseyard.com/2007/07/apricot-jam-recipe/</link>
		<comments>http://jens.mooseyard.com/2007/07/apricot-jam-recipe/#comments</comments>
		<pubDate>Sun, 08 Jul 2007 06:37:25 +0000</pubDate>
		<dc:creator>jens</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apricots]]></category>
		<category><![CDATA[cooking]]></category>
		<category><![CDATA[fruit]]></category>
		<category><![CDATA[jam]]></category>
		<category><![CDATA[recipe]]></category>

		<guid isPermaLink="false">http://mooseyard.com/Jens/2007/07/apricot-jam-recipe/</guid>
		<description><![CDATA[	Here&#8217;s my family recipe for apricot jam, handed down through generations. One generation, really &#8212; my mom got it from a pamphlet put out by some local womens&#8217; group, after we moved to an old ramshackle house in the middle of a huge but disused apricot orchard. The trees were old, but a lot of them still produced fruit, and it was no trouble to walk around and collect bucketsful. So we needed some way to make use of all that fruit&#8230;

	This recipe is different from the usual one you find packed in a box of pectin, because, well, it doesn&#8217;t use pectin. Instead, you thicken the jam by cooking it a lot longer. This means it tastes less like fresh fruit; but it has a wonderful taste of its own, a bit like dried apricots, and a nice gloopy texture. As a bonus, putting an apricot kernel1 in every jar gradually adds an almond-y aroma2.


	The Pep Talk

	Making jam is much easier (and safer) than most people think. After all, 100 years ago everyone used to can food, unless they were millionaire financiers or nomadic tribesmen. If our primitive ancestors could do it, so can you! And jam is easier [...]]]></description>
			<content:encoded><![CDATA[	<p>Here&#8217;s my family recipe for apricot jam, handed down through generations. One generation, really &#8212; my mom got it from a pamphlet put out by some local womens&#8217; group, after we moved to an old ramshackle house in the middle of a huge but disused apricot orchard. The trees were old, but a lot of them still produced fruit, and it was no trouble to walk around and collect bucketsful. So we needed some way to make use of all that fruit&#8230;</p>

	<p>This recipe is different from the usual one you find packed in a box of pectin, because, well, it doesn&#8217;t use pectin. Instead, you thicken the jam by cooking it a lot longer. This means it tastes less like fresh fruit; but it has a wonderful taste of its own, a bit like dried apricots, and a nice gloopy texture. As a bonus, putting an apricot kernel<sup>1</sup> in every jar gradually adds an almond-y aroma<sup>2</sup>.<br />
<span id="more-221"></span></p>

	<p><h3>The Pep Talk</h3></p>

	<p>Making jam is much easier (and safer) than most people think. After all, 100 years ago everyone used to can food, unless they were millionaire financiers or nomadic tribesmen. If our primitive ancestors could do it, so can you! And jam is easier than canning vegetables because the acidity of the fruit inhibits microorganisms, so you don&#8217;t have to be paranoid about sterilizing everything.</p>

	<p>Jamming basically boils down [sorry] to mixing the fruit with <i>lots</i> of sugar and some lemon juice, cooking it, and pouring it into clean canning jars. The heat of the boiling jam helps sterilize the jar, and turning it upside down at first gets the lid too. As the air at the top cools, it shrinks and forms a partial vacuum that holds the lid on tightly to maintain the seal.</p>

	<p>The jam keeps for years, although unless you make a lot of it, you&#8217;ll run out long before then. We&#8217;ve eaten three-year-old jam that still tasted great. A very few jars go bad &#8212; maybe one in 20 &#8212; and a bad jar is pretty obvious because it&#8217;s either lost its seal or has mold on top, so you just throw it away and get another one.</p>

	<p>It takes only about an hour of active time, it will make your house smell amazing, and you&#8217;ll end up with yummy jam and syrup that you can enjoy for years. Do it!</p>

	<p>But: <strong>Read The Directions All The Way Through First.</strong> Some of the details are important.</p>

	<p><h3>Requirements</h3></p>

	<p>You&#8217;ll need to buy:</p>

	<ul>
		<li>Apricots, duh. Firm and slightly under-ripe if possible. (As a rough estimate, it takes about 1 1/2 cups of cut-up apricots to make an 8 oz jar of jam.)</li>
		<li>Lots of sugar. Get one of those big sacks. Don&#8217;t skimp on sugar or the jam won&#8217;t turn out right. NutraSweet&#8482; is <em>right out</em>.</li>
		<li>Several lemons.</li>
		<li>8oz canning jars, usually made by Ball or Mason. Most supermarkets have them, usually in the baking aisle. Make sure the jars come with the screw-on rings that hold the lids on.</li>
		<li>Jar lids. These are usually sold separately because, unlike the jars, they&#8217;re not re-usable. Make sure they&#8217;re the right diameter for your jars.</li>
	</ul>

	<p>Your kitchen needs to have:</p>

	<ul>
		<li>A big <em>non-aluminum</em><sup>3</sup> cooking pot.</li>
		<li>A big stirring spoon, ideally wood.</li>
		<li>A ladle.</li>
		<li>Optional: A quart-size jar or sealable plastic container (for the syrup).</li>
		<li>Optional: a hammer (to extract the kernels).</li>
	</ul>

	<p><h3>Preparing The Fruit</h3></p>

	<p>Cut the apricots in half and put them in a large <i>non-aluminum</i> cooking pot. Set aside the pits for later. For each cup of apricots, add 3/4 cup sugar and 1 1/2 tsp lemon juice.</p>

	<p>Let the mixture stand at least two hours, and watch as the magic force of osmosis sucks the water out of the apricots, dissolving them and the sugar into yummy goo.</p>

	<p><h3>Cooking</h3></p>

	<p>Now put the pot on the stove and bring the goo to a boil over high heat. At first you&#8217;ll just need to stir occasionally to keep it from scorching, then as it comes to a boil you&#8217;ll need to stir continuously. Once it&#8217;s at a steady boil, set a timer for 25 minutes and keep stirring&#8230;</p>

	<p>When it first starts boiling, it&#8217;s going to produce lots and lots of pale orange foam, which you&#8217;re going to have to skim off with a ladle to keep the pot from overflowing. When I was a kid, we serendipitously discovered that, if you put the foam in a quart jar and let it settle, it turns into apricot syrup. Do this!! The syrup is awesome on pancakes or ice cream. Keep it in the fridge.</p>

	<p>The foaming will stop, I promise, even though you&#8217;ll feel like the Sorcerer&#8217;s Apprentice for a few minutes. Then just keep stirring, stirring, stirring&#8230;</p>

	<p>When the timer goes off, take a look at the mixture. If it still seems liquidy, let it boil another five minutes (but no more). The goal is to have reduced the volume by about half, and for what&#8217;s left to be fairly thick; sort of like <em>boiling jam</em>. When it&#8217;s ready, turn off the heat.</p>

	<p><h3>Flashback: Preparing The Jars</h3></p>

	<p>You will have first prepared<sup>4</sup> a bunch of canning jars. The jars will have just gone through the dishwasher (even if they&#8217;re new). The lids will have been soaking in a bowl with boiling water poured over them. The rings will have been just sitting around.</p>

	<p>(If you <i>didn&#8217;t</i> first prepare this stuff, while the apricots were dissolving in sugar, you&#8217;re in trouble now. Serves you right for not reading the recipe through! All you can do is let the jam cool a bit, pour it into any clean containers you have around, and put it in the fridge. You&#8217;ll have to eat it all in a few weeks. Get friends to help.)</p>

	<p>As an optional but recommended bonus: Extract enough kernels from the pits so you have one intact kernel per jar. To do this, get a hammer and put the pit on a clean cloth on a <em>very</em> hard surface like the sidewalk. Whack the pit with the hammer, hard enough to crack it open but not hard enough to mush the kernel inside, which looks like a little almond. This takes a bit of practice, so it&#8217;s a good thing you have dozens of pits.<br />
<h3>Filling The Jars</h3><p>Now fill each jar as follows: Take it out of the dishwasher, turn it right-side-up <em>(very important!)</em>, drop in an apricot kernel, and ladle jam into it up to about 1/4&#8221; below the rim. Try not to get jam on the rim<sup>5</sup>. (The right amount of airspace is important for getting the jar to seal.) Put a lid on top<sup>6</sup>, then screw a ring over it tightly. Turn the jar upside-down (very important!) Go on to the next jar. Repeat till you run out of jam.</p>

	<p>You&#8217;ll probably end up with a half-full jar at the end. This won&#8217;t seal properly, so keep it in the fridge. Or if you run out of jars first, you can put the remaining jam into any other closeable containers you have around, and put them in the fridge. Either way, the refrigerated jam will keep for a few weeks.</p>

	<p>When the last jar is filled and flipped over, set a timer for 5 minutes. When it bleeps, flip all of the jars back upright and let them stand for a little while. You should soon hear a little metallic &#8220;ping!&#8221; sound as each jar seals shut &#8212; the cooling air shrinks and forms a partial vacuum that pulls the lid tight and makes it flip from convex to concave.</p>

	<p>If any jars haven&#8217;t popped shut by themselves in 15 minutes, they&#8217;re not properly sealed, so put them in the fridge and eat the jam soon.</p>

	<p>Tighten the sealed jars&#8217; rings some more, and label them with the type of jam and the approximate date. In a reasonably cool place (basements are good) they&#8217;ll keep for at least 2 years.</p>

	<p>(Before you open a jar for the first time, press on the lid to make sure it&#8217;s still sealed. If you can pop the lid down, or if you can pull it off without a fair amount of force, it&#8217;s lost its seal and you should throw the jam away. But this happens really rarely.)</p></p>

	<p><h3>Notes</h3></p>

	<p>[1] As a child, I knew that apricot kernels were full of deadly cyanide, and felt sort of nervous about using them in the jam. (But not too nervous to eat it.) It turns out, though, that the concentration is really pretty minimal.</p>

	<p>[2] I am told that almond extract is often made from apricot pits, and that marzipan sometimes is too.</p>

	<p>[3] The acid in the fruit would react with the aluminum, giving the jam a nasty metallic taste.</p>

	<p>[4] I&#8217;ve always wanted to write that!</p>

	<p>[5] A canning funnel, which is a squat wide-mouthed funnel, is helpful here. Your better cooking-supply stores, like Williams-Sonoma, should carry them.</p>

	<p>[6] Don&#8217;t forget that the water the lids are in is still hot! Tongs are one way to get them out. Even better, we have a nifty magnetic-tipped wand we got from Ball a few years ago.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://jens.mooseyard.com/2007/07/apricot-jam-recipe/feed/</wfw:commentRss>
		<slash:comments>141</slash:comments>
		</item>
		<item>
		<title>May I Nominate Mary Bono For “Jackass Of The Week”?</title>
		<link>http://jens.mooseyard.com/2007/03/may-i-nominate-mary-bono-for-%e2%80%9cjackass-of-the-week%e2%80%9d/</link>
		<comments>http://jens.mooseyard.com/2007/03/may-i-nominate-mary-bono-for-%e2%80%9cjackass-of-the-week%e2%80%9d/#comments</comments>
		<pubDate>Fri, 02 Mar 2007 18:27:42 +0000</pubDate>
		<dc:creator>jens</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mooseyard.com/Jens/2007/03/may-i-nominate-mary-bono-for-%e2%80%9cjackass-of-the-week%e2%80%9d/</guid>
		<description><![CDATA[	Daring Fireball has an occasional feature called &#8220;Jackass Of The Week&#8221; that highlights exceptionally stupid or misleading public statements made about Apple. Lately it seems like &#8220;analyst&#8221; Rob Enderle has established a lifetime lock on the award, but on the off chance it&#8217;s still in play, I&#8217;d like to nominate Rep. Mary Bono (R, CA) based on &#8220;her rhetorical questions to Tim Berners-Lee (!) at a Congressional hearing yesterday&#8221;:http://www.macworld.com/news/2007/03/01/bernerslee/index.php :

	Bono questioned if [removing DRM] would prevent mass stealing of copyright materials. &#8220;Is that not the equivalent of having a speed limit but not enforcing the speed limit?&#8221; she asked.

	We do have a speed limit that&#8217;s not generally enforced. How often do you see a Highway Patrol car? How often do you see someone get pulled over? Based on my commute, my answers are &#8220;maybe once a week&#8221; and &#8220;maybe once a month&#8221;. And yet the highways of Silicon Valley have not devolved into &#8220;Mad Max&#8221; or &#8220;Death Race 2000&#8221;. Most people speed a little bit (don&#8217;t tell anyone, but I usually drive 70 instead of 65, and sometimes I kick it up to 73 when Underworld or Led Zeppelin come up on my iPod.)

	Some people drive much too fast, or [...]]]></description>
			<content:encoded><![CDATA[	<p><a href="http://daringfireball.net" title="">Daring Fireball</a> has an occasional feature called &#8220;Jackass Of The Week&#8221; that highlights exceptionally stupid or misleading public statements made about Apple. Lately it seems like &#8220;analyst&#8221; Rob Enderle has <a href="http://daringfireball.net/2007/01/enderle_leg_pulling" title="">established a lifetime lock on the award</a>, but on the off chance it&#8217;s still in play, I&#8217;d like to nominate Rep. <a href="http://bono.house.gov/" title="">Mary Bono</a> (R, CA) based on &#8220;her rhetorical questions to Tim Berners-Lee (!) at a Congressional hearing yesterday&#8221;:http://www.macworld.com/news/2007/03/01/bernerslee/index.php :</p>

	<blockquote>Bono questioned if [removing <span class="caps">DRM</span>] would prevent mass stealing of copyright materials. &#8220;Is that not the equivalent of having a speed limit but not enforcing the speed limit?&#8221; she asked.</blockquote>

	<p>We <em>do</em> have a speed limit that&#8217;s not generally enforced. How often do you see a Highway Patrol car? How often do you see someone get pulled over? Based on my commute, my answers are &#8220;maybe once a week&#8221; and &#8220;maybe once a month&#8221;. And yet the highways of Silicon Valley have not devolved into &#8220;Mad Max&#8221; or &#8220;Death Race 2000&#8221;. Most people speed a little bit (don&#8217;t tell anyone, but I usually drive 70 instead of 65, and sometimes I kick it up to 73 when Underworld or Led Zeppelin come up on my iPod.)</p>

	<p>Some people drive much too fast, or recklessly, and cause accidents. But putting enough police cars on the road to arrest everyone driving over 65 would be hideously expensive and cause chaos; while installing tamper-proof governors on all engines to enforce speed limits is the kind of silliness used only in satirical SF stories.</p>

	<p>But it gets better!</p>

	<blockquote>Bono said strong protections for digital content are needed. &#8220;With great respect to Steve Jobs, he&#8217;s trying to sell hardware, first and foremost,&#8221; she said. &#8220;I wonder if he would feel the same way about his patents being on the Internet free of patent protection.&#8221;</blockquote>

	<p>Earth to Ms. Bono: Apple&#8217;s patents <em>are</em> available free on the Internet. The Federal government <em>requires</em> that they be made available. Like <a href="http://www.patentreader.com/pdf?num=7166791" title="">this one</a> [PDF] covering the user interface of the iPod. Anyone can read these patents. Anyone can use them to figure out the workings of a patented device, and use them as the basis of their own research on improved devices, and even patent and sell their own sufficiently-novel improvements. That is the <em>whole point</em> of patent law: to keep inventors from hiding their ideas, and to encourage creativity and innovation by letting inventors freely build on the ideas of other inventors. Doesn&#8217;t that sound nice?</p>

	<h2>Speaking of patents, Ms. Bono&#8230;</h2>

	<p>Let&#8217;s compare &#038; contrast what patents provide:</p>

	<ol>
		<li>Limited term of monopoly (is it still 17 years?)</li>
			<li>Guaranteed public access to the details of the invention</li>
			<li>Inventors are free to reverse-engineer, examine, and improve on the invention</li>
			<li>Inventors who come up with sufficiently novel improvements can freely patent them and sell products based on them, without obligation to the original patent holder</li>
	</ol>

	<p>&#8230;with the mess <em>copyrights</em> are in:</p>

	<ol>
		<li>Effectively infinite term of monopoly (currently about 90 years, and Congress has made it clear that it will be extended whenever necessary to, literally, prevent Mickey Mouse&#8217;s early works from falling into the public domain.)</li>
			<li>Copyright holders are allowed and encouraged by the <span class="caps">DMCA</span> to prevent public access by means of copy-protection</li>
			<li>The <span class="caps">DMCA</span> explicitly makes reverse-engineering of copy-protection a crime.</li>
			<li>Copyright law requires permission to make a subsequent so-called &#8220;derivative work&#8221; that&#8217;s based in any way on any piece of the original.</li>
	</ol>

	<p>Mary Bono is, of course, better known as the widow of Rep. Sonny Bono (R-CA), who was himself known for such innovations as &#8220;I Got You, Babe&#8221; and his later legislative efforts (unrelated, I&#8217;m sure) to extend copyright terms to infinity-on-the-installment-plan. As the current copyright holder of that 40-year-old song, she benefits financially whenever it&#8217;s played on the radio, used in a commercial, bought on a CD, downloaded from iTunes, shown in a movie like &#8220;Groundhog Day&#8221;, played on the muzak at an Old Navy store, covered &#8220;ironically&#8221; by a punk band, sold as sheet music to a beginning pianist, &#8230;</p>

	<h2>Reducto ad absurdum</h2>

	<p>Let&#8217;s imagine if this state of affairs applied to a 40-year-old <em>patented</em> invention. I&#8217;m lazy so I&#8217;m going to make one up: let&#8217;s say that Burroughs had patented <a href="http://en.wikipedia.org/wiki/Virtual_memory#History" title="">virtual memory</a> in 1966. (This is untrue. You couldn&#8217;t even patent software algorithms back then. But work with me on this.)</p>

	<p>This temporary monopoly might have been enough to pull Burroughs ahead, out of its distant-second position relative to <span class="caps">IBM</span>, as time progressed and demands on computer power and memory increased. Burroughs&#8217; computers would have been more desirable, and other vendors like <span class="caps">IBM</span> and <span class="caps">DEC</span> would have had to pay hefty licensing fees to Burroughs to use VM in their own operating systems.</p>

	<p>&#8230;but this would have come to an end in 1983, just in time for the rapidly evolving personal computers to start freely making use of virtual memory (actually it took until about 1990 for both Windows and the Mac OS to introduce it.) So let&#8217;s imagine that, thanks to the (fictitious) tireless legislative efforts of former Burroughs computer scientists turned Congressmen, patent law were like copyright law. (In fact this would make it a lot like trade-secret law, as far as I can tell.)</p>

	<p>So where would we be today? Burroughs would <em>still</em> have monopoly ownership of the concept of virtual memory. It would likely be a major player in the computer industry to this day, especially since any other manufacturer who wanted to use VM would have to pay Burroughs a royalty. (Or Burroughs might have shriveled up into a patent troll, a parasite existing on the royalty payments from real computer companies.) This would naturally increase the cost of computers. No open source project, like Linux or <span class="caps">BSD</span>, would be able to use virtual memory, since there&#8217;d be no moneyed entity to pay the royalties.</p>

	<p>Even more interesting: the algorithms behind virtual memory would be a black art. Reverse engineering a Burroughs or Burroughs-licensed VM subsystem would be illegal. Virtual memory couldn&#8217;t be described in textbooks or taught in university classes. No one could research virtual memory, or describe or implement improved versions of it, without permission from Burroughs.</p>

	<p>(This probably means that virtual memory wouldn&#8217;t be nearly as advanced as it is in the real world, where most of its implementations have been freely inspectable and modifiable since the early days of Berkeley Unix in the &#8216;70s. It&#8217;s a simple idea, but implementations become rather complex in search of greater efficiency, and there are all kinds of interesting extensions like compressed backing stores (a la <span class="caps">RAM</span>Doubler) and memory-mapped files.)</p>

	<p>There might be underground hacks that patched feeble microcomputer OSs to add virtual memory support. These hacks would have to be disseminated through pirate channels, and Burroughs&#8217; lawyers would be busy sending cease-and-desist letters to anyone publishing or distributing such software or allowing it to be stored on their servers. They&#8217;d probably even start going after ordinary computer users who downloaded the virtual-memory software and installed it on their computers.</p>

	<p>Does this ugly scenario sound familiar?</p>
 ]]></content:encoded>
			<wfw:commentRss>http://jens.mooseyard.com/2007/03/may-i-nominate-mary-bono-for-%e2%80%9cjackass-of-the-week%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>In Which I Think About Java Again, But Only For A Moment</title>
		<link>http://jens.mooseyard.com/2007/01/in-which-i-think-about-java-again-but-only-for-a-moment/</link>
		<comments>http://jens.mooseyard.com/2007/01/in-which-i-think-about-java-again-but-only-for-a-moment/#comments</comments>
		<pubDate>Sun, 21 Jan 2007 18:05:49 +0000</pubDate>
		<dc:creator>jens</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mooseyard.com/Jens/2007/01/in-which-i-think-about-java-again-but-only-for-a-moment/</guid>
		<description><![CDATA[	It&#8217;s amusing how Steve Jobs&#8217; remarks disparaging the idea of Java on the iPhone have ignited controversy. His point was, obviously, that the iPhone&#8217;s browser won&#8217;t support Java applets; which is a no-brainer because applets were killed dead-dead-dead by Flash and Ajax. But this seems to have riled up everyone who still cares about non-server-based Java, leading to the weird situation of seeing &#8220;Java&#8221; and &#8220;Mac&#8221; in the same sentence again*. Apparently some people still cling to the glorious dream of writing cross-platform GUI applications, waving tattered &#8220;Write Once Run Anywhere!&#8221; banners and clutching &#8216;Little&#8217; Red Books with Duke&#8217;s picture on the front.

	Flashback

	Me, I defected long ago. I&#8217;m another of those Apple Java engineers who dropped out. I spent five years as a raving Java fanboy, but I gave up after optimizing AWT, implementing drag and drop, and trying to make 1,200 pages of crappy APIs do the right thing on the Mac. Then I took a one-week Cocoa training course, and wrote the first prototype of iChat.

	Desktop Java never worked because Sun tried to build their own OS on top of the real OS, duplicating every API and feature. This led to terrible bloat, making every app as heavyweight [...]]]></description>
			<content:encoded><![CDATA[	<p>It&#8217;s amusing how Steve Jobs&#8217; remarks disparaging the idea of Java on the iPhone have ignited controversy. His point was, obviously, that the iPhone&#8217;s browser won&#8217;t support Java applets; which is a no-brainer because applets were killed dead-dead-dead by Flash and Ajax. But this seems to have riled up everyone who still cares about non-server-based Java, leading to the weird situation of seeing &#8220;Java&#8221; and &#8220;Mac&#8221; in the same sentence again*. Apparently some people still cling to the glorious dream of writing cross-platform <span class="caps">GUI</span> applications, waving tattered &#8220;Write Once Run Anywhere!&#8221; banners and clutching &#8216;Little&#8217; Red Books with Duke&#8217;s picture on the front.</p>

	<p><h3>Flashback</h3></p>

	<p>Me, I defected long ago. I&#8217;m another of those Apple Java engineers who dropped out. I spent five years as a raving Java fanboy, but I gave up after optimizing <span class="caps">AWT</span>, implementing drag and drop, and trying to make 1,200 pages of crappy APIs do the right thing on the Mac. Then I took a one-week Cocoa training course, and wrote the first prototype of iChat.</p>

	<p>Desktop Java never worked because Sun tried to build their own OS on top of the real OS, duplicating every <span class="caps">API</span> and feature. This led to terrible bloat, making every app as heavyweight to launch as Photoshop. Worse, the <span class="caps">GUI</span> portions of the Java platform are awful, because Sun is a server company with no core competency at GUIs. The APIs are too clumsy to code to, and compared to any decent Mac app, the results look like a Soviet tractor built on a Monday.</p>

	<p><h3>Why Cocoa Pwnx0rz</h3></p>

	<p>That Cocoa training class was, as I&#8217;ve said before, one of the biggest eye-openers of my career. It was so damn easy to build beautiful, functional applications that I walked out feeling like I&#8217;d climbed into some giant mecha robot and could now lift huge girders with a wave of my pinky.</p>

	<p>Three important things you need to be able to make apps with great human interfaces:<br />
<ol><li> You need to lay out the user interface components visually, by hand, with total control over where they go. Automated LayoutManagers don&#8217;t cut it. A corollary of this is that you can&#8217;t move a UI layout from one platform to another and have the computer make everything fit. Computers don&#8217;t lay out interfaces by themselves any better than they can translate French to English by themselves.<br />
</li><li> You need to be able to change the UI around really easily during development &#8212; after user testing, or a Steve Jobs encounter session &#8212; even after you&#8217;ve attached a lot of code to it. That means no <span class="caps">RAD</span> tools that write code for you, because once their code mingles with your code, it gets hard to disentangle. Instead, the UI should be described with data, like an Interface Builder &#8220;.nib&#8221; file.<br />
</li><li> Changing the UI around also requires being able to change your own UI code easily. As the Ruby and Agile Programming zealots always point out, strict type checking can really get in the way of this. Writing endless Listeners and Adapters and inner classes was one of my least favorite parts of Java programming. Objective-C and AppKit have a good approach, letting you use type-checking where it&#8217;s important but leaving looser connections at the UI level so you can plug and re-plug connections easily.</li></ol></p>

	<p><h3>My Theory</h3></p>

	<p>My theory is that Java desktop apps succeed only in niches where UI design and usability don&#8217;t matter: development tools and enterprise software. Programmers expect things to be crude and complicated: anyone who&#8217;ll voluntarily use &#8216;vi&#8217; in the 21st century will put up with anything**. And the poor users of enterprise software don&#8217;t have a choice: they have to run the damn app no matter how awful it is, because it was selected by an <span class="caps">MIS</span> department that could care less about usability.</p>

	<p><h4>Footnotes</h4></p>

	<ul>
		<li>Not that this controversy has anything to do with the Mac. The iPhone is not a Mac, the Mac still runs Java, and no one is talking about taking it away.</li>
	</ul>

	<p>** And that goes for &#8216;emacs&#8217; too (with apologies to my boss). I thought emacs was really cool, in 1986. That&#8217;s when it was really cool to have a <span class="caps">DEC VT220</span> terminal in my dorm room with a 9600 baud connection to a <span class="caps">VAX</span> running <span class="caps">BSD 4</span>.3. Also, I listened to Depeche Mode.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://jens.mooseyard.com/2007/01/in-which-i-think-about-java-again-but-only-for-a-moment/feed/</wfw:commentRss>
		<slash:comments>77</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->