<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Birdman's land</title><link>http://blogs.acceleration.net/birdman/</link><description>Home of the Unwashed Meme.</description><managingEditor>Nathan Bird</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Nathan Bird</dc:creator><title>NCONC woo!</title><link>http://blogs.acceleration.net/birdman/archive/2006/04/28/2867.aspx</link><pubDate>Fri, 28 Apr 2006 17:11:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2006/04/28/2867.aspx</guid><description>&lt;p&gt;&lt;img src="http://birdman.acceleration.net/geico-nconc.jpg" /&gt;&lt;/p&gt;


&lt;p&gt;slme-profile-package had shown that practically all of the running time was spent in one function that did a lot of list building, and that this function was consing a LOT of memory. I tried to change the &lt;a href="file:///L:/hyperspec/HyperSpec/Body/f_append.htm"&gt;append&lt;/a&gt;s to &lt;a href="file:///L:/hyperspec/HyperSpec/Body/f_nconc.htm#nconc"&gt;nconc&lt;/a&gt;s, and after a bit of fiddling the profiling reported that the function was only consing about half as much memory as before. The program also runs a nice bit faster.&lt;/p&gt;

&lt;p&gt;The problem I had to fix was that I had some list literals in code, that nconc--true to its nature-- was destructively modifying. When recreating a minimal case here SBCL is nice enough to warn me about it, but I don't recall seeing this when originally solving the problem. There was a lot of other code inbetween that may have been breaking its inferencing though. Another thing to notice is sbcl decided that the length of a constant list was constant=3, except in this case the list isn't as constant as it appears to be. :-)&lt;/p&gt;

&lt;pre&gt;
CL-USER&amp;gt; (defun foo (a)
	   (let ((b '(1 2 3)))
	     (values (length b)
		     (nconc  b a))))

; in: LAMBDA NIL
;     (NCONC B A)
; 
; caught WARNING:
;   Destructive function NCONC called on constant data.
;   See also:
;     The ANSI Standard, Special Operator QUOTE
;     The ANSI Standard, Section 3.2.2.3
; 
; compilation unit finished
;   caught 1 WARNING condition
STYLE-WARNING: redefining FOO in DEFUN
FOO
CL-USER&amp;gt; (foo '(bam baz))
3
(1 2 3 BAM BAZ)
CL-USER&amp;gt; (foo '(bam baz))
3
(1 2 3 BAM BAZ BAM BAZ)
CL-USER&amp;gt; (foo '(bam baz bad))
3
(1 2 3 BAM BAZ BAM BAZ BAM BAZ BAD)
CL-USER&amp;gt; (defun foo (a)
  (let ((b (list 1 2 3)))
    (values (length b)
	    (nconc  b a))))

STYLE-WARNING: redefining FOO in DEFUN
FOO
CL-USER&amp;gt; (foo '(bam baz bad))
3
(1 2 3 BAM BAZ BAD)
CL-USER&amp;gt; (foo '(bam baz bad))
3
(1 2 3 BAM BAZ BAD)

&lt;/pre&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/2867.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p><img src="http://birdman.acceleration.net/geico-nconc.jpg" /></p>


<p>slme-profile-package had shown that practically all of the running time was spent in one function that did a lot of list building, and that this function was consing a LOT of memory. I tried to change the <a href="file:///L:/hyperspec/HyperSpec/Body/f_append.htm">append</a>s to <a href="file:///L:/hyperspec/HyperSpec/Body/f_nconc.htm#nconc">nconc</a>s, and after a bit of fiddling the profiling reported that the function was only consing about half as much memory as before. The program also runs a nice bit faster.</p>

<p>The problem I had to fix was that I had some list literals in code, that nconc--true to its nature-- was destructively modifying. When recreating a minimal case here SBCL is nice enough to warn me about it, but I don't recall seeing this when originally solving the problem. There was a lot of other code inbetween that may have been breaking its inferencing though. Another thing to notice is sbcl decided that the length of a constant list was constant=3, except in this case the list isn't as constant as it appears to be. :-)</p>

<pre>
CL-USER&gt; (defun foo (a)
	   (let ((b '(1 2 3)))
	     (values (length b)
		     (nconc  b a))))

; in: LAMBDA NIL
;     (NCONC B A)
; 
; caught WARNING:
;   Destructive function NCONC called on constant data.
;   See also:
;     The ANSI Standard, Special Operator QUOTE
;     The ANSI Standard, Section 3.2.2.3
; 
; compilation unit finished
;   caught 1 WARNING condition
STYLE-WARNING: redefining FOO in DEFUN
FOO
CL-USER&gt; (foo '(bam baz))
3
(1 2 3 BAM BAZ)
CL-USER&gt; (foo '(bam baz))
3
(1 2 3 BAM BAZ BAM BAZ)
CL-USER&gt; (foo '(bam baz bad))
3
(1 2 3 BAM BAZ BAM BAZ BAM BAZ BAD)
CL-USER&gt; (defun foo (a)
  (let ((b (list 1 2 3)))
    (values (length b)
	    (nconc  b a))))

STYLE-WARNING: redefining FOO in DEFUN
FOO
CL-USER&gt; (foo '(bam baz bad))
3
(1 2 3 BAM BAZ BAD)
CL-USER&gt; (foo '(bam baz bad))
3
(1 2 3 BAM BAZ BAD)

</pre><img src ="http://blogs.acceleration.net/birdman/aggbug/2867.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>The Free Book</title><link>http://blogs.acceleration.net/birdman/archive/2006/01/15/2815.aspx</link><pubDate>Sun, 15 Jan 2006 16:37:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2006/01/15/2815.aspx</guid><description>As a collectable card:
&lt;p /&gt;

&lt;table style="font-family:arial; border:1px solid black; padding: 5px 20px 5px 8px;"&gt;
&lt;tr&gt;
&lt;td&gt;
 &lt;span style="float:left; font-weight:bold; font-size: larger;"&gt;The Free Textbook&lt;/span&gt; &lt;span style="float:right;"&gt;Req. A webserver&lt;/span&gt;
 &lt;br /&gt;
&lt;br /&gt;
  &lt;a href="http://www.powells.com/biblio?PID=24750&amp;amp;cgi=product&amp;amp;isbn=0132769409"&gt;&lt;img src="http://www.powells.com/cgi-bin/imageDB.cgi?isbn=0132769409" /&gt;&lt;/a&gt;
  &lt;br /&gt;
  Provides:
&lt;ul&gt;&lt;li&gt;+1 Charisma&lt;/li&gt;&lt;/ul&gt;

  When played on a Professor increases the&lt;br /&gt;
   professor's charisma. If the professor is one&lt;br /&gt;
   of the authors then the effect is +3. This &lt;br /&gt;
Free Textbooks still count towards the course's &lt;br /&gt;
"Too many textbook" penalty.
&lt;br /&gt;                                      
&lt;br /&gt;                                      
  &lt;span style="font-style:italic;"&gt;"I Don't have to pay an extra 100 bucks?!"&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/2815.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml">As a collectable card:
<p />

<table style="font-family:arial; border:1px solid black; padding: 5px 20px 5px 8px;">
<tr>
<td>
 <span style="float:left; font-weight:bold; font-size: larger;">The Free Textbook</span> <span style="float:right;">Req. A webserver</span>
 <br />
<br />
  <a href="http://www.powells.com/biblio?PID=24750&amp;cgi=product&amp;isbn=0132769409"><img src="http://www.powells.com/cgi-bin/imageDB.cgi?isbn=0132769409" /></a>
  <br />
  Provides:
<ul><li>+1 Charisma</li></ul>

  When played on a Professor increases the<br />
   professor's charisma. If the professor is one<br />
   of the authors then the effect is +3. This <br />
Free Textbooks still count towards the course's <br />
"Too many textbook" penalty.
<br />                                      
<br />                                      
  <span style="font-style:italic;">"I Don't have to pay an extra 100 bucks?!"</span>
</td>
</tr>
</table>

<img src ="http://blogs.acceleration.net/birdman/aggbug/2815.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Common Lisp and SQL</title><link>http://blogs.acceleration.net/birdman/archive/2005/10/17/2795.aspx</link><pubDate>Mon, 17 Oct 2005 19:00:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/10/17/2795.aspx</guid><description>&lt;p&gt;I like Lisp, to the point of being accused of "having drunk the koolaid."  I read a good number of lisp &lt;a href="http://planet.lisp.org"&gt;weblogs&lt;/a&gt; (I'm lazy about linking right now). I lurk on &lt;a href="http://www.cliki.net/IRC"&gt;#lisp&lt;/a&gt; all day long, although a good deal goes by unread I like following the links. &lt;/p&gt;

&lt;p&gt;At work I've been trying to get a lisp and &lt;a href="http://common-lisp.net/project/ucw/"&gt;UCW&lt;/a&gt; setup going. However, one of the key components to making htis happen is to be able to reliably talk to a SQL database. Right now we are a predominantly Microsoft shop so charting a path from our current environment to a lisp one is somewhat tricky.&lt;/p&gt;

&lt;p&gt;My experience has been less than good. I have tried a number of different setups and found very few combinations that work. I haven't gotten into what  I would consider weird database stuff. Just basic tables, selects and inserts. My unicode test string is: "Iñtërnâtiônàlizætiøn"&lt;/p&gt;

The software:
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.cliki.net/SBCL"&gt;SBCL 0.9.5 &lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.cliki.net/CLSQL"&gt;CLSQL 3.3.0&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.cliki.net/uffi"&gt;UFFI 1.5.4&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://franz.com/"&gt;ACL 7&lt;/a&gt; enterprise trial with all updates&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.postgresql.org/"&gt;Postgresql 8&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.microsoft.com/sql/default.mspx"&gt;SQL Server 2000&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.freetds.org/"&gt;Freetds 0.63&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.unixodbc.org/"&gt;unixODBC 2.2.11&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;table border="1"&gt;
	&lt;tr&gt;
		&lt;th&gt;Attempted setup&lt;/th&gt;
		&lt;th&gt;Does it work?&lt;/th&gt;
		&lt;th&gt;Error&lt;/th&gt;
		&lt;th&gt;Unicode string&lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;SBCL -&amp;gt; Postgresql-socket -&amp;gt; postgres&lt;/td&gt;
		&lt;td&gt;No - Doesn't connect&lt;/td&gt;
		&lt;td&gt;
Illegal :ASCII character starting at byte position 0.
   [Condition of type SB-IMPL::MALFORMED-ASCII]
the specific byte positions varies, normally in the first 4 but i've seen it accross the first 7 or 8.&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;SBCL -&amp;gt; UFFI -&amp;gt; PostgreSQL library -&amp;gt; postgres &lt;/td&gt;
		&lt;td&gt;YES!&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
		&lt;td&gt;Iñtërnâtiônàlizætiøn&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;SBCL -&amp;gt; UFFI -&amp;gt; UnixODBC -&amp;gt; FreeTDS -&amp;gt; MS SQL Server&lt;/td&gt;
		&lt;td&gt;'Bit' datatype doesn't work.&lt;/td&gt;
		&lt;td&gt;
The value
#&amp;lt;SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X082A6A50 :TYPE (* (SB-ALIEN:SIGNED 8))&amp;gt;
is not of type (SB-ALIEN:ALIEN (* (SB-ALIEN:UNSIGNED 8))).
[Condition of type TYPE-ERROR]
&lt;br /&gt;
&lt;br /&gt;&lt;i&gt;I didn't know true could be negative&lt;/i&gt;
&lt;/td&gt;
		&lt;td&gt;"I?t?rn?ti?n?liz?ti?n"&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;ACL -&amp;gt; :aodbc -&amp;gt; ODBC32 -&amp;gt; MS SQL Server&lt;/td&gt;
		&lt;td&gt;YES!&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
		&lt;td&gt;Iñtërnâtiônàlizætiøn&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;ACL -&amp;gt; Postgresql[-socket] &lt;/td&gt;
		&lt;td&gt;For some values of true&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
		&lt;td&gt;IÃ±tÃ«rnÃ¢tiÃ´nÃ lizÃ¦tiÃ¸n&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;Some of the problems might be easy to solve for someone who knows more about the FFIs than I do. But programming in C is not why I am trying to get CL running. There are combinations that work, but this is hardly reassuring.&lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/2795.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>I like Lisp, to the point of being accused of "having drunk the koolaid."  I read a good number of lisp <a href="http://planet.lisp.org">weblogs</a> (I'm lazy about linking right now). I lurk on <a href="http://www.cliki.net/IRC">#lisp</a> all day long, although a good deal goes by unread I like following the links. </p>

<p>At work I've been trying to get a lisp and <a href="http://common-lisp.net/project/ucw/">UCW</a> setup going. However, one of the key components to making htis happen is to be able to reliably talk to a SQL database. Right now we are a predominantly Microsoft shop so charting a path from our current environment to a lisp one is somewhat tricky.</p>

<p>My experience has been less than good. I have tried a number of different setups and found very few combinations that work. I haven't gotten into what  I would consider weird database stuff. Just basic tables, selects and inserts. My unicode test string is: "Iñtërnâtiônàlizætiøn"</p>

The software:
<ul>
	<li><a href="http://www.cliki.net/SBCL">SBCL 0.9.5 </a></li>
	<li><a href="http://www.cliki.net/CLSQL">CLSQL 3.3.0</a></li>
	<li><a href="http://www.cliki.net/uffi">UFFI 1.5.4</a></li>
	<li><a href="http://franz.com/">ACL 7</a> enterprise trial with all updates</li>
	<li><a href="http://www.postgresql.org/">Postgresql 8</a></li>
	<li><a href="http://www.microsoft.com/sql/default.mspx">SQL Server 2000</a></li>
	<li><a href="http://www.freetds.org/">Freetds 0.63</a></li>
	<li><a href="http://www.unixodbc.org/">unixODBC 2.2.11</a></li>
</ul>
<table border="1">
	<tr>
		<th>Attempted setup</th>
		<th>Does it work?</th>
		<th>Error</th>
		<th>Unicode string</th>
	</tr>
	<tr>
		<td>SBCL -&gt; Postgresql-socket -&gt; postgres</td>
		<td>No - Doesn't connect</td>
		<td>
Illegal :ASCII character starting at byte position 0.
   [Condition of type SB-IMPL::MALFORMED-ASCII]
the specific byte positions varies, normally in the first 4 but i've seen it accross the first 7 or 8.</td>
	</tr>
	<tr>
		<td>SBCL -&gt; UFFI -&gt; PostgreSQL library -&gt; postgres </td>
		<td>YES!</td>
		<td></td>
		<td>Iñtërnâtiônàlizætiøn</td>
	</tr>
	<tr>
		<td>SBCL -&gt; UFFI -&gt; UnixODBC -&gt; FreeTDS -&gt; MS SQL Server</td>
		<td>'Bit' datatype doesn't work.</td>
		<td>
The value
#&lt;SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X082A6A50 :TYPE (* (SB-ALIEN:SIGNED 8))&gt;
is not of type (SB-ALIEN:ALIEN (* (SB-ALIEN:UNSIGNED 8))).
[Condition of type TYPE-ERROR]
<br />
<br /><i>I didn't know true could be negative</i>
</td>
		<td>"I?t?rn?ti?n?liz?ti?n"</td>
	</tr>
	<tr>
		<td>ACL -&gt; :aodbc -&gt; ODBC32 -&gt; MS SQL Server</td>
		<td>YES!</td>
		<td></td>
		<td>Iñtërnâtiônàlizætiøn</td>
	</tr>
	<tr>
		<td>ACL -&gt; Postgresql[-socket] </td>
		<td>For some values of true</td>
		<td></td>
		<td>IÃ±tÃ«rnÃ¢tiÃ´nÃ lizÃ¦tiÃ¸n</td>
	</tr>
</table>

<p>Some of the problems might be easy to solve for someone who knows more about the FFIs than I do. But programming in C is not why I am trying to get CL running. There are combinations that work, but this is hardly reassuring.</p><img src ="http://blogs.acceleration.net/birdman/aggbug/2795.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Civilization IV goodness</title><link>http://blogs.acceleration.net/birdman/archive/2005/09/11/2777.aspx</link><pubDate>Sun, 11 Sep 2005 13:06:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/09/11/2777.aspx</guid><description>&lt;a href="http://www.gamespot.com/pc/strategy/civilizationiv/preview_6131541.html"&gt;This article&lt;/a&gt; gives me a lot of hope. I was kind of worried when I read about cutting down the length of gameplay. I was worried that they were going to remove interesting complexity. However it seems that they are trying to make the game more fluid and easier to control; eg. give the same build orders to several different cities at once.&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/2777.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.gamespot.com/pc/strategy/civilizationiv/preview_6131541.html">This article</a> gives me a lot of hope. I was kind of worried when I read about cutting down the length of gameplay. I was worried that they were going to remove interesting complexity. However it seems that they are trying to make the game more fluid and easier to control; eg. give the same build orders to several different cities at once.<img src ="http://blogs.acceleration.net/birdman/aggbug/2777.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Opera, text/javascript, and UTF-8.</title><link>http://blogs.acceleration.net/birdman/archive/2005/08/17/2035.aspx</link><pubDate>Wed, 17 Aug 2005 12:34:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/08/17/2035.aspx</guid><description>&lt;p&gt;
		I came across what appears to be a minor bug in Opera's handling of javascript and character encoding. If I send it a stream of text that is accurately described by the header "Content-Type: text/javascript; charset=utf-8" Opera (at least 8.02) is at a loss for what to do. &lt;/p&gt;
	 &lt;p&gt;When loadng the address directly it just tries to find an external handler for that mime type (and fails for me). If I try to load this bit of javascript through the XMLHttpRequest I get &lt;i&gt;something&lt;/i&gt;, however I am not familiar enough with the different east-asian languages to determine what character of beast this is. Suffice it to say that it is not what I intended to get back.&lt;/p&gt;
	 &lt;p&gt;If I change the mime-type to "Content-Type: application/x-javascript; charset=utf-8" or 'text/plain' or 'text/html' it works just dandily. Not to difficult of a workaround, but is this really a workaround or "The Proper Way"?&lt;/p&gt; 
	 &lt;p&gt;Safari, &lt;a title="The Browser That Works" href="http://www.mozilla.org/products/firefox/" target="_blank"&gt;Firefox&lt;/a&gt;, and Internet explorer did not have any problems digesting the 'text/javascript'. So for trying to follow a de facto standard, which from what I know of Opera they generally try to do, not very good. Most webservers serve 'application/x-javascript' so they do have that one in the bag.&lt;/p&gt;
	 &lt;p&gt;This really comes down to: &lt;a href="http://annevankesteren.nl/2005/02/javascript-mime-type"&gt;There is no standard javascript mime-type&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;
		A script block with type="text/javascript" writes: "&lt;script type="text/javascript"&gt;
		document.write("foo");
	 &lt;/script&gt;"
	 &lt;br/&gt;
	 A script block with type="application/x-javascript" writes: "&lt;script type="application/x-javascript"&gt;
		document.write("bar");
	 &lt;/script&gt;"
	 &lt;/p&gt;
	 &lt;p&gt;My test showed that both of those work in Mozilla and Opera, and I only get "foo" when in IE.&lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/2035.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>
		I came across what appears to be a minor bug in Opera's handling of javascript and character encoding. If I send it a stream of text that is accurately described by the header "Content-Type: text/javascript; charset=utf-8" Opera (at least 8.02) is at a loss for what to do. </p>
	 <p>When loadng the address directly it just tries to find an external handler for that mime type (and fails for me). If I try to load this bit of javascript through the XMLHttpRequest I get <i>something</i>, however I am not familiar enough with the different east-asian languages to determine what character of beast this is. Suffice it to say that it is not what I intended to get back.</p>
	 <p>If I change the mime-type to "Content-Type: application/x-javascript; charset=utf-8" or 'text/plain' or 'text/html' it works just dandily. Not to difficult of a workaround, but is this really a workaround or "The Proper Way"?</p> 
	 <p>Safari, <a title="The Browser That Works" href="http://www.mozilla.org/products/firefox/" target="_blank">Firefox</a>, and Internet explorer did not have any problems digesting the 'text/javascript'. So for trying to follow a de facto standard, which from what I know of Opera they generally try to do, not very good. Most webservers serve 'application/x-javascript' so they do have that one in the bag.</p>
	 <p>This really comes down to: <a href="http://annevankesteren.nl/2005/02/javascript-mime-type">There is no standard javascript mime-type</a>.</p> <p>
		A script block with type="text/javascript" writes: "<script type="text/javascript">
		document.write("foo");
	 </script>"
	 <br/>
	 A script block with type="application/x-javascript" writes: "<script type="application/x-javascript">
		document.write("bar");
	 </script>"
	 </p>
	 <p>My test showed that both of those work in Mozilla and Opera, and I only get "foo" when in IE.</p><img src ="http://blogs.acceleration.net/birdman/aggbug/2035.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Nanotube Transistors</title><link>http://blogs.acceleration.net/birdman/archive/2005/08/16/2031.aspx</link><pubDate>Tue, 16 Aug 2005 12:27:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/08/16/2031.aspx</guid><description>&lt;p&gt;&lt;a href="http://www.newscientist.com/article.ns?id=dn7847"&gt;YACaNTS (Yet Another Carbon Nanotube Story). &lt;/a&gt; Constantly reading more stories of how carbon nanotubes are awesome.&lt;/p&gt;

&lt;p&gt;Still looking for the story about carbon nanotube stem cells.&lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/2031.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.newscientist.com/article.ns?id=dn7847">YACaNTS (Yet Another Carbon Nanotube Story). </a> Constantly reading more stories of how carbon nanotubes are awesome.</p>

<p>Still looking for the story about carbon nanotube stem cells.</p><img src ="http://blogs.acceleration.net/birdman/aggbug/2031.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Is it ready yet?</title><link>http://blogs.acceleration.net/birdman/archive/2005/08/12/2021.aspx</link><pubDate>Fri, 12 Aug 2005 20:36:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/08/12/2021.aspx</guid><description>	 &lt;p&gt;I've been working for the past couple of days to improve our framework for doing partial post-back. 
		It's more or less standard AJAX fare, I'm just trying to make it easy to do partial page rendering and replacement that uses our existing ASP.Net control structure. 
		Works great and was easy to do in Mozilla, but of course Inappropriate Expletive has to make life difficult.
	 &lt;/p&gt;
	 &lt;p&gt; I've been trying to make this as resilient to errors as possible. If the AJAX request gets a 400 series error, bail out and try a standard postback. If the server did not send back javascript or gives a 500 series error then print whatever it did get back to the screen. 
		Replacing the current page with new html in javascript turned out to be more difficult than I expected. According to &lt;a href="http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/open_1.asp"&gt;MSDN&lt;/a&gt; you can open the current document, write to it and close it again. 
		Indeed their sample page does work (in Firefox as well), but when I tried to do the same function through the shell or from the partial postback code it leaves the browser in an inconsistent state at best, and sometimes just crashes it. I ended up clearing the body's innerHTML, adding an IFrame to the body, and writing everything to that. Not exactly a 'pretty' solution.&lt;/p&gt;
	 
	 &lt;p&gt;The communication with the server really needs to be done asynchronously so the browser isn't blocked while waiting for the server. 
With XMLHttpRequest this isn't to bad. 
		I'm not as much of a fan of MSXML though. The problem comes from the readyState variable that reports what stage the request is currently on.
	 &lt;/p&gt;
	 &lt;p&gt;&lt;a href="http://www.xulplanet.com/references/objref/XMLHttpRequest.html"&gt;From the Mozilla docs:&lt;/a&gt;&lt;br /&gt;
		readonly PRInt32 readyState&lt;br /&gt;
		The state of the request.&lt;br /&gt;
		Possible values:
	 &lt;/p&gt;
	 &lt;ul&gt;
		&lt;li&gt;0 UNINITIALIZED open() has not been called yet. &lt;/li&gt;
		&lt;li&gt;1 LOADING send() has not been called yet. &lt;/li&gt;
		&lt;li&gt;2 LOADED send() has been called, headers and status are available. &lt;/li&gt;
		&lt;li&gt;3 INTERACTIVE Downloading, responseText holds the partial data. &lt;/li&gt;
		&lt;li&gt;4 COMPLETED Finished with all operations.&lt;/li&gt;
	 &lt;/ul&gt;
	 &lt;p&gt;That makes sense to me. Once 2 roles around I can start querying the headers to make sure I am getting what I expect. If it was set up to deal with a stream, that could start processing at step 3, and then everything is completely available in step 4. 
		The only change I could see is that it might be useful to someone to have a stage immediately after the request is sent but no part of the response has been received yet. Not entirely sure where this would be useful though.&lt;/p&gt;

	 &lt;p&gt;It seems that the IE developers felt that this was the most important step though. "I've sent a request but don't have any data back yet."
		&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/0e6a34e4-f90c-489d-acff-cb44242fafc6.asp"&gt;From MSDN (parentheses theirs):&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
		&lt;li&gt;0 (UNINITIALIZED) The object has been created, but not initialized (the open method has not been called).&lt;/li&gt;
		&lt;li&gt;(1) LOADING The object has been created, but the send method has not been called.&lt;/li&gt;
		&lt;li&gt;(2) LOADED The send method has been called, but the status and headers are not yet available.&lt;/li&gt;
		&lt;li&gt;(3) INTERACTIVE Some data has been received. Calling the responseBody and responseText properties at this state to obtain partial results will return an error, because status and response headers are not fully available.&lt;/li&gt;
		&lt;li&gt;(4) COMPLETED All the data has been received, and the complete data is available in the responseBody and responseText properties.&lt;/li&gt;
&lt;/ul&gt;
	 &lt;p&gt;Not only does state 2 implement that, but state 3 is functionally equivalent as well. Since you can't query any of the headers or even start processing a partial stream in state 3, from my perspective it isn't really providing anything extra.  The only thing worth hooking here is state 4.&lt;/p&gt;
	 &lt;p&gt;Well, there goes my attempt to speed up the processing by doing as much work as possible in the early states while it is still receiving data. Thanks IE.&lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/2021.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml">	 <p>I've been working for the past couple of days to improve our framework for doing partial post-back. 
		It's more or less standard AJAX fare, I'm just trying to make it easy to do partial page rendering and replacement that uses our existing ASP.Net control structure. 
		Works great and was easy to do in Mozilla, but of course Inappropriate Expletive has to make life difficult.
	 </p>
	 <p> I've been trying to make this as resilient to errors as possible. If the AJAX request gets a 400 series error, bail out and try a standard postback. If the server did not send back javascript or gives a 500 series error then print whatever it did get back to the screen. 
		Replacing the current page with new html in javascript turned out to be more difficult than I expected. According to <a href="http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/open_1.asp">MSDN</a> you can open the current document, write to it and close it again. 
		Indeed their sample page does work (in Firefox as well), but when I tried to do the same function through the shell or from the partial postback code it leaves the browser in an inconsistent state at best, and sometimes just crashes it. I ended up clearing the body's innerHTML, adding an IFrame to the body, and writing everything to that. Not exactly a 'pretty' solution.</p>
	 
	 <p>The communication with the server really needs to be done asynchronously so the browser isn't blocked while waiting for the server. 
With XMLHttpRequest this isn't to bad. 
		I'm not as much of a fan of MSXML though. The problem comes from the readyState variable that reports what stage the request is currently on.
	 </p>
	 <p><a href="http://www.xulplanet.com/references/objref/XMLHttpRequest.html">From the Mozilla docs:</a><br />
		readonly PRInt32 readyState<br />
		The state of the request.<br />
		Possible values:
	 </p>
	 <ul>
		<li>0 UNINITIALIZED open() has not been called yet. </li>
		<li>1 LOADING send() has not been called yet. </li>
		<li>2 LOADED send() has been called, headers and status are available. </li>
		<li>3 INTERACTIVE Downloading, responseText holds the partial data. </li>
		<li>4 COMPLETED Finished with all operations.</li>
	 </ul>
	 <p>That makes sense to me. Once 2 roles around I can start querying the headers to make sure I am getting what I expect. If it was set up to deal with a stream, that could start processing at step 3, and then everything is completely available in step 4. 
		The only change I could see is that it might be useful to someone to have a stage immediately after the request is sent but no part of the response has been received yet. Not entirely sure where this would be useful though.</p>

	 <p>It seems that the IE developers felt that this was the most important step though. "I've sent a request but don't have any data back yet."
		<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/0e6a34e4-f90c-489d-acff-cb44242fafc6.asp">From MSDN (parentheses theirs):</a></p>
<ul>
		<li>0 (UNINITIALIZED) The object has been created, but not initialized (the open method has not been called).</li>
		<li>(1) LOADING The object has been created, but the send method has not been called.</li>
		<li>(2) LOADED The send method has been called, but the status and headers are not yet available.</li>
		<li>(3) INTERACTIVE Some data has been received. Calling the responseBody and responseText properties at this state to obtain partial results will return an error, because status and response headers are not fully available.</li>
		<li>(4) COMPLETED All the data has been received, and the complete data is available in the responseBody and responseText properties.</li>
</ul>
	 <p>Not only does state 2 implement that, but state 3 is functionally equivalent as well. Since you can't query any of the headers or even start processing a partial stream in state 3, from my perspective it isn't really providing anything extra.  The only thing worth hooking here is state 4.</p>
	 <p>Well, there goes my attempt to speed up the processing by doing as much work as possible in the early states while it is still receiving data. Thanks IE.</p><img src ="http://blogs.acceleration.net/birdman/aggbug/2021.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Go Team Venture!</title><link>http://blogs.acceleration.net/birdman/archive/2005/08/05/1936.aspx</link><pubDate>Fri, 05 Aug 2005 21:26:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/08/05/1936.aspx</guid><description>&lt;p&gt;&lt;a href="http://www.livejournal.com/users/jacksonpublick/8434.html"&gt;Shweeet.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you haven't seen &lt;a href="http://venturebros.com/"&gt;The Venture Bros.&lt;/a&gt; you really should try and catch it. It's awesome.&lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/1936.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.livejournal.com/users/jacksonpublick/8434.html">Shweeet.</a></p>
<p>If you haven't seen <a href="http://venturebros.com/">The Venture Bros.</a> you really should try and catch it. It's awesome.</p><img src ="http://blogs.acceleration.net/birdman/aggbug/1936.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Why CSS is a good thing.</title><link>http://blogs.acceleration.net/birdman/archive/2005/07/28/1854.aspx</link><pubDate>Thu, 28 Jul 2005 13:56:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/07/28/1854.aspx</guid><description>&lt;p&gt;Most of the people around here have heard me cursing at CSS, HTML, and &lt;a href="http://blogs.acceleration.net/birdman/archive/2005/02/21/668.aspx"&gt;browsers&lt;/a&gt;. I think &lt;a href="http://www.quirksmode.org/"&gt;PPK&lt;/a&gt; is spot on though.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.vorsprungdurchwebstandards.de/falling-in-love-with-css/peter-paul-koch.php"&gt;Go read.&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/1854.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Most of the people around here have heard me cursing at CSS, HTML, and <a href="http://blogs.acceleration.net/birdman/archive/2005/02/21/668.aspx">browsers</a>. I think <a href="http://www.quirksmode.org/">PPK</a> is spot on though.</p>

<p><a href="http://www.vorsprungdurchwebstandards.de/falling-in-love-with-css/peter-paul-koch.php">Go read.</a></p><img src ="http://blogs.acceleration.net/birdman/aggbug/1854.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Green Tea Frappuccino</title><link>http://blogs.acceleration.net/birdman/archive/2005/07/12/1794.aspx</link><pubDate>Tue, 12 Jul 2005 16:37:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/07/12/1794.aspx</guid><description>There are some other out there that are &lt;a href="http://sippey.typepad.com/moblog/2005/06/green_tea_frapp.html"&gt;speaking well of it&lt;/a&gt;. However, I definately didn't take to it, &lt;a title="Russ' blog" href="http://blogs.acceleration.net/russ" target="_blank"&gt;Russ&lt;/a&gt; was of the opinion that it was terrible, and Chris made the excellent point that "The whipped cream on top is pretty good; you could finish that off."&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/1794.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml">There are some other out there that are <a href="http://sippey.typepad.com/moblog/2005/06/green_tea_frapp.html">speaking well of it</a>. However, I definately didn't take to it, <a title="Russ' blog" href="http://blogs.acceleration.net/russ" target="_blank">Russ</a> was of the opinion that it was terrible, and Chris made the excellent point that "The whipped cream on top is pretty good; you could finish that off."<img src ="http://blogs.acceleration.net/birdman/aggbug/1794.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Twice as cheap to drink really good scotch.</title><link>http://blogs.acceleration.net/birdman/archive/2005/07/11/1759.aspx</link><pubDate>Mon, 11 Jul 2005 20:42:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/07/11/1759.aspx</guid><description>&lt;ul&gt;
&lt;li&gt;45ml in a shot.&lt;/li&gt;
&lt;li&gt;750ml in a bottle of &lt;a href="http://world.glenfiddich.com/enjoy/range/whisky_range/solera_res.html"&gt;Glenfiddich Solera Reserve&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;---------------------------------&lt;/li&gt;
&lt;li&gt;~16 drinks per bottle&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The bottle of Glenfiddich costs about $42 around here.&lt;/p&gt;
&lt;p&gt;Another place we like to drink is the great Stubbie Shirt Pub in downtown Gainesville. At some point she might want to finish her website that she had us start a long time ago. &lt;/p&gt;
&lt;p&gt;A drink there probably averages about 5 bucks. $5 * 16  = $80. So drinking really good scotch at home is twice is cheap as drinking really good beer out.&lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/1759.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><ul>
<li>45ml in a shot.</li>
<li>750ml in a bottle of <a href="http://world.glenfiddich.com/enjoy/range/whisky_range/solera_res.html">Glenfiddich Solera Reserve</a></li>
<li>---------------------------------</li>
<li>~16 drinks per bottle</li>
</ul>
<p>The bottle of Glenfiddich costs about $42 around here.</p>
<p>Another place we like to drink is the great Stubbie Shirt Pub in downtown Gainesville. At some point she might want to finish her website that she had us start a long time ago. </p>
<p>A drink there probably averages about 5 bucks. $5 * 16  = $80. So drinking really good scotch at home is twice is cheap as drinking really good beer out.</p><img src ="http://blogs.acceleration.net/birdman/aggbug/1759.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Practical Common Lisp Footnotes Greasemonkey Script</title><link>http://blogs.acceleration.net/birdman/archive/2005/07/04/1735.aspx</link><pubDate>Mon, 04 Jul 2005 21:43:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/07/04/1735.aspx</guid><description>&lt;p&gt;&lt;a href="http://birdman.acceleration.net/PCL.user.js"&gt;Here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You want more? Ok, &lt;a href="http://www.gigamonkeys.com/book/"&gt;Practical Common Lisp&lt;/a&gt; by Peter Seibel is a great Lisp book that I (and many others) have been reading recently. However the online version doesn't linkthe note reference in the text to the footnote at the bottom. This takes care of that. &lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/1735.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://birdman.acceleration.net/PCL.user.js">Here</a>.</p>

<p>You want more? Ok, <a href="http://www.gigamonkeys.com/book/">Practical Common Lisp</a> by Peter Seibel is a great Lisp book that I (and many others) have been reading recently. However the online version doesn't linkthe note reference in the text to the footnote at the bottom. This takes care of that. </p><img src ="http://blogs.acceleration.net/birdman/aggbug/1735.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Nathan Bird</dc:creator><title>Fireworks blowout</title><link>http://blogs.acceleration.net/birdman/archive/2005/07/04/1734.aspx</link><pubDate>Mon, 04 Jul 2005 12:35:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/07/04/1734.aspx</guid><description>&lt;p&gt;If you were in NW gainesville near I-75 and SFCC last night and you saw some fireworks W of I-75 it might have been us ;-)&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://maps.google.co.uk/maps?q=NW+25th+pl+Gainesville,+FL&amp;amp;spn=0.015976,0.026786&amp;amp;hl=en"&gt;launching site&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;We've had a reliable report of spotting from about here:
&lt;a href="http://maps.google.co.uk/maps?spn=0.015604,0.025155&amp;amp;saddr=NW+23rd+Ave+AND+nw+103rd+Ter+Gainesville+FL&amp;amp;daddr=NW+23rd+ave+and+nw+77th+ST+Gainesville+FL&amp;amp;hl=en"&gt;1.6 Miles away.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hopefully some of the people driving by on I-75 got to see a bit. Let me know if you spotted any.&lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/1734.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>If you were in NW gainesville near I-75 and SFCC last night and you saw some fireworks W of I-75 it might have been us ;-)</p>

<p>The <a href="http://maps.google.co.uk/maps?q=NW+25th+pl+Gainesville,+FL&amp;spn=0.015976,0.026786&amp;hl=en">launching site</a>. </p>
<p>We've had a reliable report of spotting from about here:
<a href="http://maps.google.co.uk/maps?spn=0.015604,0.025155&amp;saddr=NW+23rd+Ave+AND+nw+103rd+Ter+Gainesville+FL&amp;daddr=NW+23rd+ave+and+nw+77th+ST+Gainesville+FL&amp;hl=en">1.6 Miles away.</a></p>

<p>Hopefully some of the people driving by on I-75 got to see a bit. Let me know if you spotted any.</p><img src ="http://blogs.acceleration.net/birdman/aggbug/1734.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Birdman</dc:creator><title>The Crusader Castle Cruise</title><link>http://blogs.acceleration.net/birdman/archive/2005/06/19/1382.aspx</link><pubDate>Sun, 19 Jun 2005 18:20:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/06/19/1382.aspx</guid><description>&lt;h3&gt;&lt;a href="http://en.wikipedia.org/wiki/Image:Ajluncastle.jpg"&gt;Ajloun&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-weight: medium"&gt;&lt;span style="text-decoration: none"&gt;The
evening after &lt;a href="http://en.wikipedia.org/wiki/Jerash"&gt;Jerash&lt;/a&gt; we went to the castle at Ajloun: Qal'at
ar-Rabadh. On the top of a hill (as are most castles) it It was built
about 1184 by an Arab general and close relative of &lt;a href="http://en.wikipedia.org/wiki/Saladin"&gt;Saladin&lt;/a&gt; to
protect the local Iron mines and limit crusader expansion. It was
also one of a number of stops in a pigeon post chain that could get
news between the Euphrates frontier and the Cairo Headquarters in
twelve hours. It was ransacked by Mongols, rebuilt by Baybars&lt;/span&gt;&lt;/span&gt;
and occupied by the Ottomans during the 17&lt;sup&gt;th&lt;/sup&gt; and 18&lt;sup&gt;th&lt;/sup&gt;
centuries. Earthquakes took their toll, but it has been rebuilt a
good deal since. Not a bad castle. We apparently didn't take any
pictures, but it is almost exactly what you think of for “Small
Castle”. Two or three stories, some rooms a dungeon, all clean
cut stone and cement. The view up top was nice.&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://www.vkrp.org/studies/historical/town-castle/"&gt;Karak&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The next day on the way south to Petra we visited Karak which was
a small town on top of a hill (with sheer cliffs on 3 sides) enclosed
by walls with a castle in it. The location is a defensive stronghold
referred to as far back as the Old Testament. The construction that
is there today was started by knights of the First Crusade in 1142.
The most interesting occupant was &lt;a href="http://en.wikipedia.org/wiki/Raynald_of_Chatillon"&gt;Raynald of Chatillon&lt;/a&gt; who arrived
with the Second Crusade in 1147. A vicious ruler he took pleasure in
enclosing the heads of prisoners in a wooden box (think helmet) and
tossing them off the castle walls. The helmet helped ensure they were
still concious when they hit the rocks below.&lt;/p&gt;
&lt;p&gt;In 1180 he robbed a caravan on the King's Highway in violation of
a truce between King Baldwin and Saladin. It wasn't until 1183
that Saladin was able to launch an offensive; arriving right
when Raynald was celebrating the wedding of his son. His wife sent
plates of food from the banquet out to the Muslim army. In return
Saladin inquired which tower the newly weds were occupying and
made sure his men didn't catapult that one.&lt;/p&gt;
&lt;p&gt;Karak survived the siege but the Crusaders were defeated at the
Battle of Hattin in 1187 partly due to the strategic ineptitude of
Raynald. Saladin spared the lives of the Lords and King, but
personally decapitated Raynald of Chatillon.&lt;/p&gt;
&lt;p&gt;The castle is very large. There are over 7 layers &lt;a href="http://birdman.acceleration.net/jordan/Top of Karak.jpg"&gt;dug into&lt;/a&gt; and
built above the hill. The construction isn't as clean as Ajloun's
(althought that might be partly Ajloun's reconstruction). This castle
is awesome to roam about. There is some barbed wire and some guard
rails blocking the less obvious dangers, but for the most part you
are on your own. There are lots of &lt;a href="http://birdman.acceleration.net/jordan/Karak Hall -lit.jpg"&gt;halls&lt;/a&gt; and rooms to explore. Calvin would love this (and the next) castle; his
Mom would be nervous. 
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://birdman.acceleration.net/jordan/Karak Keep.JPG"&gt;Standing on the keep&lt;/a&gt;. I
din't really want to climb to the very top (not really visible in
that photo), it would have been scrambling up rocks about 3 feet wide
with a choice of a 15ft drop on one side and a 300ft drop on the
other. Did I mention the constant 25MPH Wind?&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://www.atlastours.net/jordan/shobak.html"&gt;Shobak&lt;/a&gt; &lt;a href="http://mahjoob.com/ammar/ak04082002a.htm"&gt;Castle&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;From there we continued to drive south on the King's Highway (past the &lt;a href="http://birdman.acceleration.net/jordan/Volcan on Kings Highway.jpg"&gt;ominous black extinct volcano&lt;/a&gt;) south to Shobak Castle.&lt;/p&gt;
&lt;p&gt;The castle &lt;a href="http://birdman.acceleration.net/jordan/Shobak on the Hill close.jpg"&gt;sits rather impressively&lt;/a&gt; &lt;a href="http://birdman.acceleration.net/jordan/Shobak on the Hill 1.jpg"&gt;upon the hill&lt;/a&gt;. It was the first to be built by the crusaders in Jordan, and the last to fall. It was taken over by the Mamluks who rebuilt it complete with &lt;a href="http://birdman.acceleration.net/jordan/Shobak- Laura in front of calligraphy.jpg"&gt;calligraphic stones&lt;/a&gt; and &lt;a href="http://birdman.acceleration.net/jordan/Shobak Catapult balls.jpg"&gt;catapult balls&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This was another great castle to roam about in. It even has a couple of secret passageways. Stories say it goes down 375 steps into the mountain to get to water; unfortunately it was getting late and all I had was Laura's keychain flashlight with which to explore so I didn't get very far into it.&lt;/p&gt;

&lt;p style="font-size: 80%;"&gt;All the info from this post comes from the &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/1858287405/ref=pd_sim_b_2/102-5176786-3216962?%5Fencoding=UTF8&amp;amp;v=glance"&gt;Rough Guide to Jordan.&lt;/a&gt; &lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/1382.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><h3><a href="http://en.wikipedia.org/wiki/Image:Ajluncastle.jpg">Ajloun</a></h3>
<p><span style="font-weight: medium"><span style="text-decoration: none">The
evening after <a href="http://en.wikipedia.org/wiki/Jerash">Jerash</a> we went to the castle at Ajloun: Qal'at
ar-Rabadh. On the top of a hill (as are most castles) it It was built
about 1184 by an Arab general and close relative of <a href="http://en.wikipedia.org/wiki/Saladin">Saladin</a> to
protect the local Iron mines and limit crusader expansion. It was
also one of a number of stops in a pigeon post chain that could get
news between the Euphrates frontier and the Cairo Headquarters in
twelve hours. It was ransacked by Mongols, rebuilt by Baybars</span></span>
and occupied by the Ottomans during the 17<sup>th</sup> and 18<sup>th</sup>
centuries. Earthquakes took their toll, but it has been rebuilt a
good deal since. Not a bad castle. We apparently didn't take any
pictures, but it is almost exactly what you think of for “Small
Castle”. Two or three stories, some rooms a dungeon, all clean
cut stone and cement. The view up top was nice.</p>

<h3><a href="http://www.vkrp.org/studies/historical/town-castle/">Karak</a></h3>
<p>The next day on the way south to Petra we visited Karak which was
a small town on top of a hill (with sheer cliffs on 3 sides) enclosed
by walls with a castle in it. The location is a defensive stronghold
referred to as far back as the Old Testament. The construction that
is there today was started by knights of the First Crusade in 1142.
The most interesting occupant was <a href="http://en.wikipedia.org/wiki/Raynald_of_Chatillon">Raynald of Chatillon</a> who arrived
with the Second Crusade in 1147. A vicious ruler he took pleasure in
enclosing the heads of prisoners in a wooden box (think helmet) and
tossing them off the castle walls. The helmet helped ensure they were
still concious when they hit the rocks below.</p>
<p>In 1180 he robbed a caravan on the King's Highway in violation of
a truce between King Baldwin and Saladin. It wasn't until 1183
that Saladin was able to launch an offensive; arriving right
when Raynald was celebrating the wedding of his son. His wife sent
plates of food from the banquet out to the Muslim army. In return
Saladin inquired which tower the newly weds were occupying and
made sure his men didn't catapult that one.</p>
<p>Karak survived the siege but the Crusaders were defeated at the
Battle of Hattin in 1187 partly due to the strategic ineptitude of
Raynald. Saladin spared the lives of the Lords and King, but
personally decapitated Raynald of Chatillon.</p>
<p>The castle is very large. There are over 7 layers <a href="http://birdman.acceleration.net/jordan/Top of Karak.jpg">dug into</a> and
built above the hill. The construction isn't as clean as Ajloun's
(althought that might be partly Ajloun's reconstruction). This castle
is awesome to roam about. There is some barbed wire and some guard
rails blocking the less obvious dangers, but for the most part you
are on your own. There are lots of <a href="http://birdman.acceleration.net/jordan/Karak Hall -lit.jpg">halls</a> and rooms to explore. Calvin would love this (and the next) castle; his
Mom would be nervous. 
</p>
<p><a href="http://birdman.acceleration.net/jordan/Karak Keep.JPG">Standing on the keep</a>. I
din't really want to climb to the very top (not really visible in
that photo), it would have been scrambling up rocks about 3 feet wide
with a choice of a 15ft drop on one side and a 300ft drop on the
other. Did I mention the constant 25MPH Wind?</p>

<h3><a href="http://www.atlastours.net/jordan/shobak.html">Shobak</a> <a href="http://mahjoob.com/ammar/ak04082002a.htm">Castle</a></h3>

<p>From there we continued to drive south on the King's Highway (past the <a href="http://birdman.acceleration.net/jordan/Volcan on Kings Highway.jpg">ominous black extinct volcano</a>) south to Shobak Castle.</p>
<p>The castle <a href="http://birdman.acceleration.net/jordan/Shobak on the Hill close.jpg">sits rather impressively</a> <a href="http://birdman.acceleration.net/jordan/Shobak on the Hill 1.jpg">upon the hill</a>. It was the first to be built by the crusaders in Jordan, and the last to fall. It was taken over by the Mamluks who rebuilt it complete with <a href="http://birdman.acceleration.net/jordan/Shobak- Laura in front of calligraphy.jpg">calligraphic stones</a> and <a href="http://birdman.acceleration.net/jordan/Shobak Catapult balls.jpg">catapult balls</a>.</p>
<p>This was another great castle to roam about in. It even has a couple of secret passageways. Stories say it goes down 375 steps into the mountain to get to water; unfortunately it was getting late and all I had was Laura's keychain flashlight with which to explore so I didn't get very far into it.</p>

<p style="font-size: 80%;">All the info from this post comes from the <a href="http://www.amazon.com/exec/obidos/tg/detail/-/1858287405/ref=pd_sim_b_2/102-5176786-3216962?%5Fencoding=UTF8&amp;v=glance">Rough Guide to Jordan.</a> </p><img src ="http://blogs.acceleration.net/birdman/aggbug/1382.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Birdman</dc:creator><title>Wild Jordan and Jerash</title><link>http://blogs.acceleration.net/birdman/archive/2005/06/19/1381.aspx</link><pubDate>Sun, 19 Jun 2005 18:18:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/06/19/1381.aspx</guid><description>&lt;p&gt;The next morning I slept in a little bit then went to meet Laura
at her work place: Wild Jordan. Wild Jordan is part of the Royal
Society for the Conservation of Nature, and the center is a gift from
America through US Agency for International Development.&lt;/p&gt;
&lt;p&gt;The taxi to there was a bit of an adventure. The driver knew just
enough English to misunderstand me. It wasn't until Laura called me
and got someone who knew Arabic to give directions that everything
was sorted out. The center is really nice. There is some office space
that helps coordinate the ecotourism in Jordan, a gift shop and a
cafe. There is a great view looking out over &lt;a href="http://birdman.acceleration.net/jordan/Wild Jordan View.jpg"&gt;Amman
from the balcony.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;From here we picked up Laura's friend Sonya who had also come into
town the night before on a different flight. The next destination was
&lt;a href="http://en.wikipedia.org/wiki/Jerash"&gt;Jerash&lt;/a&gt; which are the ruins of an ancient city. The area has been
settled since prehistoric times. The city itself was founded around
170 BCE and was centered on the Temple of Zeus. However most of the
ruins are Roman from after Pompey liberated the city in 63 BCE. There
is a &lt;a href="Laura-JerashTheatre.JPG"&gt;very well preserved theater&lt;/a&gt; (with an Arabic&lt;a href="http://birdman.acceleration.net/jordan/Arabic Bagpiper.jpg"&gt;&lt;span lang="en-US"&gt;
bagpiper&lt;/span&gt;&lt;/a&gt; wandering around) and a &lt;a href="http://birdman.acceleration.net/jordan/Jerash Mosaic.jpg"&gt;nice mosaic&lt;/a&gt;. There's lots of other stuff as well; those are the nice pictures I have.&lt;/p&gt;
&lt;p&gt;A lot of the city was damaged or destroyed after a number of
earthquakes. At the &lt;a href="http://birdman.acceleration.net/jordan/Temple of Artemis.jpg"&gt;Temple of
Artemis&lt;/a&gt; there are a bunch of columns still standing. A really
nifty thing about these &lt;span lang="en-US"&gt;columns&lt;/span&gt; is that if
you &lt;a href="http://birdman.acceleration.net/jordan/Swaying Columns.jpg"&gt;stick your fingers&lt;/a&gt; in at the
base you notice that they sway in the breeze. It's almost like they
have a pulse.&lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/1381.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>The next morning I slept in a little bit then went to meet Laura
at her work place: Wild Jordan. Wild Jordan is part of the Royal
Society for the Conservation of Nature, and the center is a gift from
America through US Agency for International Development.</p>
<p>The taxi to there was a bit of an adventure. The driver knew just
enough English to misunderstand me. It wasn't until Laura called me
and got someone who knew Arabic to give directions that everything
was sorted out. The center is really nice. There is some office space
that helps coordinate the ecotourism in Jordan, a gift shop and a
cafe. There is a great view looking out over <a href="http://birdman.acceleration.net/jordan/Wild Jordan View.jpg">Amman
from the balcony.</a></p>
<p>From here we picked up Laura's friend Sonya who had also come into
town the night before on a different flight. The next destination was
<a href="http://en.wikipedia.org/wiki/Jerash">Jerash</a> which are the ruins of an ancient city. The area has been
settled since prehistoric times. The city itself was founded around
170 BCE and was centered on the Temple of Zeus. However most of the
ruins are Roman from after Pompey liberated the city in 63 BCE. There
is a <a href="Laura-JerashTheatre.JPG">very well preserved theater</a> (with an Arabic<a href="http://birdman.acceleration.net/jordan/Arabic Bagpiper.jpg"><span lang="en-US">
bagpiper</span></a> wandering around) and a <a href="http://birdman.acceleration.net/jordan/Jerash Mosaic.jpg">nice mosaic</a>. There's lots of other stuff as well; those are the nice pictures I have.</p>
<p>A lot of the city was damaged or destroyed after a number of
earthquakes. At the <a href="http://birdman.acceleration.net/jordan/Temple of Artemis.jpg">Temple of
Artemis</a> there are a bunch of columns still standing. A really
nifty thing about these <span lang="en-US">columns</span> is that if
you <a href="http://birdman.acceleration.net/jordan/Swaying Columns.jpg">stick your fingers</a> in at the
base you notice that they sway in the breeze. It's almost like they
have a pulse.</p><img src ="http://blogs.acceleration.net/birdman/aggbug/1381.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Birdman</dc:creator><title>The 27 Hour Plane Flight to Amman, Jordan</title><link>http://blogs.acceleration.net/birdman/archive/2005/06/13/1329.aspx</link><pubDate>Mon, 13 Jun 2005 18:48:00 GMT</pubDate><guid>http://blogs.acceleration.net/birdman/archive/2005/06/13/1329.aspx</guid><description>&lt;p&gt;Left Jacksonville at 5pm on Tuesday on an Airbus up to
&lt;span lang="en-US"&gt;Philadelphia&lt;/span&gt;-- I actually napped most of
the way. About half an hour wait in &lt;span lang="en-US"&gt;Philadelphia&lt;/span&gt;
before boarding a Boeing 767 for Amsterdam. 
&lt;/p&gt;
&lt;p&gt;I sat in the front row of the coach section. Last time I flew
across the Atlantic I sat in the last row of coach. I like the front
more: more room to stretch your legs, you can actually lean the seat
back a little bit, which you can't do in the last row. The downside
is that the tray table in the front row are really bad and you can
see everything your missing in first class.&lt;/p&gt;
&lt;p&gt;When I found out they wanted $5 for drinks I started to wish I'd
gotten a bottle of the Glendfiddich Solera Reserve from the duty free
shop-- about 25% cheaper than Dorn's. Oh well.&lt;/p&gt;
&lt;p&gt;I slept a bit, probably less than on the flight to Philly. I gave
up after a couple of hours and started to read &lt;a href="http://en.wikipedia.org/wiki/The_Stars_My_Destination"&gt;The Stars My
Destination&lt;/a&gt;&lt;span style="text-decoration: none"&gt; (TSMD) by Alfred
Bester (thanks Daniel). I got about 15 pages in. I also chatted with
my neighbor quite a bit.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I was supposed to have a four hour layover in Amsterdam. I had
hoped to take the train from the airport into Amsterdam (supposed to
be about 25 minutes) and walk around a bit and maybe get some lunch.
Fate decried that it wasn't to be. The plane got in a bit late, then
I was bounced between desks for a while trying to get a boarding pass
and make sure my luggage was transferred off of US Air and onto Royal
Jordanian airlines. By the time this was accomplished I  was supposed
to board in an hour. As much as I wanted to go the gamble didn't seem
worth it 
&lt;/p&gt;
&lt;p&gt;I got some lunch and read a bit more of &lt;a href="http://en.wikipedia.org/wiki/The_Stars_My_Destination"&gt;TSMD&lt;/a&gt;&lt;span style="text-decoration: none"&gt;
while I ate. I became so engrossed with the book that I got to the
gate late anyways. Still had another 15 minutes of sitting before we
boarded though.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: none"&gt;The Royal Jordanian flight out
of Amsterdam was like a party plane. On US flights they try to keep
you in your seat as much as possible. Here everyone was up in the
aisles the entire time talking with friends, chasing kids (lot of
them on the plane), and playing catch (ok maybe not catch). &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: none"&gt;Landed at 8pm Wednesday. The
Jordanian airport was pretty small and the line for Visas was slow to
get through. Got through the red tape, found Laura and had a pleasant
drive into Amman.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
&lt;/p&gt;&lt;img src ="http://blogs.acceleration.net/birdman/aggbug/1329.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Left Jacksonville at 5pm on Tuesday on an Airbus up to
<span lang="en-US">Philadelphia</span>-- I actually napped most of
the way. About half an hour wait in <span lang="en-US">Philadelphia</span>
before boarding a Boeing 767 for Amsterdam. 
</p>
<p>I sat in the front row of the coach section. Last time I flew
across the Atlantic I sat in the last row of coach. I like the front
more: more room to stretch your legs, you can actually lean the seat
back a little bit, which you can't do in the last row. The downside
is that the tray table in the front row are really bad and you can
see everything your missing in first class.</p>
<p>When I found out they wanted $5 for drinks I started to wish I'd
gotten a bottle of the Glendfiddich Solera Reserve from the duty free
shop-- about 25% cheaper than Dorn's. Oh well.</p>
<p>I slept a bit, probably less than on the flight to Philly. I gave
up after a couple of hours and started to read <a href="http://en.wikipedia.org/wiki/The_Stars_My_Destination">The Stars My
Destination</a><span style="text-decoration: none"> (TSMD) by Alfred
Bester (thanks Daniel). I got about 15 pages in. I also chatted with
my neighbor quite a bit.</span></p>
<p>I was supposed to have a four hour layover in Amsterdam. I had
hoped to take the train from the airport into Amsterdam (supposed to
be about 25 minutes) and walk around a bit and maybe get some lunch.
Fate decried that it wasn't to be. The plane got in a bit late, then
I was bounced between desks for a while trying to get a boarding pass
and make sure my luggage was transferred off of US Air and onto Royal
Jordanian airlines. By the time this was accomplished I  was supposed
to board in an hour. As much as I wanted to go the gamble didn't seem
worth it 
</p>
<p>I got some lunch and read a bit more of <a href="http://en.wikipedia.org/wiki/The_Stars_My_Destination">TSMD</a><span style="text-decoration: none">
while I ate. I became so engrossed with the book that I got to the
gate late anyways. Still had another 15 minutes of sitting before we
boarded though.</span></p>
<p><span style="text-decoration: none">The Royal Jordanian flight out
of Amsterdam was like a party plane. On US flights they try to keep
you in your seat as much as possible. Here everyone was up in the
aisles the entire time talking with friends, chasing kids (lot of
them on the plane), and playing catch (ok maybe not catch). </span>
</p>
<p><span style="text-decoration: none">Landed at 8pm Wednesday. The
Jordanian airport was pretty small and the line for Visas was slow to
get through. Got through the red tape, found Laura and had a pleasant
drive into Amman.</span></p>
<p><br /><br />
</p><img src ="http://blogs.acceleration.net/birdman/aggbug/1329.aspx" width = "1" height = "1" /></body></item></channel></rss>