<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-26586517</id><updated>2012-02-03T13:23:58.085-08:00</updated><category term='movie'/><category term='picolisp'/><category term='javascript'/><category term='quack'/><category term='goldfish'/><category term='Mini Six'/><category term='RPG'/><category term='programming'/><category term='politics'/><category term='DnD RPG'/><category term='religion'/><category term='cairo'/><category term='go'/><category term='Interactive Fiction'/><category term='fiction'/><title type='text'>Messing about in Lexicons</title><subtitle type='html'>&lt;br&gt;
&lt;center&gt;
there is nothing - absolutely nothing - &lt;br&gt;half so much worth doing as simply messing about in Lexicons.&lt;br&gt;
    -- Water Rat from wind in the Willows (slightly paraphrased)
&lt;/center&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-26586517.post-5848822236064756117</id><published>2012-01-24T17:45:00.000-08:00</published><updated>2012-01-24T18:18:02.453-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>Roleplaying Games we may never see.</title><content type='html'>Atriums and Ardvarks&lt;br /&gt;Baths and Bandicoots&lt;br /&gt;Corridors and Crocodiles&lt;br /&gt;Dugouts and Dingos (Adventures in the Australian Outback)&lt;br /&gt;Escelators and Elephants&lt;br /&gt;Foyers and Fauns&lt;br /&gt;Gorges and Gargoyles&lt;br /&gt;Houses and Humans (of this one is called the Sims)&lt;br /&gt;Iglus and Iguanas&lt;br /&gt;Jails and Jaguars&lt;br /&gt;Kitchens and Krackens&lt;br /&gt;Locations and Lurkers (the most generic system ever)&lt;br /&gt;Moseliums and Mummies&lt;br /&gt;Nests and Narwals&lt;br /&gt;Opisthodomos and Octopuses&lt;br /&gt;Palaces and Pelsiasours&lt;br /&gt;Quaries and Quails&lt;br /&gt;Roofs and Roosters&lt;br /&gt;Saunas and Salamanders&lt;br /&gt;Turrets and Turtles&lt;br /&gt;Universities and Unicorns&lt;br /&gt;Vestipules and Vipers&lt;br /&gt;Warrens and Wearwolves&lt;br /&gt;Xystums and Xenomorphs&lt;br /&gt;Yachts and Yetties&lt;br /&gt;Zoos and Zebras (I guess this woudl be sim Zoo)&lt;br /&gt;&lt;br /&gt;And we have an entire alphabet though really Opisthodomos and Xystums are a bit of a strech.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5848822236064756117?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5848822236064756117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5848822236064756117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5848822236064756117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5848822236064756117'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2012/01/roleplaying-games-we-may-never-see.html' title='Roleplaying Games we may never see.'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5464477364877081034</id><published>2012-01-12T14:10:00.000-08:00</published><updated>2012-01-12T14:58:39.229-08:00</updated><title type='text'>Mere Christianity</title><content type='html'>Answering a  &lt;a href="http://www.reddit.com/r/atheism/comments/ocdjk/to_the_atheists_of_reddit_i_offer_a_challenge/"&gt;challange from a redditor&lt;/a&gt; to read this book. And here is what  I found.&lt;br /&gt;&lt;br /&gt;In rhe Preface there is an interesting tangent about words loosing their descriptive meaning, and becoming mere terms of praise or condemnation. Lewis is wrong in suggesting that Non believers would be eager to use the word 'Christian' to mean a good person &lt;a href="http://www.reddit.com/r/atheism/"&gt;/r/atheism&lt;/a&gt; has many a post proving that atheists do not like this usage any more then Lewis does.  So far However I can say to agree with the argument.&lt;br /&gt;&lt;br /&gt;We then get to the main thrust of this book. I can only say that after the preface I was dismayed to see Mr Lewis immediately ignore his own advice and attempt to water down the meaning of "Natural Law". A Natural Law is a law that cannot be broken, simply because it is how the universe works. There is no grounds for saying that a natural law, as applied to rocks is how they do behave but when applied to Humans means how they ought to behave. Even the claim that this definition is standard in philosophy is demonstrably false. I only have to go back as far as Sir Thomas Hobbs to get a counter example. Sir Hobbs describes the State of Nature, or how Humans behave when there is no social constrainst up on them, and it really does boil down to kill them before they kill you. &lt;br /&gt;&lt;br /&gt;I also suspect that there is an implicit argument from design hiding here. Really the only time you can get an ought from an is, is when you envoke design. If X is a watch then X ought to tell the correct time. So if there is a way Humans ought to behave then it follows that they where designed to behave in some way. To me the fac that they don't suggest that either there was no such way, or that the designer really wasn't particularly good at his job. Refering to God as He is yet another thing that Lewis slips in with no justification. However I suspect that his sencibilites, having a strong hint of white colonialism about them, made this an intierly unconcious act. &lt;br /&gt;&lt;br /&gt;Lewis then goes to argue the point that there is Some idea of Moral right and wrong which goes beyond our instincts and is universal to all humans across all tiems and places. And yet history seems to furnish an inexhaustible supply of counter examples. Lewis does attempt to address this on two fronts. Firstly by arguing that we often confuse custom with moral imperative and that the majority of such examples are really about custom and not morality. He supplied clothing as an example. I find this Ironic considering how strongly some religions feel about what the moral way to dress is. Indeed in Lewis' own faith, the taboo against nudity was pretty well the first sign that humans had learned about good and evil.&lt;br /&gt;&lt;br /&gt;Lewis' second approach is to argue that other examples are not confusion about the moral things to do but confusion about the facts of the world leading to actions that in retrospect appear evil, but seemed right at the time. By this example our witch burning ancestors where not acting immorally, but where simple confused about the facts, and believed in witches. As opposed to the Nazi's who where truly evil. This to me is rather extreme special pleading. One could just as easily argue that the Nazi's (who where predominantly Christian) where also merely confused about the facts. Indeed they justified genocide in exactly the same way as previous generations justified the burning of witching. Namely by arguing that the targeted group was responsible for every problem that the society of the day was facing, Indeed that the targets where so evil that they desrved to be destroyed. &lt;br /&gt;&lt;br /&gt;This argument, that the enemy is so degenerate that they do not deserve to be treated as a human. Was exactly the same one that Christians used to justify the practice of slavery throughout the colonial period. And is also the exactly same argument used in the Old Testement when Moses ordered genocide in God's name. I find it interesting to Compare Moses and Hitler. They both had the same goal, namely to establish a homeland for the chosen people, and they both ordered similer sorts of atrocities. Including the clensing of the Chosen people by killing anyone who disagreed with them, followed by the extermination of other "non Chosen" people.&lt;br /&gt;&lt;br /&gt;Along the way we have the claim that Selfishness has never been admired. That no successfully society has ever been built that uses self interest as an ideal. Well no society other than the modern free world. Indeed the idea that individuals have the right to the pursuit of happiness is what make our society different from every form of Theocracy and Dictatorship that can be found in the pages of history and in the world today. Here again I find Lewis to be wrong. He argues that fact that we can rank societies on a moral scales shows that there must be some external we are ranking them against. But in really all we are doing is comparing the apparent morality of others to our own ideal of what a moral society should be. And indeed My ranking on this issue would be very different to that of a Fundamentalist, irrespective of what ideology he happens to follow.&lt;br /&gt;&lt;br /&gt;At one point Lewis builds a destinciton between the Matirialist and the Relgious point of view, leading to the standard position that Science can only answer question about How things work but not questions about why things are. Lewis' account of the materialist position is to me an illustration about why you should never try to argue form the current state of scientific knowledge. He spends a rather long paragraph summarising a model of solar system evolution which no modern day physicist would subscribe too. A modern account of our solar system would be different in every detail, and yet the religous verison continues to be a longwinded way of saying "God did it". &lt;br /&gt;&lt;br /&gt;The thing is that Sicnece can have a stab at explaining why all humans seem to agree about a lot of moral questions. And that is our evolutionary heritage as a social animal, predisposed to co-operating in small groups. And to this we add social learning. And indeed among humans social learning seems to account for the bulk of our moral values. And if we look back at history we see that almost every single time two vastly different cultures have met, both have expressed dismay about the moral standards of the other.&lt;br /&gt;&lt;br /&gt;In in all Lewis failed to convince me that his exter external moral law is an objective reallity. And having failed there the remainder of the argument falls appart even if the chain of logic was at all reasonable, which it isn't, as it does seem to make some pretty impressive leaps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5464477364877081034?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5464477364877081034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5464477364877081034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5464477364877081034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5464477364877081034'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2012/01/mere-christianity.html' title='Mere Christianity'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-4634453236596625001</id><published>2011-11-28T17:59:00.000-08:00</published><updated>2011-11-28T18:25:34.393-08:00</updated><title type='text'>The Burzynski Clinic</title><content type='html'>So the blogosphere has been awash with reports of the Buurzynski clinic which has been getting money out of desperate people for about as long as I've been alive. Really can you get any worse then giveing false hope to the parents of terminally ill children?&lt;br /&gt;&lt;br /&gt;Fore more check out Pharyngula: &lt;a href="http://freethoughtblogs.com/pharyngula/2011/11/28/burzynski-clinic-the-domain-of-scoundrels-and-quacks/"&gt;&lt;/a&gt; or just google it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-4634453236596625001?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/4634453236596625001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=4634453236596625001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4634453236596625001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4634453236596625001'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2011/11/burzynski-clinic.html' title='The Burzynski Clinic'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5685127493978585383</id><published>2011-08-31T00:05:00.000-07:00</published><updated>2011-08-31T00:25:13.362-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mini Six'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>Dice Rolling Mechanic</title><content type='html'>One thing I don't really like in Dice rolling is the potential open ended roll, such as the Exploding dice used in Mini Six. So I've developed my own alternative. Rather then rolling an unknown number of extra times, why not just count sixes and assume that on a succesfull roll, more sixs means a higher degree of sucess.&lt;br /&gt;&lt;br /&gt;To stop things getting out of hand I'm placing a limit of 6 dice on my players. If anyone has more than that additional dice get converted to +3s.  Futher 5 sixes and six sixes are so rare that I'm not bothering with them. Which leaves me with four possible degrees of success.  Here's how it works in an attack roll (I'm using static defences by the way):&lt;br /&gt;&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;0 or 1 six&lt;/dt&gt;&lt;dd&gt;A normal succesfull attack&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;2 sixes&lt;/dt&gt;&lt;dd&gt;If the target is using a sheild its ignored for purposes of soak&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;3 sixes&lt;/dt&gt;&lt;dd&gt;The hit was really lucky, and armour is ignored entierly.&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;4 sixes&lt;/dt&gt;&lt;dd&gt;A Critical hit, Target is treated as having a Soak total of 0.&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;Note that this scheme places natural limits on this in terms of unskilled characters, if you don't have 4 dice to roll, then your character has no chance of getting a Critical hit.  While at the top of your game (rolling 6 dice) you will manage this slightly less then 1% of the time.&lt;br /&gt;&lt;br /&gt;On the other side of the coin if all your dice are 1's then you have botched. And any time you only roll 1 dice that will happen 16% of the time. So make sure to spread your skill points around a little.&lt;br /&gt;&lt;br /&gt;As futher encouragement to use skills I'm toying with the idea of setting seperate dice pool limits on attributes and skills, inorder to counter the Mary Sue effect of the unskilled but high attribute character who is good at everything.  It all depands how cinamatic you want your compain. For gritty realism, and lots of fumbles you could rule that unskilled attempts only get 1d, though I think 2d (and a fumble rate of 2.7%) might make for a less frustrating play expirence.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5685127493978585383?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5685127493978585383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5685127493978585383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5685127493978585383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5685127493978585383'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2011/08/dice-rolling-mechanic.html' title='Dice Rolling Mechanic'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-6321632017397580401</id><published>2011-08-25T16:32:00.000-07:00</published><updated>2011-08-31T00:05:50.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mini Six'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>And one of the Campers was eaten by a Bear!</title><content type='html'>Actually a lot of them where and that was with two handed swords to boot. The campers not the bear.  What I actually did is simulate the combat mechanic from the &lt;a href="http://antipaladingames.com/minisix.html"&gt;Mini Six &lt;/a&gt;ruleset. The combat setup takes a fairly standard starting character (Might 3D Weapon Skill +2D) and pitts them against the Bear as stated in the rule book.&lt;br /&gt;On average the Bear (who hit first) would make a tasty meal of our camper 71% of the time within 5 combat rounds. And most of the remainders 27% ending with both of our combatants unconcious. Our camper escaped only 2% of the time.&lt;br /&gt;&lt;br /&gt;Granted it is a pure slugfest that I'm simulating here, with no attempts to escape or do anthing other than hit the opponent. And Really the average of 5 rounds should give the player plenty of time to do something inteligent.&lt;br /&gt;&lt;br /&gt;Giving our camper some armour helped a lot. Giving them an average of 29 rrounds to try an escape and an 18% chance of winning outright. The Bears odds  of getting lunch also dropped to 56%.&lt;br /&gt;&lt;br /&gt;With evently matched oponents there is a significant first strike advantage. The fighter who starts winning 46% of the time. The Second striker wins 24% of the time and there is a draw the remaing 30% of the time. Combat howerver takes a more respectable 7 rounds on average. Adding Armour seems to even this off and add a couple of rounds to the combat.&lt;br /&gt;&lt;br /&gt;And finally Our fully equiped hero against a lowly guard with lower quality equpment, he will manage to win out  71% of the time, and only stands a 1% chance of actually looseing. Which is as it should be.&lt;br /&gt;&lt;br /&gt;So all in all I'm happy with the calibration of the system. Though I find the high freqnecy of mutual unconciousness a little suprising.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-6321632017397580401?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/6321632017397580401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=6321632017397580401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6321632017397580401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6321632017397580401'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2011/08/and-one-of-campers-was-eaten-by-bear.html' title='And one of the Campers was eaten by a Bear!'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-3383805173928829564</id><published>2011-06-14T23:06:00.000-07:00</published><updated>2011-06-14T23:22:20.318-07:00</updated><title type='text'>Yet another Futurist Project</title><content type='html'>Personally I'd love to see a high speed train network in Australia. It &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;dosn't&lt;/span&gt; look likely at the moment but if It does happen I bet that the trains will not look like &lt;a href="http://www.smh.com.au/travel/travel-news/vision-of-australias-future-400kmh-trains-20110607-1fqnd.html"&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This really has to be one Ugly, and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;wowfully&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;inpractical&lt;/span&gt; designs I have ever seen for an inter city train. First of all why all the curved window frames, it doesn't look that good, all it will do is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;increast&lt;/span&gt; the cost of manufacture and wastage &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;beause&lt;/span&gt; all the windows have to be custom cut into funny shapes.&lt;br /&gt;&lt;br /&gt;But my biggest gripe is there proposed &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;seating&lt;/span&gt; where 1/4 of the seats have no backrest and more then half of them don't face the direction of travel. And really on A trip of several hours I expect to be able to sit facing forwards. (Due to a propensity to motion sickness the alternative is not an option).  But then again suppose that in the real world economic factors will nix that idea quite &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;effectively&lt;/span&gt;. Seriously what operator is going to put that crap in when they could put twice as many regular seats in the same space?&lt;br /&gt;&lt;br /&gt;In any case building the train is not the economic &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;hurdle&lt;/span&gt;. Building the track is the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;economic&lt;/span&gt; and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;engineering&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;challenge&lt;/span&gt;. Find a way to do that faster and cheaper then conventional steel track and then you'll have something &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;noteworthy&lt;/span&gt;. And the real &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;challenge&lt;/span&gt; in a country where the hottest summer days every year are &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;sufficient&lt;/span&gt; to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;cause&lt;/span&gt; track buckling. Really solve the hard challange first and leave the interior design for later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-3383805173928829564?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/3383805173928829564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=3383805173928829564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3383805173928829564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3383805173928829564'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2011/06/yet-another-futurist-project.html' title='Yet another Futurist Project'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5611385352963294322</id><published>2011-06-05T23:53:00.000-07:00</published><updated>2011-06-06T00:04:39.461-07:00</updated><title type='text'></title><content type='html'>Yet again when I want to comment on the Sydney Morning Herald, comments are disabled. Newsflash, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;childrens&lt;/span&gt; stories are &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;repleat&lt;/span&gt; with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;sterotypes&lt;/span&gt; we don't like.  In this case the &lt;a href="http://www.smh.com.au/entertainment/books/outrage-as-smurfs-called-racist-20110606-1foom.html"&gt;article is talking about smurfs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But really this is par the course. What about Thomas the Tank Engine. His world is World is every inch the communist dictatorship. In this case with the Engines doing the bidding of The Fat &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Controler&lt;/span&gt;. A character who cannot be questioned and is always like, how very big brother of him.&lt;br /&gt;&lt;br /&gt;Then again what about the messages in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Kunfu&lt;/span&gt; Panda. A movie which in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;clasic&lt;/span&gt; Greek tr tradition rewards &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;thouse&lt;/span&gt; who follow the dictates of Fate and punishes &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;thouse&lt;/span&gt; who &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;chalanges&lt;/span&gt;.  Really look at it from the point of view of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;supposid&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Villan&lt;/span&gt; of the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;piece&lt;/span&gt;. Here we have an orphan pushed ruthlessly by a bad guardian towards one particular goal. Is it a wonder then that he becomes &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;enraged&lt;/span&gt; when the one thing he has been taught all his life to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;strive&lt;/span&gt; for is denied him. And then to add insult to injury after years of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;discipline&lt;/span&gt; and training he is beaten by a fat panda, who really earned nothing.&lt;br /&gt;&lt;br /&gt;When it comes down to it I liked smurfs when I was a kid, I didn't mind my Kids reading Thomas stories, and I enjoyed watching the Fat Panda bungle his way to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;success&lt;/span&gt;. All of them have undercurrents and messages I don't agree with, but then again I really didn't bother to analyse them to this level at the time.&lt;br /&gt;&lt;br /&gt;I may be guilty of this in the case of Avatar, but &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;that's&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_17"&gt;completely&lt;/span&gt; different, that movie was &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_18"&gt;completely&lt;/span&gt; over hyped and hence deserved to be over analysed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5611385352963294322?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5611385352963294322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5611385352963294322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5611385352963294322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5611385352963294322'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2011/06/yet-again-when-i-want-to-comment-on.html' title=''/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1529914106624222153</id><published>2011-03-17T15:34:00.000-07:00</published><updated>2011-03-17T16:01:35.294-07:00</updated><title type='text'>Bishops move</title><content type='html'>So the Catholic Bishops of NSW are opposed to the greens.&lt;br /&gt;&lt;br /&gt;http://www.parra.catholic.org.au/news---events/latest-news/latest-news.aspx/the-green-agenda--a-message-from-catholic-bishops-in-nsw.aspx&lt;br /&gt;&lt;br /&gt;Not surprisingly I can't agree with any of their points:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No you don't deserve special exemptions from anti-discrimination laws. they are their because we as a society hold that it is wrong to discriminate period. &lt;/li&gt;&lt;li&gt;Yes your &lt;strike&gt;indoctrination centers&lt;/strike&gt; schools are getting more than their fair share of public money. And yes the government should spend more on public education. &lt;/li&gt;&lt;li&gt;Drug use. Yes it should be treated as a health issue. I have to admit to being a little more hesitant here, but on balance treating the addiction should be preferred to punishing the addict. I'm not sure about what should be done with those who refuse treatment.&lt;/li&gt;&lt;li&gt;So when legislation enshrines moral codes you don't agree with (IE anti discrimination laws) you cry religious freedom. But when it enshrines your values, that's perfectly OK. What about the religious freedom of people who don't agree with your definition of marriage? The hypocrisy is rather striking on this one. &lt;/li&gt;&lt;li&gt;Again the church is OK with their beliefs being enshrined in legislation. Yes their are both good and bad reasons for abortion, and it is not an as black and white area as the church would like to claim. What about cases where the fetus is know to have little if any chance of survival, what about rape victims? Personally I would like as few unnecessary abortions taking place as possible, but they should never be seen as a crime. As to the personal views of Doctors and Nurses? On balance I thin duty of care trumps your personal religious views, especially in the Public health care system.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Euthanasia. In all honestly I don't know where I stand on this one. It is difficult.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;On balance the Bishops letter is a stated position of a special interest group trying to look after their own interests, and perpetuated their prejudices being enshrined in law. What they fear is that in the end the Majority of Australians do not actually agree with them , even if they profess to be members of the Catholic faith.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1529914106624222153?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1529914106624222153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1529914106624222153' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1529914106624222153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1529914106624222153'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2011/03/bishops-move.html' title='Bishops move'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1802906955414472738</id><published>2011-03-13T15:44:00.002-07:00</published><updated>2011-03-13T15:48:50.471-07:00</updated><title type='text'>Why does his opinion Matter?</title><content type='html'>So cardinal Pell, is speaking out against human caused global warming. In all honesty his opinion here matters far less  then it does in his normal field of preaching morality.&lt;br /&gt;&lt;br /&gt;http://www.smh.com.au/environment/pell-row-with-climate-scientist-heats-up-20110313-1bsx6.html&lt;br /&gt;&lt;br /&gt;And as usual the Sydney Morning Herald has chosen to not allow comments on this story. Probably for fear that the "good" cardinal would be well and truly roasted in them.&lt;br /&gt;&lt;br /&gt;For what my opinion on the subject matters, Which is very little, I have been a skeptic for a very long time. However I think that the position of climate change skeptic is getting more an more tenuous and unscientific with every passing day.  And the reality that there is hard scientific evidence for climate change is now well and truly beyond reasonable doubt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1802906955414472738?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1802906955414472738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1802906955414472738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1802906955414472738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1802906955414472738'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2011/03/why-does-his-opinion-matter.html' title='Why does his opinion Matter?'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1750891789834067030</id><published>2011-02-20T15:56:00.000-08:00</published><updated>2011-02-22T14:10:40.704-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DnD RPG'/><title type='text'>D&amp;D Essentials In review</title><content type='html'>So I've read through both Players Books and the Dungeon Masters book. On the whole I like how 4th Edition (and Essentials in particular) works and how it plays. I've run several encounters with my Boys and a friend of theirs (aged 6 - 8) and they all enjoyed it immensely. Heck in the last game they actually started working together instead of just attacking things at random, and my 6 year old actually had his Cleric character use healing word on his brother's character without being prompted to do so. Up next is another encounter and then a Skill Challenge, which should be interesting.&lt;br /&gt;&lt;br /&gt;That said I have a few comments on the book themselves. First up, obvious cut and paste jobs are not what I expect in a book I pay money for. The Dungeon Masters book has at least one of these where it refers to the monster section later in this book. This is obviously pasted from one of the Fast Play Rules books (which indeed had a monster section), while the Dungeon Masters book does not.&lt;br /&gt;&lt;br /&gt;Now a Word about the Rules Compendium. I have seen a lot of good reviews about this book, but I really can't echo them. Having just bought the rest of the essentials line I now have 90% of what is in this book, and really I'm not going to pay again just to get a page each on Mounted Combat, Aquatic Combat and Disease.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;What I would have like to change about Essentials&lt;/h2&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Dump the Slayer build to make room for other stuff.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Dump the Scout build, to make room for other stuff.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Now that we have some extra space in the Hero books add the following:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Add a Paragon path to each race.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Make the class paragon paths work based on Power Source. so that Fighter and Rouge can pick each others (and you end up with a slayer paragon path). Ditto for Cleric and Paladin, Wizard and Warlock, Ranger and Druid.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Put in Skill based utility powers&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Each book should have 2 rather then one Epic Destines, one geared to Lawful Good and the other towards Unaligned characters.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; if we still have room left add some more feats.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Assuming you get both books this would end up with a subset that has 2 builds for each role. Each character now has a choice of three paragon paths (one based on race and two on class power source) And 4 epic destines. And with skill based utility powers has a range of options to choose from.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;House Rule&lt;/b&gt;&lt;br /&gt;As somewhat of an old school player the idea of magic items that have no mystery about them rubbed me the wrong way. So my house rule here is that Arcane checks are required to work this out. The DC being based on the Items level. Say Easy to work out that it is definitely enchanted, Moderate to work out the basic bonus penalty. And Hard to work out each additional power the item has.&lt;br /&gt;&lt;br /&gt;The biggest advantage of this is that it allows me to bring back the idea of cursed items. Which is really part of the fun, even if it just requires an application of a remove curse ritual now and then.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1750891789834067030?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1750891789834067030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1750891789834067030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1750891789834067030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1750891789834067030'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2011/02/d-essentials-in-review.html' title='D&amp;D Essentials In review'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-490374733423251068</id><published>2011-02-10T17:55:00.000-08:00</published><updated>2011-02-10T18:04:27.702-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DnD RPG'/><title type='text'>Dungeons &amp; Dragons</title><content type='html'>Well, it looks like Wizards of the Coast have lost me as much of a customer, just as they where about to win me back.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;I like the Essentials book format. Which now appears to be canned for all future releases. so that's an end to that then. The digest size is lighter, and frankly more convent.&lt;br /&gt;&lt;li&gt;I like the idea of downloading 1 or 2 PDFs per month for the articles. but that is finished now. So I'll probably get a D&amp;D Insider membership long enough to get what already exists and then forget about it.&lt;br /&gt;&lt;li&gt;I might get future Monster's vault products, providing they come with tokens. But I would hope that they come with digest sized soft cover books. &lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Its depressing really. As a casual gamer I embraced what they released for casual gamers. The hard core faction poo pooed the idea to the point that it won't be continued. I'm disappointed by this, but I guess if I'm in the minority then so be it. I;'m sure with a bit of online digging I can invent the bits that are missing, such as the Autumn and Winter varients for Essentials Druids.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-490374733423251068?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/490374733423251068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=490374733423251068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/490374733423251068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/490374733423251068'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2011/02/dungeons-dragons.html' title='Dungeons &amp; Dragons'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-4849208400371232183</id><published>2010-12-29T16:38:00.001-08:00</published><updated>2011-01-09T20:04:17.643-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fiction'/><title type='text'>So I've read all of the Anne stories</title><content type='html'>Yes I've gotten though every single one, thanks largely to project Project Gutenberg, as the library copies seem be on the move more often then not, and that's with two library chains at my disposal.&lt;br /&gt;&lt;br /&gt;After a while the characters, though appearing under different names, do get a little repetitive. After all one can only contend with so many old men who are really quite nice under their ogarish exterior and terrifying matriarchs who have been on their death bed for 20 years or more and still manage to make everyone lives miserable day in and day out. &lt;br /&gt;&lt;br /&gt;Overall I have to say that which the child Anne was endearing the adult Anne was just too perfect in every way. Small wonder then that as the stories wore on the spotlight shone on other characters more and more. &lt;br /&gt;&lt;br /&gt;In the end I'd say that The last book, Rilla of Ingleside was was the best of the books. Still managing to hold humor despite its dark background, and having a somewhat less idealized heroin in Rilla Blythe. I'm not sure the book could stand on its own, as it does presuppose that you already know a bit about many of the characters, but it certainly most intense, of the lot. &lt;br /&gt;&lt;br /&gt;The two later additions written to plug gaps in the chronology where however disappointing, mostly as they where completely lacking any central plot or problem but where rather a serious of unrelated events. The first of these, Anne of the Windy Poplars, presented a near goddess like Anne who made everything better by her mere presence. And then we had Anne of Ingleise, a similar sequence of random events, but one in which Anne played almost no roll at all, while being overshadowed by her young children. (I have to admit I didn't finish this one). In any case afterwords the practical Mary Vance, and baby disliking Rilla made a very pleasant change.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;PS&lt;/span&gt; After a little more reading &lt;a href="http://gutenberg.net.au/ebooks02/0200881h.html"&gt;Jane of Lantern Hill&lt;/a&gt;, is by far my favorite Montgomery book. I think I'll stop here as Montgomery's story lines (while quite enjoyable) are a tad on the repetitive side, though I may read more at a later date.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-4849208400371232183?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/4849208400371232183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=4849208400371232183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4849208400371232183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4849208400371232183'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/12/so-ive-read-all-of-anne-stories.html' title='So I&apos;ve read all of the Anne stories'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-6065662699815908448</id><published>2010-11-28T16:39:00.000-08:00</published><updated>2010-11-28T17:23:53.372-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='religion'/><title type='text'>No Comments Allowed</title><content type='html'>One thing really bothers me about newspaper sites. And that is how the choose to enable comments for some stories but not others. Looking at some recent stories on the Sydney Morning Herald website there does seem to be some very strong religious bias here. &lt;br /&gt;&lt;br /&gt;Contentions stories about Islam almost always have comments enabled. But ever time Cardinal George Pell goes and says something stupid, this feature is conspicuous by its absence. Take this resent article for example &lt;a href="http://www.smh.com.au/national/faithless-are-coarse-uncaring-and-without-purpose-says-cardinal-pell-20101128-18cg3.html"&gt;Faithless are coarse uncaring and without purpose&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What Amazes me the most is the utter ignorance behind the Cardinal on every single point, which has been rgurgatated again and again, even though all of them have been addressed and debunked by Atheists. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;THE lives of people without faith have ''nothing beyond the constructs they confect to cover the abyss''&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Um sorry, who is confecting myths to cover up the abyss? Is it rally skeptics who insist on evidence before they will elevate a hypothesis to the status of theory. Or is it those who say that the one truth is contained in a book written thousands of years ago. A book, which is true, ulike all the other books written thousands of years ago. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;''A minority of people, usually people without religion, are frightened by the future,'' &lt;/blockquote&gt; &lt;br /&gt;&lt;br /&gt;As far as I can see most of the impending doom, moral degeneration and end of civilization senarios are perpetuated by theists, not atheists. This is inverably followed by a call to renew faith, which will somehow solve all the worlds problems. Yes there are real problems, that require real action, and real solutions. But Faith will not solve them. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;''It's almost as though they've … nothing but fear to distract themselves from the fact that without God the universe has no objective purpose or meaning.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;No Cardinal I don't accept that your blind acceptance of a particular creation myth makes you objective. Heck even your scriptures don't actually bother to explain why your God created the universe, only that He did, and Liked what he created. Which as far as I can see makes it an experiment or some kind of art project. &lt;br /&gt;&lt;br /&gt;An evolutionary perspective might instead say that the purpose of life is to propagate itself, beyond that we, as self aware beings, make our own purpose. What could be grander then realing that their that the question of Life the universe and everything will not be answer by searching, but by invention?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Cardinal Pell said education was not enough to create a civilised society, that faith was necessary too. He cited the example of 20th century Germany&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;How Ironic. That he would site a movement steeped in religious language, Lead by a baptized Catholic, who if anything saw himself as a new Messiah. A regime that rose at a time when antisemitism was the normal position of the catholic church, who prayed that the Treacherous Jews would see the light. This Particular prayer was removed at Vatican II, but has now been reinstated (admittedly the new version drops the word Treacherous).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;''Australian society will become increasingly coarse and uncaring … if Christian principles are excluded from public discussion.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Yet another absurdity to claim that Christianity has some kind of exlusive claim on emotions that we are all capable of merely for the fact that we are humans, evolved from primates that lived in social groups. &lt;br /&gt;&lt;br /&gt;The most glorious statements of the rights of Man we have did not come from any religion. But from secularists who knew what it was like to live under boot heels of religion. I am of course referring to the US deceleration of independence. It was secular society that first said we are all equal, and none will be placed in power by right of birth. It was secular society that said that slavery was wrong. Now that secular society is here all of these things seem obvious to us. SO my question to the good cardinal would by, why didn't your God reveal these ideas thousands of years ago, when your church had control of the Roman Empire, and in essence control of Europe?&lt;br /&gt;&lt;br /&gt;But no the truth is that the Church has fought tooth and nail against every single step of the march to the modern world. Denouncing every idea to the last possible moment. Favoring despotism over democracy and censorship over freedom of expression at every single turn. How Ironic that now that they have lost their power to oppress they want to claim that they are all that s stands between civil society and chaos.&lt;br /&gt;&lt;br /&gt;Despite the repeated claims of conservative theists the world few of New Atheists is a positive one, not a negative one. New Atheists do not lie and claim to have all the answers, but rather admit that they do not, and that much work needs to be done. And go on to invite every indidual to join them on the quest to find better answers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-6065662699815908448?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/6065662699815908448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=6065662699815908448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6065662699815908448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6065662699815908448'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/11/no-comments-allowed.html' title='No Comments Allowed'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5539235260395642217</id><published>2010-10-23T16:30:00.000-07:00</published><updated>2010-10-23T16:46:01.833-07:00</updated><title type='text'>Ben Hur</title><content type='html'>So we took the boys to see the ben Hur spectacular last night. Yes it was big, very big. But it also went a long way to prove that bigger does not necesarily mwan better. And on the whole, while I acknowledge that a lot of people worked very hard on this production, the results where underwhelming.&lt;br /&gt;&lt;br /&gt;First of for most of the show the scale was simply too big, and it was all the cast could do to run to their places and while the same music played over and over again. &lt;br /&gt;&lt;br /&gt;The first supposidly big scene was the galley fight, only it made no sense as while the romans came in on a galley, the pirates arrived on foot. Watching the one, admididly huge galley being assembled was frankly a little boring. Really why not use smaller ships that can actually move about the stage and have somthing that looks like a real navel battle?&lt;br /&gt;&lt;br /&gt;Then we get tot the biggest let-down of the night, gladiators who spend all their time wrestling. The excuse that they could not use weapons for occupational health and safety reasons seemed absurd. I can go down to any toy or costume shop and get reasonable looking weapons (that are considered safe for children), and with their huge budget they couldn't get something made that was safe but looked passable (considerthing the distance that the audience is viewing at?&lt;br /&gt;&lt;br /&gt;Then finally we come to the highlight of the night, the chariot race. OK this was a moment of sheer awesome that could not be done any other way. However we are talking about 5 - 10 minutes of awesome out of two hours.  &lt;br /&gt;&lt;br /&gt;In the end, It was good, but not good enough for me to feel I got my moneys worth.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5539235260395642217?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5539235260395642217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5539235260395642217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5539235260395642217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5539235260395642217'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/10/ben-hur.html' title='Ben Hur'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1821186007301272716</id><published>2010-08-09T04:00:00.000-07:00</published><updated>2010-08-09T04:02:03.315-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>gofr</title><content type='html'>Well it turns out that &lt;a href="https://bitbucket.org/kylelemons/gofr/wiki/Home"&gt;gofr&lt;/a&gt; does exactly what I want. so yay to the author, and yay for my little pet project, looks like most of the Yak's will have to be shaved another day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1821186007301272716?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1821186007301272716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1821186007301272716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1821186007301272716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1821186007301272716'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/08/gofr.html' title='gofr'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1747438525669099058</id><published>2010-08-08T21:45:00.000-07:00</published><updated>2010-08-08T22:28:22.868-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>What bugs me about Go</title><content type='html'>Putting language design aside entirely, because lets face it every programmer has a different idea of what should, and should not, be in the perfect language, there is one thing that is beginning to really bug me about go. &lt;br /&gt;&lt;br /&gt;And that is how poorly documented the command line tools are. Firstly see the Plan 9 docs at http... is positively useless to me when I'm on the train with no internet access. Which is a good percentage of the time.&lt;br /&gt;&lt;br /&gt;I've been wresting for several days with trying to set up a build system for a multi package project. The documentation for cgo says see the make file, which was not at all illustrative, especially as the make file does not seem to contain any rules that actually call the cgo! All we seem to get is a lot of messing about with intermediary C files. And trying to dig deeper just ends up at the completely undocumented gomake program. &lt;br /&gt;&lt;br /&gt;Then my second problem is that I don't want to install the resultant package globally I'm using it in exactly one particular project. Installing it globally for my system is completely the wrong thing to do, especially as I'll be going back an making frequent changes to it, And my ultimate aim is to produce a standalone executable. &lt;br /&gt;&lt;br /&gt;The depressing thing is that in this particular instance even the mailing list seems to be of little help. Searching through the archive suggests that no one has gotten an answer to this question. Every thread I found is filled with people saying yes I have this problem too. And the odd, the I have this problem too so I've started writing a build tool variation. I've started yet another thread about this though, just in case I have better results .&lt;br /&gt;&lt;br /&gt;So far the only tool I've found that at least claims to handle cgo is &lt;a href="https://bitbucket.org/kylelemons/gofr/wiki/Home"&gt;gofr&lt;/a&gt;. Sadly it seems to be a little out of date at the moment and won't actually compile at. All in all my pet project is delayed, because I've got a Yak or two to shave...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS: Yes I know its open source, and I would happily contribute documentation, if I actually knew how to solve the problem. Which sadly I do not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1747438525669099058?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1747438525669099058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1747438525669099058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1747438525669099058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1747438525669099058'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/08/what-bugs-me-about-go.html' title='What bugs me about Go'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1523227421506688462</id><published>2010-07-25T18:03:00.000-07:00</published><updated>2010-07-25T18:18:43.050-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>More NCurses</title><content type='html'>Since someone actually commented on my original post here is a status update&lt;br /&gt;I've actually moved to starting again from scratch, with a wrapper that is more modern than the one I found (It still had semicolons at the end of each line). My new version is already somewhat more comprehensive though nowhere near complete.&lt;br /&gt;&lt;br /&gt;One of the changes I've made is to allow method chaining so instead of adding the move and do X method for every single operation I have a Mv and Color and Set (as in attrset) which return the window you called them on. This allows calls like:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-family:monospace;"&gt;window.Mv(10,10).Set(curses.A_BOLD).COLOR(4).AddStr("Hello World")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;or better yet:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;fmt.FPrintf(window(10,10).Set(curses.A_BOLD).COLOR(4), "Hello World")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yes I made Ncurses Window type implement the Writer interface : )&lt;br /&gt;&lt;br /&gt;And as to releasing it back. I absolutely plan too. Though I still have a few Items I want to get working first such as:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Make my InitScreen take configuration options so that it can set things like CBreak, NoEcho and Keypad for you (I already have it initilising the color system if required.&lt;/li&gt;&lt;li&gt;Implement the border drawing primitives though this is just fairly mechanical work.&lt;/li&gt;&lt;li&gt;Add basic wrappers for the related panel, and menu libraries. I'm still trying to decide how all this should be packaged.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1523227421506688462?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1523227421506688462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1523227421506688462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1523227421506688462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1523227421506688462'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/07/more-ncurses.html' title='More NCurses'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-7016959098894335528</id><published>2010-07-22T17:40:00.000-07:00</published><updated>2010-07-22T17:51:16.193-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Messing about NCurses and Go</title><content type='html'>So recently I update by go installation and then installed an ncurses library. I quickly discoverd that the ncurses wrapper is incomplete and tends to not be very goanic.&lt;br /&gt;&lt;br /&gt;So far I've added a whole host of missing methods and changed a few others. I also added a Write method which lets ncurses Windows work with the methods in the fmt package. I'll have to see if the original author is interested in my changes as I do seem to be taking the wrapper in a  slightly different direction. &lt;br /&gt;&lt;br /&gt;All together it has been an interesting way of playing with the go language.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-7016959098894335528?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/7016959098894335528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=7016959098894335528' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/7016959098894335528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/7016959098894335528'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/07/messing-about-ncurses-and-go.html' title='Messing about NCurses and Go'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-6269681377912127230</id><published>2010-07-21T16:24:00.000-07:00</published><updated>2010-07-21T16:31:20.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='movie'/><title type='text'>The Hogfather</title><content type='html'>I finally got around to seeing the Hogfather. It was good, but not as good as the book. I suspect that the problem may be that it is hard to translate Pratchett to the screen. The Discworld definitely can be a dark place. But it is also a very funny one. The film treatment had the darkness down, but lacked the humor. &lt;br /&gt;&lt;br /&gt;It was marked as PG so I thought I would watch it with my boys however we only got a few scenes in before I decided that it was likely to give them nightmares.&lt;br /&gt;&lt;br /&gt;Often the humor in Discworld is not in what the characters see but how it is described and what they think in reaction to it, and there are also frequent side thoughts and even the odd footnote (even some of the footnotes have footnotes). All of this is hard to get into a medium that uses images rather then words to describe, and considers it bad form to make thoughts audible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-6269681377912127230?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/6269681377912127230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=6269681377912127230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6269681377912127230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6269681377912127230'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/07/hogfather.html' title='The Hogfather'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-3462758617639028016</id><published>2010-05-26T22:48:00.001-07:00</published><updated>2010-05-26T23:00:42.433-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quack'/><title type='text'>Naturopathy</title><content type='html'>Attention all Naturopaths. The good news science has proved that there is a &lt;a href="http://www.nature.com/nature/journal/v434/n7030/full/nature03383.html"&gt;water memory effect&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The bad news is that it lasts for less than a Nano second, so yet again all available evidence suggest that you are all Quacks.&lt;br /&gt;&lt;br /&gt;Yes there are real and legitimate herbal readies, However naturopathic water is not one of them. Any benefits gained by your &lt;strike&gt;marks&lt;/strike&gt; clients are a result of the placebo effect.&lt;br /&gt;&lt;br /&gt;For more on &lt;strike&gt;Quckery&lt;/strike&gt; Naturopathy see the following links:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.skepdic.com/natpathy.html"&gt;Skeptics Dictionary&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://scienceblogs.com/pharyngula/2010/02/christopher_maloney_is_a_quack.php"&gt;Blog post about a &lt;strike&gt;Quack&lt;/strike&gt; Naturopath who tried to censor the internet&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-3462758617639028016?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/3462758617639028016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=3462758617639028016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3462758617639028016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3462758617639028016'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/05/naturopathy.html' title='Naturopathy'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1957795384458958670</id><published>2010-05-18T17:38:00.000-07:00</published><updated>2010-05-20T18:56:26.832-07:00</updated><title type='text'>Maximum Ride</title><content type='html'>&lt;p&gt;I'm currently reading some books by &lt;a href="http://www.jamespatterson.com/"&gt;James Patterson&lt;/a&gt;. I started with 'Maximum Ride: The Angel Experiment', then moved on to the original 'When the Wind Blows'. Its interesting to see the same author give the same setup two treatments&lt;/p&gt;&lt;p&gt;On balance I like the original more. As its somewhat purer and closer to the potential science. A girl who's arms are wings makes genetic sense, even though a human sized creature would not be able to fly under current Earth conditions.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In contrast the six limbed children of the Maximum Ride series are pure fantasy, as are the Erasers (techno babel for werewolf). And I have to say all the additional random powers give that set of books a very X men vibe, which I just didn't find that entertaining. Especially when one of the bird children finds that she can also breath under water, using invisible vents in her neck.&lt;/p&gt;&lt;p&gt;I'm also reminded of why I tend to stay away from Suspense Thrillers. Patterson's style is to use short sharp chapters and rapidly shifting point of view, much like a movie. Occasionally making the amateurish mistake of shifting heads mid scene. Maybe its acceptable but I've studied the craft of writing enough to e jarred by it. In 'When the wind blows' this seems to particularly happen with the Thomas Harding character. He is hunting the bird children and there are numerous instances where Point of View shifts rapidly between him and Either Max or Mathew, then back again all on the one page&lt;/p&gt;&lt;p&gt;Its a pet peeve but I find the frequent changes of point of view and perspective (some chapters are in first person and others in third) jarring and a little confusing. So far in When the Wind blows I've counted nine points of few, and at least one chapter which I think was a flashback, though this isn't entirely clear. Suspense Thriller writers seem to do this an awful lot, Indeed the short section ending in the Point of view character being murdered is a stable of the field.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;For me one or two points of few is a far better approach. I recall seeing this done rather well by De Lint in Little Grrl Lost. Here we had TJ's story told consistently in 3rd person and Elizabeth's told consistently in first person. Each has one or more longish chapters to tell their story until it gets to some kind of narrative pause, or cliffhanger, before we switch.&lt;/p&gt;&lt;p&gt;So in summary I like the idea enough to soldier on, even if I find the way it has been written a little jarring.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Postscript&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-style: italic;"&gt;I''ve come to the conclusion that what this author needs as a tough editor, willing to call him on things. I suspect that what has happened is that Mr Patterson has gotten sufficiently successful that they publish his draft as is, with insufficient editing.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-style: italic;"&gt;I'm on 'The lake house' now and there is a host of the same problems. Switching between heads. Redundant chapters honestly why do we need to get a description of what is happening at the Hospital three times. OK the 3rd has a different point of view, but its still hopelessly redundant. Worst still we get this right at the beginning, with the name of the villein. Whats the point of a suspense novel where the reader knows who the villein is from the first chapter? Then we have Francis start naming the secret project even though she never actually found out the name of the project. Yes the reader knew but she didn't. And then finding out that the Good doctor has clones, Again ruin the suspense why don't you.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-style: italic;"&gt;I still like the story, but the way it is written is driving me up the wall.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1957795384458958670?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1957795384458958670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1957795384458958670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1957795384458958670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1957795384458958670'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/05/im-currently-reading-some-books-by.html' title='Maximum Ride'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-2285016320081262724</id><published>2010-05-11T17:11:00.000-07:00</published><updated>2010-05-11T17:23:59.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='religion'/><title type='text'>Thank God For Evolution - book review</title><content type='html'>In case you didn't know its a &lt;a href="http://thankgodforevolution.com/"&gt;book&lt;/a&gt; by Michael Dowd. I have to say that I admire the goal of this book. The Eco aware and inclusive theology that Dowd is trying to build is an admirable thing. However I fear that is has some rather serious problems as its based on a combination of bad science and misappropriated theology.&lt;br /&gt;&lt;br /&gt;Firstly the Science. Dowd is a fan of evolution. However he tries to make the leap from Darwinian evolution, an established biological process, to evolution as the underlying principle of the universe. And here we have made the error that Creationists love to see. Because quite frankly Evolution as a paradigm of everything is not a scientific theory, and can be easily blown out of the water. Doing so does nothing to biological evolution,despite what Creationists would like you to believe.&lt;br /&gt;&lt;br /&gt;In any case Dowd's evolution seems to be a synonym for emergence and the argument that the Ultimate Reality which is God and the universe simultaneously (Dowd is a pantheist), is evolving. This seems flawed as by definition Ultimate reality is a closed system, and being closed is subject to the second law of thermodynamics. For me that really is the end of that one. Note this same, creationist  argument is wrong when applied to Biological evolution as the Earths biosphere is not a closed system, it receives energy from the sun, and emits waste energy back into space constantly.&lt;br /&gt;&lt;br /&gt;Dowd then spends a lot of time on the ideas of Evolutionary Psychology, which is a relatively young approach and does have its detractors. But simply we have the old nature vs nurture debate and the fact that we are not certain how our behavior is shaped by our genes and experiences.&lt;br /&gt;&lt;br /&gt;Despite this, his view of self growth is quite a compelling one. The basic idea is to look at places where you had the wrong reaction (in hind sight) and ask why, then answer along the lines of, I had this reaction because of my evolutionary legacy, and the fact that this same pattern of behavior allowed my distant ancestors to survive. Its an interesting way of accepting the past without assigning blame to yourself or others, and in some cases might by just what you need to do.&lt;br /&gt;&lt;br /&gt;The danger here for Dowd is that he has pinned his argument on contentious science. And if Psychology decides that the evolutionary approach is not useful, then Dowd's entire argument will become irrelevant. All in all I really feel this is pseudoscience pretending to be the real thing. And in this regard is not any better then Scientific Creationism.&lt;br /&gt;&lt;br /&gt;This is followed by a number of practices, including generic meditation and self honesty aimed at self improvement. They seem like good solid things to do, and I have to say I lack the courage to attempt some of them. I haven't however read enough self help literature to know if there is anything new here or not.&lt;br /&gt;&lt;br /&gt;Finally we come to Dowd's theology. And here I do not think he is being intellectually honest. The problem being that Dowd desperately wants to cling to the conviction that his pantheistic, miracle free, uncommitted about any afterlife theology is still a Christian Theology. So we have several chapters on how selected stories from the bible can be interpreted as metaphors for the evolutionary emergence of human being and human morality. Granted Maybe my personal reactions against the Christian myths is causing me to be overly bias, but I just cant see this working.&lt;br /&gt;&lt;br /&gt;The problem for Dowd I believe is that every Christian authority I can think of has, at some stage or other, denounced pantheism. Most recently they did so in response to the move Avatar. Yes it had pretty pictures but there was no plot people, let alone a theological message worth mentioning. So he is trying to take Christianity that it has already looked at and rejected.&lt;br /&gt;&lt;br /&gt;And in the end I would have to agree that when you take the Christian message, then take away all literalism. When you argue that the virgin birth and resurrection where just put in because 1st century people would not take the message seriously with out it, what you have left is a great idea but its not what it was.&lt;br /&gt;&lt;br /&gt;Dowd's theology is not bad. It is in my opinion quite good but it needs its own myths and stories. Indeed his website tries to provide several. And if your going to do this shackling yourself to a two thousand year old book is really more trouble then its worth.&lt;br /&gt;&lt;br /&gt;So to sum up. I like the theology Dowd is trying to build. His practices for personal development are great. However the over reliance on evolution as a model of everything makes it scientifically questionable. And the attempt to dress it up in Christian language seems redundant, and possibly counter productive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-2285016320081262724?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/2285016320081262724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=2285016320081262724' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2285016320081262724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2285016320081262724'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/05/thank-god-for-evolution-book-review.html' title='Thank God For Evolution - book review'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1916027135761814544</id><published>2010-04-07T20:42:00.000-07:00</published><updated>2010-04-07T21:06:49.166-07:00</updated><title type='text'>Grimm RPG</title><content type='html'>I recently acquired a copy of &lt;a href="http://www.fantasyflightgames.com/edge_minisite.asp?eidm=63"&gt;Grimm RPG&lt;/a&gt;. Its a twisted fairytale setting. And uses its own Unique mechanic called &lt;a href="http://www.fantasyflightgames.com/ffg_content/grimm/media/lineard6.pdf"&gt;Linear D6 (PDF)&lt;/a&gt;. I have to say that I really, really like the mechanic, and can see a lot of potential for it outside of the setting.&lt;br /&gt;&lt;br /&gt;In particular is about the only system I know of that represents teamwork as a game mechanic, by allowing the players to pool their dice together for one big roll, which stands a good chance of getting a higher result than any one of them could have achieved individually.&lt;br /&gt;&lt;br /&gt;I'm thinking this would work quite well in a lot for Anime inspired games. Especially ones that have similarly aged protagonists and an emphasis on teamwork and combo attacks against more powerful single opponents. The magic system which requires casters to build up power over multiple turns would also fit right in to many Anime worlds (Picturing Goku building up to unleash an energy blast, didn't he once do this for 6 episodes in a row before having his effect fizzle out).&lt;br /&gt;&lt;br /&gt;The handling of size difference in combat situations is also very nice and graceful. I haven't really considered weather its realistic or not (then again I don't really care that much). But it does lead to a nice game balance in a game that can include kids facing off against giants.&lt;br /&gt;&lt;br /&gt;Finally we get to the setting its self. And here is where Grimm really shines. The twisted fairytale world created is absolutly brilliant and includes elements both comic and absolutly terrifying. The idea of having Humpty Dumpty (now cracked and slowly rotting) being the source of corruption in the land of fairy tales is simply inspired. Other characters are similarly twisted, from a sadistic Cinderella to a a mad tooth fairy that has decided that simply pulling teeth is more efficient then waiting for them to fall out.&lt;br /&gt;&lt;br /&gt;Setting details carry right through to the naming of traits and talents on the character sheet. Where Cool replaces Charisma and Imagination replaces Intelligence. WHile other games might divide skills into physical and mental Grimm divides them into Playground and Study.  And all of them being measured by a grade level between 1 and 12.&lt;br /&gt;&lt;br /&gt;Currently I'm experimenting with running a campaign online using Google wave as my play area. But I can't give any more details here as the some of people I've invited to play know where to find this blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1916027135761814544?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1916027135761814544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1916027135761814544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1916027135761814544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1916027135761814544'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/04/grimm-rpg.html' title='Grimm RPG'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-6586136188123673947</id><published>2010-02-26T14:46:00.001-08:00</published><updated>2010-02-26T14:48:47.578-08:00</updated><title type='text'>A little light spam</title><content type='html'>I actually had comments on a few of my posts. Except it turned out that they where both spam. One was an advert for cheep pharmaceuticals and the other an aside about the 2012 nonsense, that even the Mayans don't actually believe in. Oh well, here's hoping for more relevent comments in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-6586136188123673947?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/6586136188123673947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=6586136188123673947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6586136188123673947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6586136188123673947'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/02/little-light-spam.html' title='A little light spam'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-6345246144922225659</id><published>2010-02-26T02:28:00.000-08:00</published><updated>2010-02-26T02:34:08.127-08:00</updated><title type='text'>NW RPG Update</title><content type='html'>I think I have my RPG rules where I want them. All I need now is a new name. I'd iike to keep the Initials though, if I can come up with something useful. One nice feature Is that character generation can be quick. I Sat down (admit idly with a basic concept in mind) and had the character sheet filled in, in well under 10 minutes. I made a Miu (A Cat boy) who as Cat people are want to be has rouge based skills, and is reasonably handy with a Dagger.&lt;br /&gt;&lt;br /&gt;So I have this, and some screens and some Adventure ideas. I'm getting my Boys to decorate their own Screens and character sheets. All I have to do is set up stats for the actual monsters (I have basic templates) and I'll we'll have a short dungeon Crawl on the weekend. Then somthing a little longer latter on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-6345246144922225659?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/6345246144922225659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=6345246144922225659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6345246144922225659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6345246144922225659'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/02/nw-rpg-update.html' title='NW RPG Update'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5680003908665687200</id><published>2010-02-15T18:10:00.000-08:00</published><updated>2010-02-15T18:17:51.139-08:00</updated><title type='text'>My Homebrew RPG</title><content type='html'>Someone has informed me that I was beaten to the punch with the Never World name. Well there goes a long held idea that has had its day I guess. I actually have cover art that I made a good 20 years ago for my Never Worlds (yes I had an S on it back then) rulebook. I didn't have any idea of what would go into it, just the Idea that I would write an RPG called Never Worlds one day. &lt;br /&gt;&lt;br /&gt;Other than that I spent soem time coming up with a moderatly different setting and a set of customised races for my game. Only to have my Sons (aged 5 and 7) declare that they wanted to be a Dwarf and an Elf (or a Dragonian) respectively. So there goes my desire for an original setting.&lt;br /&gt;&lt;br /&gt;At the moment I'm wrestling with getting a magic system that I'm happy with, and really haven't had much traction on the idea so far. I'm still wavering on how customizable spells should be, and casters will need to pay for using magic. I originally wrote customizable spells which do not have set duration or number of effects but now I'm thinking that this should be changed to a more riged set of effects so that spells have a fixed cost. &lt;br /&gt;And maybe a generic rule about maintaining spells once they are cast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5680003908665687200?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5680003908665687200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5680003908665687200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5680003908665687200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5680003908665687200'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/02/my-homebrew-rpg.html' title='My Homebrew RPG'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-8937418864991264637</id><published>2010-02-14T04:03:00.000-08:00</published><updated>2010-05-23T18:37:59.114-07:00</updated><title type='text'>Never World RPG 2nd instalment</title><content type='html'>Minor tweaking has continued so to speak. Mostly I've been trying to simplify things, make skills work more consistently with each other and remove as many modifieres and rolls as possible. At the same time i don't want to loose variability too much. In the process I found more inspiration here and there. Including some even better ideas about how wounds should work. These let me get rid of the large, and very clunky table of Damage classes, and the need to roll damage as a seperate activity.&lt;br /&gt;&lt;br /&gt;Now I'm down to a system where the Attacker will make one roll, and the defender might make one roll, if they are wounded.&lt;br /&gt;&lt;br /&gt;I'm still increasingly happy with the rules and have even managed to get a character sheet together which is simpler on the one hand and gets the important numbers down on the other. And all this while making space for a portrait as well. All together a good feeling.&lt;br /&gt;&lt;br /&gt;Now I just have to work on some of the other areas that have special dozens of special modifers like reaction rolls, hiding and sneaking etx. The goal is to ahve a set of tables that easily fit on half an A4 page, while still being readable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;PS: This post seems to be getting a lot of spam comments in Japanese, so I've been forced to disable further comments on it.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-8937418864991264637?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/8937418864991264637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=8937418864991264637' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/8937418864991264637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/8937418864991264637'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/02/never-world-rpg-2nd-instalment.html' title='Never World RPG 2nd instalment'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5641628489275759088</id><published>2010-02-08T15:46:00.000-08:00</published><updated>2010-02-08T16:27:23.911-08:00</updated><title type='text'>Creating An RPG</title><content type='html'>My latest pet project has been creating my own set of RPG rules. It has been an interesting to say the least. And an interesting one as I have morphed the rules through phases of expantion and contraction. The contractions mostly triggered when I realized my Character sheet was getting too complicated, and had too many modifiers and derived values.&lt;br /&gt;&lt;br /&gt;At it peak I simply had too many special skills that could mofify rolls made with other skills and the sheet had something like eight special purpose bonuses. I've now paired that back down to two. So you have bonuses for being very Strong and for being Very Dexterous. And if you use magic your main magic skill works that way as well.&lt;br /&gt;&lt;br /&gt;At some point I decided to change the damage system from hit points to a wound based system (which isn't so obviously numeric). Still a few simulated battles have shown me that it is workable and a basic (not combat optimized) starting character has a good chance of beating two goblins in a straight out fight.&lt;br /&gt;&lt;br /&gt;I've ended up with an essentially 2 Stat system Mind and Body as the main way of getting things done. Now all I have to do is some play testing and a lot of wording refinements. With so much flux I still have sections that refer to attributes and modifiers that no longer exist. Or give bonuses that are not relevant anymore. Or are simply not explained properly because I know what I mean.&lt;br /&gt;&lt;br /&gt;So my plan of action is:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Clean it up&lt;/li&gt;&lt;li&gt;Develop a setting&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Develop a starting adventure&lt;/li&gt;&lt;li&gt;Self publish&lt;/li&gt;&lt;li&gt;...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;immense Profit&lt;/li&gt;&lt;li&gt;Buy whats left of White Wolf, Games Workshop &amp;amp; Wizards of The Coast, after my RPG's success has driven them to near bankruptcy, mu ha ha ha.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Nothing could be simpler really (well except for point 5 there, that might require some reality manipulation).&lt;br /&gt;&lt;br /&gt;On the technical side I've used &lt;a href="http://mptw.tiddlyspot.com/"&gt;Monkey Pirate Tiddly Wiki&lt;/a&gt;. as my content creation engine. And it has been a very nice way to work, and rearrange and cross reference. I started with an ordinary TiddlyWiki but then I liked what MPTW added in terms of extra buttons and such. And it only took a little hacking of styles and macros to get a look and feel I was happy with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5641628489275759088?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5641628489275759088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5641628489275759088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5641628489275759088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5641628489275759088'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/02/creating-rpg.html' title='Creating An RPG'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-6472757750566923452</id><published>2010-01-31T17:32:00.000-08:00</published><updated>2010-01-31T18:03:11.840-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='movie'/><title type='text'>Avatar is over hyped</title><content type='html'>I saw Avatar this weekend and it was an extreme letdown. Well lets start with the good point. The 3D CGI was gorgeous to look at. And Cameron really captured what I have always imagined that an enchanted forest should look like. And yes this was an enchanted forest, just because the Elves where blue 12 feet tall and had tails didn't change this fact. &lt;br /&gt;&lt;br /&gt;But once you get past the visual glamor you find a story filled with cardboard characters and plot holes you could fly a shuttle through.&lt;br /&gt;&lt;br /&gt;Firstly we have the bad guys: A corporate twerp and a trigger happy Duke Nukem lookalike who have somehow been put in charge of the companies most important mining operation. Its quite evident that neither is actually suitable for the jobs they are doing, and honestly I couldn't imagine them actually having such jobs. The Twerp especially seems completely dominated by his subordinates, there is no way he would have been able to get to that position in such a short order.&lt;br /&gt;&lt;br /&gt;The good Guys are euqally cardboard non entities. Even our hero (I can't even remember Jake Sulley seems aqkward and wooden pretty well all of the time. Especially towards the end of the movie he uttered some of the most jarring dialog I have ever heard. &lt;br /&gt;&lt;br /&gt;Then we have the Pilot (what ever her name was) who rescues the good guys from captivity. The problem is she has no real motivation to do so. here is a difference between refusing to fire on civilians and active rebellion (and willingness to fire on your former coworkers). She had been there for much longer then the hero and was one of the Marines. When she flew on the Navin side she knew she would be shooting at (and killing) people she had bantered with in the mess hall. More over she was pretty well condemning herself to permanent exile on Pandora. No matter which side one the only thing she could have hoped for if she returned to earth was a long jail sentence as a traiter, or on murder charges. &lt;br /&gt;&lt;br /&gt;Then we have the Navin who are steryotipical nobel savages. Theoretically great hunters and warriors who can't seem to get a thing right until lead by a Human Marine. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Why is it that the Navin aren't ready and waiting when the Humans come to destroy hometree ? They didn't even have their flyers ready, even though they had an hours warning. Surly they would have gotten their children and other non combatants out before a known attack force arrived. And be ready and waiting to drop fliers down on the helicopters. This is making their leaders look stupid.&lt;br /&gt;&lt;br /&gt;Why is it that their arrows are useless for the first half of the movie. The first Planet side scene a truck drives in with arrows sticking out of its wheel, and they barely penetrated (didn't even flatten the tire), then during the attack on Home Tree the arrows just bonce of the heleicopters. In the final battle however, when our hero is leading the Navin, suddenly their arrows can pierce through the Helicopter windscreens. Either they can or they can't And if they can they should have taken out a good number of the helicopters in the first battle.&lt;br /&gt;&lt;br /&gt;In any case the Humans had been their long enough for The Navin to know about metal and that their arrows can not pierce it (Would any sensible hunter waste ammunition, that had to be made by hand, firing at something he knows he cannot hurt. The humans seem to be quite capable of not wasting ammunition (even The Head of The Science team gets the idea).  &lt;br /&gt;&lt;br /&gt;Why is it that no one rides the armored herbivores (the ones that have gun poof Armour on their heads (WTF)) They look to me like the ultimate in heavy cavalry and if the Navin's link can tame the fiercest predator on their planet surly a herbivore would be tamable as well. What kind of idiot does a cavalry charge against machine guns? These are supposed to be hunters. Can't the find secure positions to stage an ambush, at least it would give them time to fire a few rounds of arrows before getting hit. Even a few pit traps would have helped. &lt;br /&gt;&lt;br /&gt;All in all the thing is that If the Navin are as in tune with their world as they are supposed to be, and their weapons are as capable. then they should have been able to wipe the floor with the human security forces without some ex human leading them. And if there not then his leadership would have been useless unless he could find better weapons somewhere, either stolen form humans or I don't know, the artifacts of an ancient Navin Civilization which the people had abandoned. &lt;br /&gt;&lt;br /&gt;The whole every creature (and even some of the plants) have exposed links for establishing direct neural connections thing was rather hard to accept too. It really deserved some kind of justification. THere was no hint that it was engineered and at the same time I can't see how it could have provided such an evolutionary advantage that every animal would have one. &lt;br /&gt;&lt;br /&gt;Then we have the Energy Vortex. Which is believed to be a very high energy electromagnetic field. Others have noted that such a field should have been quite devastating to humans (if not the local wildlife). However the fact that is selectively knocked out Sensors without affecting anything else is bizzar. Honestly It the flux is so strong that sensors don't work then why do the communicators continue to work? Heck even the computer systems should be affected (uneless they have special shielding). And what about the Avatars, which are also run by remote control but seem to have no restrictions on range (and are also unaffected by the flux).&lt;br /&gt;&lt;br /&gt;All in all I loved the visuals but hated the story, and at almost 3 hours a the middle third was frankly boring to sit through.     Recently there have been stories of Avatar being the highest grossing movie ever. This true in raw number however when corrected for inflation it comes in at 21st place (when I wrote this, though it is moving up). &lt;a href="http://boxofficemojo.com/alltime/adjusted.htm?adjust_yr=2010&amp;p=.htm"&gt;The actual record is still held by Gone with the Wind.&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-6472757750566923452?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/6472757750566923452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=6472757750566923452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6472757750566923452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6472757750566923452'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/01/avatar-is-over-hyped.html' title='Avatar is over hyped'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-8511336703333179757</id><published>2010-01-01T02:41:00.001-08:00</published><updated>2010-01-01T03:25:51.037-08:00</updated><title type='text'>Post Christian Morality</title><content type='html'>Quit a while back Australia introduced a citizenship test. At the time the local paper ran a quiz which claimed to contain questions from the actual test. One of the questions was about the guiding principle of Australian law, with answer options including 'Christian' and 'secular' and the obvious red herring of 'Sharia Law'.&lt;br /&gt;&lt;br /&gt;The correct answer, was 'Christian'. My partner however, who is catholic wanted to answer secularism. Which got me to thinking that in despite what we might like to claim she is right. I have very much grown up with post Christian values. And indeed ones which are in places opposed to most religious teachings. To me the key concept is the idea of personal freedom. If it harms none, do as you will. &lt;br /&gt;&lt;br /&gt;The fact that this also happens to be a key statement of Wicca is coincidence. However it flies in the face of judo christian tradition. Modern progressive churches do (I belive) accept some idea of free will to do. but they do not seem to attach any special moral meaning to it, other than a negative one where your free will gives you the right to damn yourself, or you can surrunder it and follow the church teachings and be saved. This is not however universal as soem Protestant denominations still teach the Calvinist idea that God has decided who is and who is not among the saved, and there is nothing you can do to change his mind.&lt;br /&gt;&lt;br /&gt;When I look at the ten commandments, Ignoring the various controversies about what is and isn't aprt of this set, I find that only three of them are enshrined in Australian law. We hare prohibited for Stealing, murdering and bearing false witness. But then again these are things that have been discovered by most successful societies around the world, though granted not all of them. &lt;br /&gt;&lt;br /&gt;As to the others. the first Thou shalt have no other god before me, is unconstitutional in Australia. Likewise for the making of idols. As we have freedom of religion. In other words the writers of the Australian constitution, following in the footsteps of the American founding fathers, said that the bible is wrong on that point. That to restrict the free practice of other religeions is morally wrong. So wrong in fact that the fact should be noted in the document of final arbitration. &lt;br /&gt;&lt;br /&gt;Adultry, taking the lords name in vain, and being rude to your parents may be considered bad form as it where but are not considered illegal. The last one about honouring your mother and father requires some careful thought in considering what a strict reading actually implies. to me it suggests following their orders qithout question, but what if said orders are themselves illegal. Is a child that is being abused dishonouring their parents if they report the abuse? Morally I'd have to say no, taking the commandment literally I'm not certain of the answer.&lt;br /&gt;&lt;br /&gt;Then we come to the idea of working on the Sabbath, and coveting of goods. Both of these seem to be part and parcel of capitalism. A good chunk of our economic activity is based on coveting and encouraging others to covet. On the whole we seem to have settled that coveting, while bad in excess, is necessary in moderation. Without it international trade would all but grid to a halt. Ditto for research and development, which is based on wanting to know and wanting to create.  &lt;br /&gt;&lt;br /&gt;So overall are we a Christian society then? One third of the ten commandments cannot be enforced because to do so would be against either the constitution or the established conventions of our society. The breaking of another third are either encouraged, tolerated or seen as a personal matters. This leaves only 1/3 which remain codified in law, and these are so common to the human race that they can hardly be called Christian values. So all in all I think that the idea that we are still a nation built on Christian ideals is demonstrably false. &lt;br /&gt;&lt;br /&gt;Then there are the many other points which we have made moral judgements on, but which the ten commandments are silent on. Chief among these is slavery. the then commandment eplicitly prohibits you from coveting your neighbours slaves (some transaltions say servant). This implied that your neighbour, and you, might actually own slaves. Similarly no mention is made of universal suffrage, racial or gender equality. Worst still the bible is consistently sexist, implicitly racist (certainly in the old testament), and has historically been used to justify the divine right of certain individuals over others. And yet our values say that these three things are important. Again we appear to be post Christian rather then Christian in our prevailing world view.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-8511336703333179757?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/8511336703333179757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=8511336703333179757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/8511336703333179757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/8511336703333179757'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2010/01/post-christian-morality.html' title='Post Christian Morality'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5612319062478164685</id><published>2009-12-18T18:06:00.001-08:00</published><updated>2009-12-18T18:20:02.006-08:00</updated><title type='text'>Climate Change and Scale</title><content type='html'>One thing that always annoys me about the climate change argument is that proponents of human driven climate change tend to focuse on the last few hundred years or at most thousand of years. This stikes me as odd considering that there has been life on earth for hundreds of millions of years.&lt;br /&gt;&lt;br /&gt;This is why I find the graph on &lt;a href="http://www.geocraft.com/WVFossils/Carboniferous_climate.html"&gt;this page&lt;/a&gt; very interesting.Firstly for most of the history of life on earth the atmosperic carbon level has been well over 1000 parts per million, and we are talking about levels between 400  -500 as dangerous irreversible climate change. The other thing that the graph seems to show is that the earths stable average temperature iis about 22 degrees. &lt;br /&gt;&lt;br /&gt;SO on a geologival tiemscale the current averages of 16 degrees is markedly below average, it is then little wonder that the world is trying to get warmer. There is strong evidence that higher carbon levels lead cause photosynthesis and plant growth to accelerate.&lt;br /&gt;&lt;br /&gt;Granted that our evolutionary history has occured during an ice age (while there are icecaps we are essentially in an ice age). So all in all while I support moves to reduce human pollution of the environment I remain strongly skeptical of the Climate change claims and associated agenda. Especially as this position is increasingly becoming a doctrine held by its proponent with religious zeel, this includes deliberate steps to sideline or suppress any and all contrary options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5612319062478164685?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5612319062478164685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5612319062478164685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5612319062478164685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5612319062478164685'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/12/climate-change-and-scale.html' title='Climate Change and Scale'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5522910234440905452</id><published>2009-12-10T13:59:00.000-08:00</published><updated>2009-12-10T14:20:31.717-08:00</updated><title type='text'>The Death of Science</title><content type='html'>The following article "&lt;a href="http://online.wsj.com/article/SB10001424052748704107104574572091993737848.html?mod=loomia&amp;loomia_si=t0:a16:g2:r2:c0.05417:b29264966"&gt;Climategate: Science Is Dying&lt;/a&gt;" caught my eye recently. I hate to break it to Mr Henninger but the fact that scientists are human and that academia is rife with internal politics has been an open secret for many many years. At least for anyone involved in science or academia in any case. Seriously anyone who has gone to University and paid even a little bit of attention should be aware of this.&lt;br /&gt;&lt;br /&gt;The whole topic was covered back in the Sixties by THomas Kuhn in &lt;a href="http://en.wikipedia.org/wiki/The_Structure_of_Scientific_Revolutions"&gt;The Structure of Scientific Revolutions&lt;/a&gt;. In a nutshell new ideas tend to get taken up by young scientists just getting started. To a large extent the peer review process favors older established theories, especially in highly specialized publications where reviewers are likely to have a conflict of interest against publishing things that will invalidate their own past works. So what you tend to get is generational change. The old theory only dies when most of its proponents have retired. &lt;br /&gt;&lt;br /&gt;These days we as a society have far outgrown the romantic notion of Science as the great savior that can do no wrong. That is why research has to be screened through ethics committees.  In Psychology many of the pivotal experiments conducted in the first half of the 20th century frequently involved inflicting potentially serious mental trauma on unsuspecting volunteers such as &lt;a href="http://www.youtube.com/watch?v=BcvSNg0HZwk"&gt;the Milgram study&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But then again Kuhn didn't really reach that wide of a general audience. So maybe Climategate will have an impact on the perception of science in the general community. Far from being a bad thing it will help the general public to see science for the man made institution that it is. And in my opinion this is a good thing as accepting anything blindly and absolutly is demonstrably a bad thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5522910234440905452?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5522910234440905452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5522910234440905452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5522910234440905452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5522910234440905452'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/12/death-of-science.html' title='The Death of Science'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-6976089140982974704</id><published>2009-11-17T15:33:00.001-08:00</published><updated>2009-11-17T15:48:55.490-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Sports Funding</title><content type='html'>So the Australian Federal government got back its report on sports funding. In a nutshell it says stop spending big bugs on a handful of professional athletes and put the money where it will have an impact on the general health of the population. Personally I could not agree more. &lt;br /&gt;&lt;br /&gt;There are 22 Million people in Australia. I don't see any reason why we should be more capable at sport then Americans of whom there are 300 million. so It stands to reason that they will produce ten times as many world class athletes as we will. It should be noted that we also have no chance of outspending the country that is still the worlds largest economy. &lt;br /&gt;&lt;br /&gt;The Dummy spit by the head of our Olympic Committee was to be expected. But then again I have little respect for an organization which globally almost sees its self as above the law. Heck they have managed to pressure government to make special laws for them at several Olympic games recently. Then again the AOC position seems to be based on the tricle down economics. That seeing Australians win gold will make Obese kids want to get out and play sport. No it dosn't work, instead they'll send a hero TXT. WHile waithing for their high sugar high fat food items to be put into a brown paper bag (produced by a proud sponsor of the Australian Olympic team naturally).&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.smh.com.au"&gt;Sydney Morning Herald&lt;/a&gt; has a number of articles exploring both sides of this issue, though none of them allow you to leave comments. Personally, as a tax payer I agree with the report. I'd rather see my tax dollars go into local sporting facilities then into the chase for Olympic gold.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-6976089140982974704?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/6976089140982974704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=6976089140982974704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6976089140982974704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6976089140982974704'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/11/sports-funding.html' title='Sports Funding'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-2977797927905619231</id><published>2009-11-16T20:52:00.000-08:00</published><updated>2009-11-16T21:05:34.320-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Why Go is a good thing</title><content type='html'>I've seen quite a few posts and comments on blogs along the lines of go is just a crap version of X I can't understand why google is wasting time on it, instead of (just using | improving) X. There are several answers to this.&lt;br /&gt;&lt;br /&gt;Firstly Go is probably different from X and does not have the same stated goals as X. Especialy where X turns out to be a high level programming language that has a very large runtime, or runs in a VM or is interpreted. &lt;br /&gt;&lt;br /&gt;Secondly Diversity is good. Think of Go as just another mutation of C, which has some new and useful features. Having written a few tiny programs I can see two so far. The first is that even though we are statically typed it is amazing how rarely a type actually appears outside of a method signature. The implicit typing that occurs when you set variables to initial values gets things correct an awful lot of the time. And the big one is concurrency. Everyone knows that programming concurrent software is hard. As the trend these days seems to be to multi core CPU's it is also becoming a very important area. Big thing is that Every program I have written so far has included gorouteens. they are a great way to generate data (if any place you would be inclined to use a generator in Python you'll be creating a go routine.&lt;br /&gt;&lt;br /&gt;It occurs to be that a list comprehension style syntax for defining generators would by handy here. But thats just sugar as it where and I can definitely live without it, much as I have been able to live without anonymous functions in python. &lt;br /&gt;&lt;br /&gt;I think that Go is a worth while addition to the programming language ecosystem. And this is true weather it survives or becomes extinct.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-2977797927905619231?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/2977797927905619231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=2977797927905619231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2977797927905619231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2977797927905619231'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/11/why-go-is-good-thing.html' title='Why Go is a good thing'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-521561455740768026</id><published>2009-11-16T16:06:00.000-08:00</published><updated>2009-11-16T16:18:05.753-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Generics or Bust</title><content type='html'>I have to add my voice to the choir calling for generics to be added to Go. As others have noted Go contains no fewer than four parametrized types: arrays, slices, maps and channels. Such types are so mandatory that it seems impossible to build a programming language without them. &lt;br /&gt;&lt;br /&gt;And it is an annoying asymmetry that I as a programmer can't define an equally parametrized linked list or binary tree type. I expect that these will come eventually. My hope is that it will be sooner rather than later though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-521561455740768026?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/521561455740768026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=521561455740768026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/521561455740768026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/521561455740768026'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/11/generics-or-bust.html' title='Generics or Bust'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-4684319808236814579</id><published>2009-11-14T20:01:00.000-08:00</published><updated>2009-11-14T20:20:29.415-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='go'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>The Go Language</title><content type='html'>So there is a &lt;a href="http://golang.org"&gt;new language&lt;/a&gt; in town. Having gone through all of the docs I have to say it looks interesting. The need to destinguish between new and make is a little messy, the language FAQ agnoledge this however. &lt;br /&gt;&lt;br /&gt;I like the type system, with the implicitly implemented interfaces. It does look like Go programs will involve quite frequent casting. Ditto for the built in concurrency primitives, and I expect that most programs will make quite frequent use of them. Where in Pthon I might use a generator I could well see myself using a goroutine in Go, and getting my generated items from a channel.&lt;br /&gt;&lt;br /&gt;A lot of effort has been made to make the language terse, which is a nice feature for a low level language to have. And yes making switch statements default to breaking at the end of each case unless told otherwise. Thank you finally a language that reflects how switch is actually used! &lt;br /&gt;&lt;br /&gt;Personally i don't see why they didn't just call the looping construct loop, rather then for. seeing as it is a general purpose looping construct that can be invoked in several ways that look nothing like a traditional for loop. Still this is a minor thing.&lt;br /&gt;&lt;br /&gt;What does look certain is that Go programs aren't going to look much like C or java, once enough people learn how to use the language natively. The basic constructs are just different. &lt;br /&gt;&lt;br /&gt;Now that I've gotten this far its time to try some actual programming in Go. To this end I've retrieved the list of 99 Lisp problems and I'll see how I go in solving them using Go. Step one will be to build a linked list typo work with. It will be interesting to see how much mindshare Go can capture. And when we can expect a Windows version, lets face it lack of Windows support is glaring omission at present, even if I don't use Windows I still recognise its importance in the marketplace. (Now there's a scary thought Go.net ... its only a matter of time i suspect.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-4684319808236814579?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/4684319808236814579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=4684319808236814579' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4684319808236814579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4684319808236814579'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/11/go-language.html' title='The Go Language'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5200998091179176725</id><published>2009-11-11T21:28:00.000-08:00</published><updated>2009-11-11T21:30:18.911-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Lost in a Sea of Ideas</title><content type='html'>&lt;p&gt;The following is a repost as the original got spammed with junk comments and Blogger dosn't have an easy way to remove large numbers of comments in one hit without dropping the entire post. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;I have found myself lost in a sea of new concepts lately. Firstly I read Andrew Poltkin's presentation on &lt;a href="http://www.eblong.com/zarf/essays/rule-based-if/index.html"&gt;Rule based systems in Interactive Fiction&lt;/a&gt;. I have to say it was discouraging in terms of the RPG I was writing. Short point being that This is harder then you think it is.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Then I came across the following &lt;a href="http://www.google.com.au/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fwww.emn.fr%2Fx-info%2Femoose%2Falumni%2Fthesis%2Folopez.pdf&amp;ei=VRcGSqySDKiK6APXhdmSAw&amp;usg=AFQjCNGyuuOyJmvaR9ndCOHUzxF_nBfLvA&amp;sig2=GaLTd-2WhmrRWeH4QXGncQ"&gt;article&lt;/a&gt; (PDF). Which is an interesting read. And raises a point that I missed the last time I saw it. Namely stop treating JavaScript as it it was a class based language with awkward syntax.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The thing is that It is a prototype based language with two kinds of links, and a couple of missing functions. The big problem with learning to write JavaScript properly is that most tutorials make this mistake, And their is a lot of truly awful JavaScript code samples out their. &lt;/p&gt;&lt;p&gt;I don't really have any new insights on prototype based inheritance (yet), so if your interested have a look at Douglas Crockford's  &lt;a href="http://javascript.crockford.com/"&gt;JavaScript site&lt;/a&gt;. I won't pretend that I get everything Douglas is getting at but I'm convinced that he understands it and that this is a good place to start hacking.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;So where does this leave my project?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Up in the air a little. As I'm determined to do it right as it where. And need to teach myself how to operate effectively in a prototype based language. I'm pretty well sold that a rule based approach might be the best thing I can do. I encountered this when I tried to add conditional logic to my RPG, My conditional tests required inimate knowledge of how the engine stores its data, which seemed way to coupled. What I seemed to need was a simpler data organisation. I can't think of anything simpler then a flat database of facts, and that sounds pretty rule based. So Murphy's law is in full swing and I'm going back to the drawing board. Just as soon as I've learnt some new tricks&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5200998091179176725?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5200998091179176725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5200998091179176725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5200998091179176725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5200998091179176725'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/11/lost-in-sea-of-ideas.html' title='Lost in a Sea of Ideas'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-2627986714811736864</id><published>2009-11-02T22:16:00.000-08:00</published><updated>2009-11-02T22:19:53.394-08:00</updated><title type='text'>To misquote a classic</title><content type='html'>A long, long time ago...&lt;br /&gt;I can still remember&lt;br /&gt;How that code used to make me smile.&lt;br /&gt;And I knew if I had my chance&lt;br /&gt;That I could make those servers dance&lt;br /&gt;And, clients, they'd be happy for a while.&lt;br /&gt;&lt;br /&gt;But XML made me shiver&lt;br /&gt;With every page I'd deliver.&lt;br /&gt;Bad news in the log-file;&lt;br /&gt;I couldn't take one more crash.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-2627986714811736864?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/2627986714811736864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=2627986714811736864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2627986714811736864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2627986714811736864'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/11/to-misquote-classic.html' title='To misquote a classic'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1181636618929392534</id><published>2009-10-05T15:26:00.000-07:00</published><updated>2009-11-13T14:09:33.550-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='religion'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Obama Snubs the Dalai Lama</title><content type='html'>I read this morning that President Obama has avoided meeting the Dalai Lama. I can't help thinking that he has done the correct thing here. Like many Westerns I have for a long time tacitly supported the notion that China invaded and is a hostile occupying power in Tibet. &lt;br /&gt;&lt;br /&gt;However this may have been very much a case of I don't like Communism as a form of government and therefore the enemy of my enemy is my friend. The thing to ask is what the office of the Dalai Lama actually represented. The answer is that the office represents a brutal feudal theocracy. &lt;br /&gt;&lt;br /&gt;As &lt;a href="http://www.michaelparenti.org/Tibet.html"&gt;this article&lt;/a&gt; details up until the communist takeover Tibet was a feudal society which still practiced serfdom and mutilation as criminal punishment. Now the Chinese propaganda machine clearly has an agenda in perpetuating this view of history. I have no doubt that the do everything they can to exaggerate it. However I'm also certain that this position does have a factual base and should not be swept under the rug for convince. After all the west has an established history in supporting Dictatorships as a means of slowing the spread of communism.&lt;br /&gt;&lt;br /&gt;Now here lies an interesting conundrum. If you accept the official of Tibetan Buddhism then the current Dalai Lama is the reincarnation of his predecessors, which would make him directly responsible for all of the actions of the regime through the ages. If this is true then no matter how benign and peaceful an individual he appears to be he does not deserve any support form modern democracies.&lt;br /&gt;&lt;br /&gt;I just found &lt;a href="http://www.smh.com.au/world/china-evokes-abraham-lincoln-to-get-barack-support-on-tibet-20091113-ieqi.html"&gt;this related story&lt;/a&gt;. Personally The position of the independce spokesperson sounds rather stupid to me. It was only the ruling class in Tibet, which was not elected, that lost its ability to determine Tibet's future. I doubt that without an extrnal push the regime would have changed significantly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1181636618929392534?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1181636618929392534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1181636618929392534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1181636618929392534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1181636618929392534'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/10/obama-snubs-dalai-lama.html' title='Obama Snubs the Dalai Lama'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-266629853924627858</id><published>2009-09-18T05:31:00.000-07:00</published><updated>2009-09-18T05:38:19.642-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>A Bill of Rights for Australia</title><content type='html'>A while ago former Priminister John Howard wrote a very persuasive article about why Australia should not have a Bill of Rights. I have to say that after reading it I was convinced. He presented what seemed to be an excellent argument for how a Bill of Rights would reduce democracy.&lt;br /&gt;&lt;br /&gt;He argued that a Bill of Rights would shift power from the Legislature to the Judiciary. While he is right about that I find that I don't agree with his conclusion. And it all has to do with the concept of the two freedoms. A concept I first encountered in the dystopian novel 'The Handmaids Tale' by Margaret Atwood.&lt;br /&gt;&lt;br /&gt;The two freedoms are freedom to and freedom from. And the thing is that they frequently clash. In the so called war on Terror we all have lost some of our freedom to, in the name of freedom from. Mostly this has happened in the guise of special anti terror laws that reduce some individual rights in order to protect society from harm.&lt;br /&gt;&lt;br /&gt;More recently in Australia there has been the Internet censorship debate and the argument that to protect society from pedophilia we will have to restrict every ones Internet access. But we promise not to misuse this new censorship tool for any other purpose. Senator Conroy has argued vehemently that anyone who opposes him is supporting paedophilia and hence is morally corrupt. Not Senator I'm not supporting paedophilia I'm supporting my right to access information that the government of the day does not like. Promises that the blacklist will be limited to refused classification, with no public oversight, rings hollow to me. And are something you cannot promise in perpetuity. Instead I am certain that once the tool is there the government will come under immense pressure from lobbyists to use it against all sorts of information that some vocal minority find objectionable.&lt;br /&gt;&lt;br /&gt;Would freedom of information enshrined in a bill of rights prevent this? Maybe maybe not. John Howard wants to argue that its not a choice that should be left to judges. The thing is that the worst the high court could do is agree with the government that such a filter was not against the bill of rights. What they couldn't do is mandate one, that power would remain with the Legislature.&lt;br /&gt;&lt;br /&gt;What I have realised is that a Bill of right protects freedom to. But cares nothing about freedom from. In effect it says that some freedoms&lt;br /&gt;are so important to maintaining democracy that we are willing to sacrifice freedom from, to protect them. A Bill of rights gives the judiciary the power to say no this law can't stand as it would reduce the freedom to do X which is protected by the Bill of rights. Now the Judiciary can already do this for anything that is covered by the constitution, so this isn't really a new power.&lt;br /&gt;&lt;br /&gt;It seems to me to be a very good division of powers. Let the Judiciary protect freedom to and the Legislature protect freedom from. Because&lt;br /&gt;when it comes down to it a free and open society cannot exist without freedom to.&lt;br /&gt;&lt;br /&gt;So a bill of rights does, as Mr Howard claims, extend the power of the judiciary, but it does not give them new powers. The extension is very tightly focused and will in the end serve to strengthen democracy, just in case we ever make the mistake of electing a wannabe dictator into the highest office in the land.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-266629853924627858?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/266629853924627858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=266629853924627858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/266629853924627858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/266629853924627858'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/09/bill-of-rights-for-australia.html' title='A Bill of Rights for Australia'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-2885354550235279800</id><published>2009-08-09T23:12:00.000-07:00</published><updated>2009-08-09T23:32:18.539-07:00</updated><title type='text'>Social Networking</title><content type='html'>I read recently that use of facebook by teenagers has declined for the first time ever. Some time earlier I also read accounts of what happens when the first facebook high wears off and you start realising. Oh so anything I put on Facebook will be seen by my boss, and my parents and my mother in law and ... what have I created. Fortunately for me I don't believe that any one of the above individuals in my life actually have a Facebook profile. &lt;br /&gt;&lt;br /&gt;My Partner, has expressed similer annoyance with Facebook, where she has several groups of frends from different periods of her life. Very often something she wants to post is particularly relevant to one group and not the others. However having one networking sites all will see it, leaving some to scratch their heads and wonder what she is going on about. &lt;br /&gt;&lt;br /&gt;Recently I have joined site dedicated to a particular subject of interest. What I found inside was an entire social networking site (blog included). I've been thinking about this for a while and I think it makes sense. The Facebook Idea of one network site to rule them all is a bad one. Why, because we all have segments to our lives. Places where we don't want to expose to everyone we know for one reason or another.&lt;br /&gt;&lt;br /&gt;Interestingly this is one place where I don't even want interoperability. And their are certainly things I have posted in special interest sites that I don't want on my Facebook Page at the present moment. &lt;br /&gt;&lt;br /&gt;But why not just use the entire internet as your social networking site? well that comes down to the problem of finding other people with similar interests. Take this blog. Its on a general blogging site, and all things considered I don't know that anyone actually reads it. Often I feel its I get more of an audience by posting my thoughts to Facebook, then to recording them here. Ditto for special interest sites where my posts are guaranteed to be on topic and delivered to an audience who will be interested in some of what I have to say on the matter at hand.&lt;br /&gt;&lt;br /&gt;So it is natural that their will be an array of special interest social networking sites. Each with a target demographic of sorts, and many fostering particular special interests, whatever they may be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-2885354550235279800?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/2885354550235279800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=2885354550235279800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2885354550235279800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2885354550235279800'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/08/social-networking.html' title='Social Networking'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-3393784017370123939</id><published>2009-04-23T17:11:00.000-07:00</published><updated>2009-04-23T17:43:26.848-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>An RPG in JavaScript</title><content type='html'>&lt;p&gt;I've spent my train time for the last two weeks working on an wrting an JavaScript RPG (Thats Role Playing Game) system. The end result is intended to be a cross between the system used by&lt;a href="http://www.kingdomofloathing.com/"&gt; Kingdom of Loathing&lt;/a&gt; and a traditional text adventure.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So far I've been boged down with a lot of low level mechanics, and ensuring that all my objects can round trip between JavaScript and XML. &lt;a href="http://http//en.wikipedia.org/wiki/ECMAScript_for_XML"&gt;E4X&lt;/a&gt; makes this far less painful then it would otherwise be. The plan is to have a JavaScript game engine that executes XML based adventure files. Why XML? because JavaScript can allready parse it and it will be less cryptic then JSON. I'm musing that an adventure creator would also be nice, and would give me an excuse to play with XUL.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;E4X means that at the moment my engine will only run in Firefox. But then this is a hobby project and I have better things to do then deal with the Pandora's Box of cross browser issues. Especially as Firefox 3 already implements so many goodies from &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/"&gt;HTML5&lt;/a&gt; and  &lt;a href="http://www.ecma-international.org/news/PressReleases/PR_Ecma_finalises_major_revision_of_ECMAScript.htm"&gt;ECMAScript 5th Edition&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Though I can't wait for the next beta of &lt;a href="http://https//developer.mozilla.org/en/Firefox_3.5_for_developers"&gt;Firefox 3.5&lt;/a&gt; and the @font-face CSS property. That and border images Should really come in handy when I get around to putting an interface page together.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-3393784017370123939?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/3393784017370123939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=3393784017370123939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3393784017370123939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3393784017370123939'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/04/rpg-in-javascript.html' title='An RPG in JavaScript'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-3638450985701547133</id><published>2009-03-09T04:42:00.000-07:00</published><updated>2009-03-09T19:53:58.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='cairo'/><title type='text'>JSEXT</title><content type='html'>I've been playing with a javascript library, which works as both a command line, and server-side execution Environment. Its called &lt;a href="http://jsext.sourceforge.net/"&gt;JSEXT&lt;/a&gt; and is a rather interesting beast. plus you can call your server side functions from script that executes in the browser, and JSEXT will generate the boilerplate needed for the AJAX call automatically.&lt;br /&gt;&lt;br /&gt;For one thing it provides an incredible amount of auto loading magic, which sees it find not only functions in other javascript files but also in C header files. Any C library will effectively be usable form javascript. That got me thinking Cairo is a C library&lt;br /&gt;&lt;br /&gt;Getting the helloworld example from the &lt;a href="http://www.cairographics.org/FAQ/#minimal_C_program"&gt;Cairo FAQ&lt;/a&gt; going was reletivly simple. But JSEXT provides something better, an OO wrapper for the Cairo library. Granted I did have to check the source out from SVN and compile it to get them, and then sort out a couple of minor bugs in the wrapper.&lt;br /&gt;&lt;br /&gt;Anyway the following code is a slight modification of the basic example. This script is intended to be accessed from a web browser as title.jsx?"Insert your text here" and yes it works perfectly fine if you set the src attribute of an img tag.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function(str){&lt;br /&gt;    this.responseHeaders.contentType = "image/png";&lt;br /&gt;&lt;br /&gt;    var surf = new JSEXT1.Cairo.Surface.image("ARGB32", 800, 80);&lt;br /&gt;    var cr = surf.context();&lt;br /&gt;&lt;br /&gt;    with(cr){&lt;br /&gt;        selectFontFace("serif", "normal", "bold");&lt;br /&gt;        fontSize = 32;&lt;br /&gt;        source = [0, 0, 1];&lt;br /&gt;        moveTo(10, 50);&lt;br /&gt;        showText(str);&lt;br /&gt;    }&lt;br /&gt;    surf.writeToPNG(stdout);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Yes this is a file containing one anonymous function. This is one of the more curious features of JSEXT. You can give it a directory tree and it will walk it and build a set of Javascript objects based on what it finds. This does requie one method per file, which is somewhat unusual. But seems to work alright in practice. It is also uses lazy loading so only the methods you actually use get loaded into the runtime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-3638450985701547133?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/3638450985701547133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=3638450985701547133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3638450985701547133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3638450985701547133'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/03/jsext.html' title='JSEXT'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-2203108210469931415</id><published>2009-02-26T15:07:00.000-08:00</published><updated>2009-03-04T21:40:10.128-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Javascript Solution</title><content type='html'>I've been doing two things recently. Messing with CORBA and adding a small JavaScript effect to a web page. Working with CORBA is technical and challenging, and you would think interesting. To tell the truth CORBA has a somewhat unjustified bad reputation round the office. It dosn't fit perfectly to python, that is true, but it is still a very fast and reasonably secure way to do RPC. &lt;br /&gt;&lt;br /&gt;The little JavaScript solution was suprisingly more enjoyable. Now I don't do much fornt end work so I had to look up essentially everything, and had one approach not work, for no obvious reason that I could see. But on the whole it was more enjoyable. I suspect that the immediate visible feedback provided by making a change, reloading the page and seeing what would happen, had a lot to do with it.&lt;br /&gt;&lt;br /&gt;I'm think I can see more web design work in my near future. And more javascript. wxJavascript or GLUEScript as it is to be know from the next version onwards is worth a look. Especially as I like the wxWidget toolkit. Don't know if I'll be sufficently motivated to build it myself though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-2203108210469931415?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/2203108210469931415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=2203108210469931415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2203108210469931415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2203108210469931415'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/02/javascript-solution.html' title='Javascript Solution'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-2120319452583356280</id><published>2009-02-10T15:38:00.000-08:00</published><updated>2009-02-10T18:44:24.217-08:00</updated><title type='text'>Divine Retribution</title><content type='html'>I have to say that hearing anyone talk about divine retribution after a natural disaster makes my blood boil. Like &lt;a href="http://www.smh.com.au/national/pastors-abortion-dream-inflames-bushfire-tragedy-20090210-832f.html"&gt;this Individual&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Honestly their should be an ethical exam before anyone is allowed into a position of religious authority. This is the 21st century people. The lunacy of it is, as always, that the people hurt the most by the bushfire played no direct part in writing the laws Mr Nalliah is critical of.&lt;br /&gt;&lt;br /&gt;Mr Nalliah, I put it to you that if you dream of fire and brimstone it might be a premonition of your own fate. I trust, and hope, that your congregation does not hold with your absurd statements and will seek to remove you from office as expediently as possible. And let me finish by saying shut up you self deluded religious zealot.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;It turns out that &lt;a href="http://en.wikipedia.org/wiki/Danny_Nalliah"&gt;Mr Nalliah&lt;/a&gt; is no stranger to controversy. And has previously been found guilty of religious vilification. He also published a brochures that listed the religious buildings of other religions (along with Casinos and Brothels) as Satan's strongholds.&lt;br /&gt;&lt;br /&gt;This reinforces my decision at the last few elections to always list the &lt;a href="http://en.wikipedia.org/wiki/Family_First_Party"&gt;Family First Party&lt;/a&gt; last. I see them as far more sinister then some overtly Christian political parties as they make some attempt to conceal their affiliation with fundamentalist Christian groups.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-2120319452583356280?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/2120319452583356280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=2120319452583356280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2120319452583356280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2120319452583356280'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/02/divine-retribution.html' title='Divine Retribution'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-4730203239624582581</id><published>2009-01-21T15:29:00.000-08:00</published><updated>2009-01-21T16:13:48.970-08:00</updated><title type='text'>Read First. Then work out what to do</title><content type='html'>Even though I have relatively poor pitch perception, an equally poor sense of rhythm, I still like the idea of playing a musical instument. More precisely for I'm attracted to the woodwind family. I also have mild asthma so the deck is really stacked against me in terms of playing a woodwind.&lt;br /&gt;&lt;br /&gt;Most recently I've taken to playing the Alto recorder, this is slightly larger and lower pitched then the more common soprano records that tend to be used by school music programs. Knowing for past experience that it is quite easy to play out of tune even on woodwind I got myself a cromatic tuner, so as to give me some of the feedback that my ear doesn't quite provide. &lt;br /&gt;&lt;br /&gt;Their are two reasons I've shifted from Saxaphone to recorder:&lt;br /&gt; * I live in a unit and an Alto recorder is much softer then an Alto Saxaphone.&lt;br /&gt; * getting a recorder setup at the beginning of practice, and cleaned at the end takes much less time. It's smaller and their is no reed to mess about with. &lt;br /&gt;&lt;br /&gt;Reading part of the way through a book on Musical Scales and Temprement has really blown that theory out of the water. THe point is that my cormatic tuner is giving me methamatically precise Just Temperament. Which is essentially a set of compromises need to get keyboard instuments tuned into something usable. &lt;br /&gt;&lt;br /&gt;Now a Record does not have fixed intonation, if it did I would never have gone down the path of getting a tuner in the first place. WHat this means is that I should be aiming to play the real intervals, not the tempered intervals (especially when playing solo).&lt;br /&gt;&lt;br /&gt;Now the chromatic tuner wasn't a total loss, but it means how I use it will have to change. Rather than trying to get the tone exactly on the note the correct thing to do is to sharpen or flatten it based on the melodic progression. &lt;br /&gt;&lt;br /&gt;This will however require me to get my head around what the real intervals actually are. So far I know their names but don't quite follow how they relate to the notes of the scale. How sharps and flats actually work is particularly confusing me at the moment. Though I do know that they don't really coinside so that A sharp is slightly flatter then B flat, etc.&lt;br /&gt;&lt;br /&gt;This will take quite a lot of thinking an experimenting. I was planning to write myself some ear training programs relying on midi playback. However I may have to rethink my strategy here as I suspect MIDI uses Just Temperament.  So it will be a case of learning how to control the sound hardware to generate particular pitches including overtones. And then generating the correct intervals from their.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-4730203239624582581?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/4730203239624582581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=4730203239624582581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4730203239624582581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4730203239624582581'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2009/01/read-first-then-work-out-what-to-do.html' title='Read First. Then work out what to do'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5863935034975186685</id><published>2008-12-02T19:40:00.000-08:00</published><updated>2008-12-02T19:50:04.522-08:00</updated><title type='text'>64bit assembly</title><content type='html'>I've spent some time over the last few days looking for books and or tutorials on x86_64 assembly language. Much to my disappointment there dose not seem to be anything at the moment. &lt;br /&gt;&lt;br /&gt;If you look on forums the best answer you will get is learn x86_32 assembly then look here to see how 64 bit is different. This is fine if I allready knew 32 bit assembly but I don't I'm starting from scratch. So why should I waste time learning how to do things on on 8086, or even the 80386 when I want to write programs that run in 64 bit mode.&lt;br /&gt;&lt;br /&gt;Now I realise that there is an awful lot of common ground here but there are also important differences. There is an lot of legacy 32 bit and 16 bit ways of doing things which I don't strictly need to know when working in 64 bit mode. &lt;br /&gt;&lt;br /&gt;so Instead of following the evolution of the chips I want to start with today's chips and learn how to adapt that to yesterdays chips if or when I need it. For anyone reading this who knows x86_64 assembly, you should write a book, or at least a good tutorial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5863935034975186685?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5863935034975186685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5863935034975186685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5863935034975186685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5863935034975186685'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/12/64bit-assembly.html' title='64bit assembly'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-3313274967697190921</id><published>2008-10-20T19:21:00.000-07:00</published><updated>2008-10-21T17:04:04.009-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='goldfish'/><title type='text'>The tribulations of Setting up a Goldfish Tank</title><content type='html'>After spending the last three weeks setting up a goldfish tank I have to endorse the opinion that you should steer away from the generic pet stores. And I mean completely. &lt;br /&gt;&lt;br /&gt;Chances are the staff haven't a clue, and management couldn't care less, even if they are cheaper. Before I knew this I went down to the local generic store to buy the basic materials, a tank, a filter etc. I fooled myself into thinking I'd pay less by buying  basic glass tank, and compeltly failed to factor in the price of a filter and a light. Even on this score It's hard to tell if I came out ahead or behind.&lt;br /&gt;&lt;br /&gt;At every jucture I asked if item x was suitable for a cold freshwater aquarium. Turns out the gravel I brought wasn't, it buffered the water and drove up the Ph, so much so that I couldn't make it budge from a reading of 7.5 no matter how much ph down I put in. &lt;br /&gt;&lt;br /&gt;So I spent half a day replacing the gravel, with the stuff I got from an aquarium shop. Unlike the generic pet store these guys will not sell you a fish without testing a water sample first. When I complained about the buffering the first thing the Guy said to me was, you have white gravel don't you? And yes I did.&lt;br /&gt;&lt;br /&gt;So I went back to the pet store and asked for a refund on the gravel, No can't do that, Not responsible. The manager says in a I've got your money and I couldn't care less tone. Half way through the conversation after telling me how all his gravel comes from the same place he admits that the ph problems occurs, but stress that its not his responsibility, as its prepackaged. He says the black gravel can be even worse. Still after all this the only thing he offers is to replace it with another bag from the same place. Then turns his back on me to go and get money out of another customer.&lt;br /&gt;&lt;br /&gt;Needles to say I was ticked off (yes self censorship is going on here). Still I have new gravel and the ph is dropping towards where it's supposed to be, and I have learnt a lesson. Now all I have to do is find an alternate place to buy replacement pads for my filter, as I don't plan to give that particular shop any more of my money.&lt;br /&gt;&lt;br /&gt;I have half a mind to make a complaint to fair trading, would I be wasting their time on an item which cost $16.00 though?&lt;br /&gt;&lt;br /&gt;PS while fantails at the Pet shop were $1.50 cheaper even I could see the difference in quality. The fish I got from the Aquarium shop are shiny, with bright orange and gold scales. The ones at the Pet shop meanwhile don't look shiny at all, and have pale dull colours. If the fish weren't a different quality to begin with, clearly the petshop is doing something wrong to them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-3313274967697190921?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/3313274967697190921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=3313274967697190921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3313274967697190921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3313274967697190921'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/10/tribulations-of-setting-up-goldfish.html' title='The tribulations of Setting up a Goldfish Tank'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-4751743798696536051</id><published>2008-10-16T03:24:00.000-07:00</published><updated>2008-10-21T17:04:43.499-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='picolisp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>PicoLisp in a chroot</title><content type='html'>Picolisp has a nifty feature where you can include inline c code, and it will be automatically compiled for you, and just work.&lt;br /&gt;&lt;br /&gt;Unfortunately I'm on a 64 system, and pico dosn't at the moment compile under 64 bit. Now I'm told that if I install the right things and tweak the right options I can get 32 bit binaries to compile anyway. But that involves modifying the upstream source and I don't like doing that, unless I plan to submit a patch.&lt;br /&gt;&lt;br /&gt;In this case It seemed somewhat pointless. So I though I'd try setting pico up in a chrooted environment. I came accross the following post on the matter: &lt;a href="http://www.google.com/url?sa=U&amp;amp;start=1&amp;amp;q=http://www.debian-administration.org/articles/356&amp;amp;usg=AFQjCNFQ0bD6uchZYohhnecBHgvEl7813g"&gt;Installing apps in a 32-bit chroot in AMD64 Debian systems.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I followed most of step 1, with the following exceptions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I skipped step 1.3 (decided not to mess with my main gcc instalation.&lt;/li&gt;&lt;li&gt;Installed gcc, and build-essentials into the chroot. (also locals and less which didn't get installed by default.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Installed dchroot into my real system ( I think this is soemthing the tutorial does later).&lt;/li&gt;&lt;li&gt;Compiled picolisp in the chroot enviroment and installed it to /usr/local/&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Added some scripts to my real path which would execute picolisp and psh in the chroot.&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;All in all it was a surprisingly easy process and at the end of it I have a fully functional picoLisp. which is accessible form anywhere. even the scripting is easy.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;!#/bin/bash&lt;br /&gt;dchroot --preserve-environment &lt;&lt;comand&gt;&gt; "$@"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This lets me run pico the same way weather I'm in the chroot or in the main system. And there are no gremlins. I started a picolisp server in the chroot, started firefox (I mean Iceweasel) in the main system, and everything worked, even the ondemand compilation of c from inside pico.&lt;br /&gt;&lt;br /&gt;Partially I did this because I wanted to learn how to do it, and now that I have a 32 bit chroot I'll probably move my IceWeasel into it and install flash. &lt;br /&gt;&lt;br /&gt;Hmm, I wonder which I'll see first, 64 bit PicoLisp or 64bit Flash? I have it on good authority that they are both in development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-4751743798696536051?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/4751743798696536051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=4751743798696536051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4751743798696536051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4751743798696536051'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/10/picolisp-in-chroot.html' title='PicoLisp in a chroot'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-4506901310147803013</id><published>2008-10-13T17:17:00.000-07:00</published><updated>2008-10-21T17:05:03.051-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Programming is not that different.</title><content type='html'>It seems I'm not the only one who thinks programming is &lt;br /&gt;&lt;a href="http://www.codingthewheel.com/archives/programming-aphorisms-of-strunk-and-white"&gt;just anther form of composition&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Applying Strunk and White to programming - absolutely inspired (I wish I'd through of it first). &lt;br /&gt;&lt;br /&gt;I have seen a few places aregue that Design Patterns, as they are commonly used, are a complete missinterpreatation of &lt;a href="http://http://en.wikipedia.org/wiki/A_Pattern_Language"&gt;A Pattern Language&lt;/a&gt; by Christopher Alexander.&lt;br /&gt;&lt;br /&gt;Just two examples of how Programming is not that different from everything else. And why Extreme Programming is a step too far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-4506901310147803013?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/4506901310147803013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=4506901310147803013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4506901310147803013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4506901310147803013'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/10/programming-is-not-that-different.html' title='Programming is not that different.'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-7503879819794498022</id><published>2008-10-12T21:24:00.000-07:00</published><updated>2008-10-21T17:05:21.155-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='picolisp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>PIcolisp Cookbook</title><content type='html'>One thing which picoLisp needs is a Cookbook. A set of recepies on how to use its quite rich set of primitives to solve particular problems. Currently most of this information is somewhat implicit in the Reference docs. And requires making some big inferences after considering which sets of functions have links to each other.&lt;br /&gt;&lt;br /&gt;All of the built in functions are documented, what is missing at the moment however is the various idioms for using them in practice. Thankfully you can usually get a prompt answer on the mailing List. &lt;br /&gt;&lt;br /&gt;I came acrose one such are the other day. I was trying to break a circular list, built by &lt;a href="http://www.software-lab.de/refF.html#fifo"&gt;fifo&lt;/a&gt;, into a plain list. In Common Lisp I'd do this with set. so I tried it to no avail. In Pico (set (cdr A) NIL) actually sets the 2nd element of the lsit A to nil.&lt;br /&gt;&lt;br /&gt;It turns out that to set the cdr portion of a cell I want a function called con. My first reaction to that was ... well that's annoying. But then I got to thinking that its not actually a bad thing. Essentially we have to setting functions which are subtly different.&lt;br /&gt;&lt;a href="http://www.software-lab.de/refS.html#set"&gt;&lt;br /&gt;set&lt;/a&gt;: is used for setting values, and &lt;a href="http://www.software-lab.de/refC.html#con"&gt;con&lt;/a&gt; is used for manipulating structure. Yes things get a little confusing if you use cells to build a tree structure where both the car and cdr contain pointers to other cells. That aside I when reading code I can assume that calls to set will change values but not alter the underlyign datastructures, while calls to con will alter structure.&lt;br /&gt;&lt;br /&gt;The more I think about it the more I like this distinction. It adds something usful to the code. In the end the only thing which tripped me up was documentation. The Picolisp docs are good as far as they go, but missing a few bits.&lt;br /&gt;&lt;br /&gt;Alex, the maintainer of PicoLisp, seems somewhat reluctant to make the official documentation more verbose. Well we may have to agree to disagree on that one. But there has been talk of building a &lt;a href="http://logand.com/picoWiki"&gt;picoLisp wiki&lt;/a&gt; (powered by picoLisp). And this may go some way to adding the Cookbook style reference that appears to be needed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-7503879819794498022?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/7503879819794498022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=7503879819794498022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/7503879819794498022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/7503879819794498022'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/10/picolisp-cookbook.html' title='PIcolisp Cookbook'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-8212847143155484131</id><published>2008-07-07T17:00:00.000-07:00</published><updated>2008-10-21T17:05:53.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interactive Fiction'/><title type='text'>Inform - first lesson learned</title><content type='html'>&lt;p&gt;As a programming language inform is an excelent tool for writing fiction. Take the built in 'What not to wear' example. On the one hand it shows how far the language can be pushed. On the other I haven't seen code this contorted since reading a book about Visual Basic 6. &lt;br /&gt;&lt;br /&gt;&lt;p&gt;Examples like this really show how much Inform is not natural language.&lt;br /&gt;To be honest I still can't understand how the damn thing works. Getting it requires a much deeper understanding of Inform Grammer then I currently possess. Here Lies the nub. Inform makes simple things simple, and allows you to write interactive fiction. But like most special purpose tools it makes hard things harder.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;From a language point of view we have conditionals, looping constructs and an object hierarchy. We can also construct data tables and lists. All in all we have a language which is not only Turing complete, but as feature rich as general purpose languages like Java. The problem, form a programming perspective, is that we have a syntax which can be more cryptic then Perl!  &lt;br /&gt;&lt;br /&gt;&lt;p&gt;The short answer; If Clothing is not a central focus of your game; ie your character is not a catwalk model, then don't implement a generic clothing system. Changing a characters description when they put on a Jacket, or a Has mat suit is so much easier, and for most games is all that is required.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The other problem with overloading your games with generic systems is that most will be published as Z-code files, and this places some major limitations of executable size. Recent posts I've seen on rec.arts.int-fiction suggest that even the z8 standard has trouble reaching novel length (about 50,000 words) and that is without including bucket loads of extra real world simulation rules.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-8212847143155484131?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/8212847143155484131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=8212847143155484131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/8212847143155484131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/8212847143155484131'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/07/inform-first-lesson-learned.html' title='Inform - first lesson learned'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-2379828928703621439</id><published>2008-07-06T22:22:00.000-07:00</published><updated>2008-10-21T17:24:48.043-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interactive Fiction'/><title type='text'>Interactive Fiction</title><content type='html'>&lt;p&gt;I've been toying with the idea of writing a text adventure for a few months. Granted I didn't do anything more than think about it untill a Random post on slashdot, or ReadIt (I forget which) linked me to &lt;a href="http://www.inform-fiction.org"&gt;Inform7&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Suddenly I discover that there is a thriving home brew community writing and playing Interactive Fiction. And Inform is a rather interesting approach to writing it.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Interestingly while story files are free they are not open source, as most games are shipped in binary form only. &lt;br /&gt;&lt;br /&gt;&lt;p&gt;Inform 7 is both very enticing and frustrating at the same time. Its goal to allow Interactive Fiction to be written in plain english is admirable and works quite well for simple cases. However in the end it is not english but a language which overlaps with it. The upside is it looks cool, and the fact that you are porgramming is generally hidden from few. The downside is that when you do need to do some programming you end up with a very verbose syntax, which often does not make sense as an english sentence.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For example: 'the list of things carried by the noun'. In English this is nonsense as nouns can't carry things, however it does make perfect sense to inform. As a comparison I had a cursory glance at Inform6 and TADS3, and there really is no contest in the given domain.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;With inform I feel Like I'm writing a story, while with the others I'm very clearly programming. The challange now is to write somthing worth playing. Now I have a plot in mind, and I'm learning the tricks on how to extend inform to do new things. This leaves one stumbling block: I've forgotten how to think about Interactive fiction puzzles, solving them is hard enough, actually writing them, well I'm yet to come up with an interesting puzzle. Guess I need to play more Interactive Fiction first.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-2379828928703621439?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/2379828928703621439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=2379828928703621439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2379828928703621439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2379828928703621439'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/07/interactive-fiction.html' title='Interactive Fiction'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-4815593295744700747</id><published>2008-06-05T05:05:00.000-07:00</published><updated>2008-10-21T17:06:45.558-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='picolisp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Anonymous Recursive Function</title><content type='html'>&lt;p&gt;I thought I'd give the&lt;a href="http://www.ic.unicamp.br/%7Emeidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html"&gt; 99 Lisp Problems &lt;/a&gt;a spin as a way of exploring Pico Lisp. One of my first outings came up with the discovery that if you call a function without enough arguments the remaining arguments get set to NIL this can be used to do default arguments as follows:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(de fun (X Y)&lt;br /&gt;(let (Y (or Y 5))&lt;br /&gt;  (+ x Y)))&lt;br /&gt;&lt;br /&gt;(fun 1 2) -&gt; 2&lt;br /&gt;&lt;br /&gt;(fun 1) -&gt; 6&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;I did this to simulate an accumulator argument in a recursive function. But then i got to thinking, I'm executing the let on each recursive call, which seems kind of a waste as it is only needed on the first call. Well &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Pico&lt;/span&gt; has an answer for this&lt;span style="font-family:monospace;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;recur&lt;/span&gt;&lt;span style="font-family:Georgia,serif;"&gt; &lt;/span&gt;and&lt;span style="font-family:monospace;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;recurse&lt;/span&gt;&lt;/span&gt; which allows you to define an &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;anonymous&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;recursive&lt;/span&gt; function. Now this is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;something&lt;/span&gt; you don't find in your garden &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;variety&lt;/span&gt; common lisp!&lt;br /&gt;&lt;/p&gt;a list reverse (yes I know its built in but it see the 99 Python problems above) is then implemented like this;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;de&lt;/span&gt; my-rev (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;lst&lt;/span&gt;)&lt;br /&gt; (let (res ())&lt;br /&gt;   (recur (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;lst&lt;/span&gt; res)&lt;br /&gt;          (if (pair &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;lst&lt;/span&gt;)&lt;br /&gt;            (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;recurse&lt;/span&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;cdr&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;lst&lt;/span&gt;) (cons (car &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;lst&lt;/span&gt;) res))&lt;br /&gt;            res))))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;That is one neat way to make do without &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;auxiliary&lt;/span&gt; functions.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-4815593295744700747?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/4815593295744700747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=4815593295744700747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4815593295744700747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4815593295744700747'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/06/anonomus-recursive-functions.html' title='Anonymous Recursive Function'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-6381202748140184170</id><published>2008-06-04T05:43:00.000-07:00</published><updated>2008-10-21T17:07:07.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='picolisp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Lisp is addictive</title><content type='html'>&lt;p&gt;A week or so of Pico Lisp and I'm addicted again. Now the label was right, this is no common Lisp. Part of this means that a lot of built in functions have different names but then lets be honest, 'filter' is a much better name then 'remove-if-not'. I also found that there is no 'reduce' function but it was trivial to implement.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I have to say that having having one name space for functions and variables works, and using quote as lambda is growing on me. Pico lisp is proving to be a very succinct lisp to program in, which is a good thing.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Time permitting I'll be doing a lot more pico lisp hacking in the near future, port a few scripts I've done in python as practice and then on to some more interesting stuff. I've got some pointers on how to mix pico lisp and c code, which will is bound to prove useful&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-6381202748140184170?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/6381202748140184170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=6381202748140184170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6381202748140184170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6381202748140184170'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/06/lisp-is-addictive.html' title='Lisp is addictive'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5110405119028407424</id><published>2008-06-01T22:31:00.000-07:00</published><updated>2008-10-21T17:07:46.864-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='picolisp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Been away from Lisp too long.</title><content type='html'>Yes I'm sad to say that I've spent too long without messing about in Lisp. Now that I'm trying with pico lisp theres a lot of basic logic which seems to be bogging me down, such as when to quote and unquote things (though Pico lisp seems to be a little different in this regard).&lt;br /&gt;&lt;br /&gt;Another omission, from the point of view of convenience, is the lack of a well developed string formatting function. Granted the built in symbol manipulation primitives are more general then a format function but in simple cases they lead to more verbose code. Note Pico Lisp does have a function called format but it is restricted to formating a single number as a fixed precision decimal.&lt;br /&gt;&lt;br /&gt;Still I'm working slowly in adapting some examples from a Common Lisp book into Pico Lisp, and if nothing else its an enjoyable exercise.&lt;br /&gt;&lt;br /&gt;It looks like I am on the Pico lisp mailing list, though I never got notified that my subscription request was accepted. Still I got to ask my question now, which is good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5110405119028407424?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5110405119028407424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5110405119028407424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5110405119028407424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5110405119028407424'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/06/been-away-from-lisp-too-long.html' title='Been away from Lisp too long.'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1034654241559846831</id><published>2008-05-29T23:18:00.000-07:00</published><updated>2008-05-29T23:49:29.592-07:00</updated><title type='text'>The Demise of the Desktop ... Not</title><content type='html'>Predicting the pending demise of the desktop seems to be quite popular. In the very near future, we are told, all our apps will be on the net, and all our files will reside on massive, but benevolently run servers. Our computers won't in fact need a hard drive at all, just a connection.&lt;br /&gt;&lt;br /&gt;Frankly I don't see this happening for a number of reasons.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;My Laptop is offline most of the time. I mostly use it on the train and don't have wireless broadband. In any case I doubt it would work too reliably sitting in aluminum clad train under high voltage cables.&lt;/li&gt;&lt;li&gt;At home my download limit per month is about 300MB and is about right for my usage. frankly I couldn't afford to access online apps all the time.&lt;/li&gt;&lt;li&gt;I don't trust the benevolent administrators of huge online file servers to keep my files confidential if it ever comes to the crunch. If large chunks of the worlds data are in one place then it becomes easy for governments to mandate the removal of 'harmful' material.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;There are still a lot of development hours being poured into desktop environments, Gnome and KDE, as well as dozens of others, are active projects. Clearly the developers working on them see a future for the desktop, otherwise why would they bother? The grand Idea of the centralised file store has flopped a number of times, as Joel argues in &lt;a href="http://www.joelonsoftware.com/items/2008/05/01.html"&gt;Architecture astronauts take over&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And in a corporate environment there is another host of problems with thin client, issues of Privacy regulations and Commercial secrets. &lt;a href="http://thedailywtf.com/Articles/The-Upgrade-Treadmill.aspx"&gt;An interesting fact comes up in this artilce on The Daily WTF&lt;/a&gt;. Switching a corporate environment to thin client increases infrastructure costs. Suddenly your junior desktop support staff who know how to run Norton Utilities just don't cut it any more, instead they need more servers and more system administrators.&lt;br /&gt;&lt;br /&gt;Personally I like my Desktop applications and I use them all the time. My laptop is set up how I want it and not how Google wants it. Even when I do use my firfox it is usually to read pages I've saved for off line viewing using the scrapbook plug in. And importantly the files that detail how I'll achieve world domination are tucked away in a computer that can't be hacked without physical access (one of these days I must encrypt them).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1034654241559846831?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1034654241559846831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1034654241559846831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1034654241559846831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1034654241559846831'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/05/demise-of-desktop.html' title='The Demise of the Desktop ... Not'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-1500308859931361382</id><published>2008-05-29T16:58:00.000-07:00</published><updated>2008-10-21T17:26:08.598-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>White space</title><content type='html'>I came across an interesting blog post the other this morning: &lt;a href="http://www.insectnation.org/articles/2007/08/15/python-indentation-considered-boneheaded/"&gt;Python Indentation considered boneheaded&lt;/a&gt; I like meaningful indentation. Because I find it easier to think that way.  I had coded in other languages for quite some time before discovering python.&lt;br /&gt;&lt;br /&gt;This means that I have probably spent weeks of accumulated time going back and adding semicolons to statements because I forgot to terminate them the first time round.&lt;br /&gt;&lt;br /&gt;As for using python on larger projects. Well the answer is internal standards. If you try to contribute to C projects like GTK they come out and say things about standards right up front.&lt;br /&gt;If you submit a patch and it doesn't meet the coding standards then we are going to reject it out of hand. Its quite a reasonable position to take.&lt;br /&gt;&lt;br /&gt;Moreover a good editor will support a whitespace delimited language. My examples are from vim, though I assume that Emacs can do similar things as well (no need for another editor flame war).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Auto indentation sticks consistent indents on my lines.&lt;/li&gt;&lt;li&gt;Editor can highlight lines that mix tabs and spaces in their indents.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Files can carry a special comment which defines indentation rules.&lt;/li&gt;&lt;li&gt;If all else fails you can switch to a mode where whitespace characters are rendered so they are visible.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;In my day jobs all the code is python. The code base is quite large and has probably had over twenty developers working on it over the last nine years. For reasons which are lost to history we use tabs only in all the files, and it works. Some developers do seem to feel strongly about the tabs vs spaces debate. Before starting here I used spaces, but when it comes done to it I really don't have a preference. About the only Thing I will attest to is that you should not mix the two approaches in the one file.&lt;br /&gt;&lt;br /&gt;I had to write some java a while back, only a small simple problem, and after python I found it unbelivably hard. I realise this is largely personal preference, but iit felt like the syntax was fighting against me rather than helping me.&lt;br /&gt;&lt;br /&gt;At the end of the day a good syntax is one which you don't notice. Foe me being a visual person seeing well indented code gives me a quick graps of what the code is supposed to do. One of my egocentricities in this regard is that I prefer:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;if foo:&lt;br /&gt;  return&lt;br /&gt;else:&lt;br /&gt; # do something else&lt;br /&gt;&lt;/pre&gt;to:&lt;br /&gt;&lt;pre&gt;if foo:&lt;br /&gt;  return&lt;br /&gt;# do something else&lt;br /&gt;&lt;/pre&gt;Python will behave the same way in both cases, however for me the first option is more explicit. as I can see that we have an else branch without having to reach the code. If the body of the if is long enough it could be easy to miss that pesky return statement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-1500308859931361382?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/1500308859931361382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=1500308859931361382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1500308859931361382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/1500308859931361382'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/05/white-space.html' title='White space'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5610529463056694715</id><published>2008-05-28T20:47:00.000-07:00</published><updated>2008-10-21T17:25:45.743-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='picolisp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Pico Lisp</title><content type='html'>In my continuing search for a language to play with, other than python, I came accross &lt;a href="www.software-lab.de/down.html"&gt;Pico Lisp&lt;/a&gt; the other day. A very intriguing lisp dialect for several reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fully interpreted and yet faster then compiled lisp in some usecases&lt;/li&gt;&lt;li&gt;Persistent storage (essentially an object database)&lt;/li&gt;&lt;li&gt;built in Prolog.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;built in web server and support for online applications.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No floating point numbers ?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;That last point seems a little curious. but then i got to thinking how many applications out there really need floating point numbers? Well there are really a lot of applications that don't. In my day job I deal with online payments. No floating point numbers here, just express things as cents and be done with it.&lt;br /&gt;&lt;br /&gt;Using floating point in financial circles is in general a big no-no, people get a lttle tucky when your working with money and make rounding errors. Also its a little hard to do anything with a fraction of a cent.&lt;br /&gt;&lt;br /&gt;Graphics. Well yes and no. Fixed precision might be quite good enough. Heck there's a 3d flight simulator application to prove it even. The Documentation claims it can be easily extended with C, including writing C functions inline, unfortunately exactly how this is done, or what the limitations are, is not explained. Once I get onto the mailing list I plan to ask.&lt;br /&gt;&lt;br /&gt;First impressions are that this is a very small, neat and yet still useful language. Time will tell if I can do something interesting with it though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5610529463056694715?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5610529463056694715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5610529463056694715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5610529463056694715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5610529463056694715'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/05/pico-lisp.html' title='Pico Lisp'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-862901134772649587</id><published>2008-05-27T21:57:00.000-07:00</published><updated>2008-05-27T22:11:46.943-07:00</updated><title type='text'>Bad Karma</title><content type='html'>I'm really going away from what I intended on this blog but ...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://news.yahoo.com/s/ap/20080528/ap_on_en_mo/people_sharon_stone_quake"&gt;Sharon Stone's Karma comment&lt;/a&gt; has to be the dumbest thing any celebrity has said this year.&lt;br /&gt;&lt;br /&gt;Karma is supposed to return to whom ever generated, and I fail to see how school children in Sichuan have oppressed Tibet.  Its clear to anyone that this is a natural disaster which has affected perfectly ordinary innocent people. They have nothing to do with setting government policy in Tibet.&lt;br /&gt;&lt;br /&gt;Seeing images of collapsed schools with a childs hand sticking out of them brings tears to my eyes. I can't imagine what it must be like to shift through ruble looking for your child. For some starlet to suggest that its Karma ... I'm lost for words really ...&lt;br /&gt;&lt;br /&gt;Even the Democrat Presidential hopefuls haven't managed a gaff this bad.&lt;br /&gt;&lt;br /&gt;I'd call for a boycot of Stone's movies myself, but in all honest I've never been a fan so I probably wouldn't have rushed out to see them in any case.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-862901134772649587?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/862901134772649587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=862901134772649587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/862901134772649587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/862901134772649587'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/05/bad-karma.html' title='Bad Karma'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5641158304027829455</id><published>2008-05-14T17:42:00.000-07:00</published><updated>2008-05-14T18:46:50.739-07:00</updated><title type='text'>The Horse and His Boy</title><content type='html'>In my recent reading I came across &lt;a href="http://www.crlamppost.org/darkside.htm"&gt;The Darkside of Narnia&lt;/a&gt; a critique by Philip Pullman. Here is an essay which has had raised some very heated responces. A common thread seems to be to say that If you think this than you musn't have read the books. I don't think this retort is justified, and it would be very poor form to publish such an essay without reading the matirial you are critiqueing.&lt;br /&gt;&lt;br /&gt;I can't speak for Mr Pullman, but I have read the books (ok I didn't get to the end of the last one) and I have to agree with him. Let Us take 'The Horse and his boy', which until I read it a second time had been my favorite of the Narnia books. So here we go with some questions&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Is it racist?&lt;/span&gt;&lt;br /&gt;Very much so. The Calormenes are depicted as dark skinned, turban wearing and  following a religion based quite clearly on Islam. Every single Calormenian male depicted is a shrewed dishonest and evil. so much so that Shasta cannot conceive of anyone being charitable and honest. The only female Calormenian (other than Aravis) is portrayed as a twit who is interested in nothing other than cloths and parties. I believe in the last book Susan is condemned for having smiler interests.&lt;br /&gt;&lt;br /&gt;Mean while all the honorable Humans are White, and Aslan fearing. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Are there literary shortcuts?&lt;/span&gt;&lt;br /&gt;Rule number one of fiction is show don't tell. Lewis tells constantly. Aravis tells the start of her journey. Later one of the Narina's describes to Shasta exactly how to get to Narnia. Note he is not doing this deliberately, and any inteligent person would not divulge this information in enemy teritory, but he does so simply because the story demands it. &lt;br /&gt;&lt;br /&gt;Rule number two: the Author should not speak directly to the reader. Lewis does this a few times as well, once to compare to contrast Calormenian story telling and Essay writing (as taught to the assumed audience) and again to urge his audience to also read "The Lion the Witch and the wardrobe", In case they have not done so already. &lt;br /&gt;&lt;br /&gt;Rule number three: the Protagonists should not rely on the Caverly to save the day. Well the Story is driven by Aslan roaring. He herds the children together, and protects them form wild animals, and guides them every step of the way. &lt;br /&gt;&lt;br /&gt;At the end of the day the evil are punished, the good (those who accept Aslan's will) are rewarded, and in true cristian fasion the Proud horse becomes humble. Instead of the expected growing attraction between the protagonists they get married in the future for the sake of convenience. While there would be no call to make that the main focus of things, some subtle hints of romance would not have been out of place, holding hands even.&lt;br /&gt;&lt;br /&gt;All in all there is no character development over and above the intended moral lessons. So Pullmans critique is spot on. Narnia really is nothing more than thinly disguised preaching from the pulpit. The plots may be good but there is nothing holding them up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5641158304027829455?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5641158304027829455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5641158304027829455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5641158304027829455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5641158304027829455'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/05/horse-and-his-boy.html' title='The Horse and His Boy'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-3992663159020965778</id><published>2008-05-07T20:48:00.000-07:00</published><updated>2008-10-21T17:26:37.684-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>What Erlang is bad at</title><content type='html'>Recently I wanted to write a program which would take sections from a texmacs document and run them through the style command. And then process the results to get a particular set of statistics.&lt;br /&gt;&lt;br /&gt;This includes some additional crunching on what style produces. As it was my language of the month as it where I thought I'll do it in Erlang, but after spending a train trip searching the documentation I found that making system calls in a subshell is not somthing that erlang can do at all easily. I certainly couldn't find a way which did not involve writing a c wrapper around in any case.&lt;br /&gt;&lt;br /&gt;So it was back to python for this one and a usable script done in about an hour. Lessons learned: Erlang is not a good language for quick and dirty scripts. I'm not saying that it can't be but the standard library dosn't seem to support such a use case. &lt;br /&gt;&lt;br /&gt;An aquantence who is also  programmer told me once that he is also tempted to look at Erlang now and then, but he can never seem to find a project that he really wants to implement in it. More often then not he ends up in exactly this position "Man this would be so much simpler in Python" and so that is what he uses.&lt;br /&gt;&lt;br /&gt;I think I have a new point to add to my list of what makes a good language:&lt;br /&gt;&lt;br /&gt;"Can be used to solve small problems easily"&lt;br /&gt;&lt;br /&gt;In this regard anything which requires copious poilerplate or is missing simple ways to interact with standard in and out looses instantly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-3992663159020965778?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/3992663159020965778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=3992663159020965778' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3992663159020965778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3992663159020965778'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/05/what-erlang-is-bad-at.html' title='What Erlang is bad at'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-8542092517997783985</id><published>2008-05-01T22:10:00.000-07:00</published><updated>2008-10-21T17:27:22.828-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Virtual Machines</title><content type='html'>&lt;p&gt;In the recent debate about weather or not languages should ship with there own virtual machines, or use an established one. I'm with diversity here. Put simply different languages have different needs. Just because the JVM is good for java it doesn't follow that it will be good for Erlang. And Erlang is sufficently different to warrant it's own vm.&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt; An Erlang vm can assume that memory will not be modified. I expect his has a big impact on how you manage memory&lt;br /&gt;&lt;/li&gt;&lt;li&gt; An Erlang vm requires tail recursion optimization. if you don't have this your code will be slow and use up more stack space.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Every Erlang process has a message queue. Most VM's will not provide a message queue out of the box.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;A lot of the same things also apply to Haskell, you can't expect a functional language to work optimally on a vm designed for procedural languages. the code optimizations and memory management strategy needed is radically different. In this I'm quite in agreement with the following post:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://patricklogan.blogspot.com/2008/05/huh-fact-that-it-runs-on-its-own.html"&gt;Making it stick.: Huh?: "The fact that it runs on its own interpreter, bad."&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-8542092517997783985?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/8542092517997783985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=8542092517997783985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/8542092517997783985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/8542092517997783985'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/05/virtual-machines.html' title='Virtual Machines'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-4057926652334276706</id><published>2008-04-08T22:25:00.001-07:00</published><updated>2008-04-08T22:46:57.306-07:00</updated><title type='text'>Setting up a new Laptop</title><content type='html'>&lt;p&gt;Just got a new midrange laptop and thought I'll install xubuntu 7.10 on it. but hay its 64 bit so lets install the 64 bit version.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;OK that seemed to work so lets install the things I'm playing with at the moment. vim-full ... sorry no can do, Erlang ... no not this one either.  In both cases the problem was a dependency on tk8.4 which does not work in 64 bit mode.&lt;/p&gt;&lt;p&gt;perhapses in 8.04 but then there's no easy way to migrate from 32 bit to 64 bit so I might not do that either.&lt;/p&gt;&lt;p&gt;Anyway I reinstalled in 32 bit mode and everything installed nicely, about the only thing I don't have working yet is flash but I'm sure that can be fixed if I get around to it. honestly I don't do much web browsing from my laptop, even though&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-4057926652334276706?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/4057926652334276706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=4057926652334276706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4057926652334276706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/4057926652334276706'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/04/setting-up-new-laptop.html' title='Setting up a new Laptop'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5542329967141887620</id><published>2008-03-26T19:06:00.000-07:00</published><updated>2008-03-26T19:31:39.535-07:00</updated><title type='text'>More Erlang</title><content type='html'>I'm finding erlang to be a fun language to learn. One of the differences between it and other functional languages is that there is no type system. Well no extensible type system. we are really down to Atoms, Numbers, bytes, Tuples and Lists. With bytes generally being used as lists of bytes.&lt;br /&gt;&lt;br /&gt;Even Strings don't get their own type, which is a little bit of a liability but can be muddled through for, at least for latin1 characters. Some people have hailed this as an advantage saying hay look I can learn to program and don't have to learn some complex type system.&lt;br /&gt;&lt;br /&gt;So far my toy programs havn't felt the lack of types. But even there it seems to me that this could easily be added as with a preprocessor just like records where, if we take the perl approach of saying classes are modules then you can easily rewrite Var.doSomthing(...) to module.doSomthing(Var, ...) providing you know what module should be. which we could have declared at the time the variable was assigned to by writing Var~module (I picked ~ as it dosn't have any meaning that I'm aware of as yet. &lt;br /&gt;&lt;br /&gt;The Question is then, is such syntactic sugar worth while and does it gain anything in reasability over the syntax that it is being written into? At the moment I'm undecided. It certainly seems like it would be doable, after all Lisp Flavoured Erlang is doing somthing much more complex then this. The key question would be how hard is it to write an Erlang parser in Erlang?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5542329967141887620?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5542329967141887620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5542329967141887620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5542329967141887620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5542329967141887620'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/03/more-erlang.html' title='More Erlang'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-8302677700104505258</id><published>2008-03-11T18:37:00.000-07:00</published><updated>2008-03-11T19:10:43.745-07:00</updated><title type='text'>Erlang</title><content type='html'>I've started messing about in Erlang, and so far I like it. At my current, very basic, understanding of this language it seems to be much closer to the original Object Oriented Model then most of the so called Object Oriented languages are.  The syntax is purely functional and inspired by prolog, though the execution model is different as there is no automatic backtracking.&lt;br /&gt;&lt;br /&gt;Basically it's all about message passing. And having the kind of flexibility where any object can pass arguments to any other object. In the case of Erlang every object will be a process which has an event loop at its core. naturally by loop I mean a tail recursive function.&lt;br /&gt;&lt;br /&gt;The only thing which appears to be lacking is any explicit mechanism for inheritance, however this can be addressed with small amounts of boilerplate code. It early days so anything I try to post up at present will probably look woefully amateurish, if not plain wrong, to anyone with more Erlang experience then me.&lt;br /&gt;&lt;br /&gt;The big advantage being that each object (or process as Erlang calls it) can be executing on a different cpu or even on a different machine. This fact is essentially invisible to the caller. There are some syntax shortcuts for sending messages to local objects but they really are quite minor.&lt;br /&gt;&lt;br /&gt;Coincidently there have been a number of Erlang posts on reddit recently:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://damienkatz.net/2008/03/what_sucks_abou.html"&gt;What Sucks about Erlang&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://yarivsblog.com/articles/2008/03/09/in-response-to-what-sucks-about-erlang/"&gt;Response to What Sucks about Erlang&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://12monkeys.co.uk/starling/"&gt;Erlang get Unicode Strings&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://groups.google.com/group/erlang-questions/browse_thread/thread/adfe375287d4bef4/4a9127e701f5e2db"&gt;Lisp Flavored Erlang&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I'll get back to Unicode a little later but the first two deserve a little more comment. About the only thing I strongly agree with in the critisims of Erlang is that Records really do seem like bolted on afterthought.&lt;br /&gt;&lt;br /&gt;having named fields is very useful, but we don't really have named fields only the illusion of them, but I guess that's what normally happens with macro features. Sun implemented inner and anonymous classes in Java in much the same way, and with some of the same warts.&lt;br /&gt;&lt;br /&gt;The subject of Unicode support is another thing entirely, I recently bagged Arc for not having it. Now the interesting thing here is that Erlang does not differentiate between a list of integers and a string. So in theory at least you can represent any set of code points you like, as all existent Code points fit within the bounds of an Erlang integer.&lt;br /&gt;&lt;br /&gt;What you don't have however is any indication of which of your lists of integers are stings, nor any indication of what encoding a particular string might actually be in at the present moment.&lt;br /&gt;&lt;br /&gt;In practice things are nolonger so simple. In Ascii you could get away with treating a string as an arry of bytes and things just worked. but nowadays things are not so simple. With UTF-8 different characters take a different number of bytes. Even with utf-16 you still have the problem that the same visual string can be represented by several different byte sequences.&lt;br /&gt;&lt;br /&gt;The same problem means that a lot of Python code I've written in the last year or so will break badly if I tried to migrate it to Python 3.0. The assumptions of binary / string compatibility are simply nolonger there.  Such I guess is the price of progress, we can represent almost every language on earth, but even the basic case is now harder than it used to be.&lt;br /&gt;&lt;br /&gt;And finally there is the promise of Lisp Flavored Erlang. On the face of it this seems fantastic, and I plan to play with it extensively. Not yet however, it may be valuable to learn Earlang before I start playing with alternative syntaxes. I believe the big thing that LFE adds is scheme like macros. Let us see what happens to LFE once the 'new shiny thing' hype clears a little.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-8302677700104505258?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/8302677700104505258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=8302677700104505258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/8302677700104505258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/8302677700104505258'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/03/erlang.html' title='Erlang'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5241220585731419798</id><published>2008-03-06T21:57:00.000-08:00</published><updated>2008-03-06T22:32:09.706-08:00</updated><title type='text'>The folly of Arc</title><content type='html'>Somewhat belatatly I learned that Arc had finnally been released. A few moments of excitment soon ended when I learned that what had been released was a set of mzScheme macros. Worse yet a set of MzScheme macros which require an old version of said language, because the latest version breaks something.&lt;br /&gt;&lt;br /&gt;Having read '&lt;a href="http://www.paulgraham.com/arc0.html"&gt;Arc is Out&lt;/a&gt;' I have to say that I haven't seen anything is contradictory to good software engineering practice in a very long time, at least not outside writing which is meant to be satirical.&lt;br /&gt;&lt;br /&gt;How Ironic that Paul Grahams Announcement of the language spends several paragraphs belittling attempts to not break existing code when releasing new versions of a language. Interestingly He pre-picked the two things that everyone would object to:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Supporting ASCII only&lt;/li&gt;&lt;li&gt;Shipping with a table based web framework.&lt;/li&gt;&lt;/ol&gt;On the first of these points. No wrong answer you should have supported UTF-8 to begin with. The ability to do character set conversions can wait, but at a base UTF-8 seems like the way to go. Right here a lot of programmers who need to use languages other than English will say, this isn't worth it, even to mess about in.&lt;br /&gt;&lt;br /&gt;On the second point. This isn't just not Politically correct, its plain wrong. Tables are ridged structures which do not sport much in the way of experimentation. Do the same thing with Divs and Spans and you can experiment, shape and reshape, make things align differently. I don't know anyone at the W3C personally but I can respect that they have spent a very long time thinking about the problems of markup languages. Somehow I'm more inclined to trust them then a single person who is effectively saying I'm right and the rest of the world is wrong.&lt;br /&gt;&lt;br /&gt;Looking at the rest of the Essay, Yes lists are good but lets be honest they are not always the best choice. In most programs I may not know exactly what I want but I'll have a fair idea, and no I wouldn't represent a point as a list, I'd use a tuple. Why? Because chances are I know that I need two elements, or three elements and that all my points will have that many elements.&lt;br /&gt;&lt;br /&gt;Using the right data structure for the right job is frequently important. For the most part I prefer to do this early rather than late, and can usually work out where I need a List, or a Tuple or a Hash or a Set.&lt;br /&gt;&lt;br /&gt;Where structures with named fields come into there own is that while experimenting I can add fields at any time. I f  I used Lists or even tuples this becomes much harder.  When you know your points are just lists it takes an awful lot of discipline to not treat them as such, and sooner or later doing so is going to come back and bite you.&lt;br /&gt;&lt;br /&gt;I speak from experience here I've dealt with data structures which where just nested lists (something like seven layers deep) and it was not fun. Worse yet code which references things by field name is much easier to read then code which has indexes peppered all over it instead.&lt;br /&gt;&lt;br /&gt;All in all I'm sad to say that I won't be looking any deeper into Arc, because if fails my basic tests on what languages are worth spending time on. Last time I ignored my standards I spent several weeks looking into newLisp, even though I had grave misgivings on the Authors memory management philosophy of one reference to any object (ever), and Dictionaries can exists as top level objects only.&lt;br /&gt;&lt;br /&gt;One day there will come a Lisp to rule them all, but it would appear that Arc is not that language.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5241220585731419798?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5241220585731419798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5241220585731419798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5241220585731419798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5241220585731419798'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/03/folly-of-arc.html' title='The folly of Arc'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-2862347796601016053</id><published>2008-02-28T20:20:00.000-08:00</published><updated>2008-02-28T20:24:58.787-08:00</updated><title type='text'>What is in a Name</title><content type='html'>I'm still looking for the perfect word to name my blog. My critria being:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Has to be a single word so that the Wind in the Willows quote works&lt;/li&gt;&lt;li&gt;Has to cover programming&lt;/li&gt;&lt;li&gt;Has to cover Writing Fiction&lt;/li&gt;&lt;/ol&gt;I'm thinking that the meaning of Lexicons needs to be stretched a fair bit to do this, but for some reason I'd rather not use Languages. Somehow that brings up the wrong connotations (such as bad language) in my mind.&lt;br /&gt;&lt;br /&gt;Anyway Lexicons it will stay until I come up with something better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-2862347796601016053?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/2862347796601016053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=2862347796601016053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2862347796601016053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2862347796601016053'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/02/what-is-in-name.html' title='What is in a Name'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-2146048814697205346</id><published>2008-02-27T16:16:00.000-08:00</published><updated>2008-02-27T16:39:24.854-08:00</updated><title type='text'></title><content type='html'>I just finished reading '&lt;a href="http://www.google.com.au/url?sa=t&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.amazon.com%2FWorld-Building-Science-Fiction-Writing%2Fdp%2F158297134X&amp;amp;ei=nv3FR-ezLKropgS7x8y3Cw&amp;amp;usg=AFQjCNEh82iF8yYBLX9LtrYF5sIrBCZfdw&amp;amp;sig2=Biz3job2axm-X-eZ6wZAMw"&gt;World Building&lt;/a&gt;' and it was an all together very interesting book. And has a couple of interesting conclusions:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;If we find another advanced civilisation out there changes are they will be carbon based oxygen breathers like us. Gillet outlines several other possible bio chemistries but all of them seem to be hostile to getting to the advanced phase because they either preclude the existence of fire, damage metals too quickly or both.&lt;/li&gt;&lt;li&gt;In geological time Ice caps on earth have been the exception not the rule.&lt;/li&gt;&lt;/ol&gt;This last point seems to have a lot of implications for cries of global warming. Simply put the sun is getting hotter, and you would expect the earth to be getting hotter as well. Granted we are talking about geological time here.&lt;br /&gt;&lt;br /&gt;On the whole however Since the age of the Dinasours the Earth has gotten colder and is still colder. One reason is that the atmospere has thinned somewhat. There are fossils of Dragonfiles with a wingspan of over a foot.&lt;br /&gt;&lt;br /&gt;Such a creature could not exists in the current atmospere, it would suffocate. Likewise the flying reptiles with wingspans equivelent to  a small plane would not be able to generate sufficent lift in one atmospere to get anywhere. All of the dinasours would find the present world much too cold for them.&lt;br /&gt;&lt;br /&gt;Another little tidbit is that CO2 is nothing compared to Water vapor when it comes to global warming. All in all the case for saying that we are making things get hotter seem rather thin on the ground. And here's another question if we shift to using hydrogen fule and start spewing extra watervapor into the atmospere at the same rate as we are currently unlocking carbon what effect will that have? If the water vapor stays up there for any length of time it could cause more warming instead of less. Recently some scienists worked out that Bio fules acrually cause more polution then fossil fules when you factor all the steps in, so it is a question worth asking.&lt;br /&gt;&lt;br /&gt;Reducing pollution is a good thing, and I wouldn't argue against it, but reallistically speaking reducing pollution won't stop climate change.  Simply because the Climate changes, it always has and it always will.&lt;br /&gt;&lt;br /&gt;Reduce polution by all means, and perhaps you can slow down the warming a fraction, but I suspect that it will still happen regardless of what we do.  And the truth is climate change is going to be inconvenient for our species no matter which way it goes.&lt;br /&gt;&lt;br /&gt;If it gets hotter then small ilands submerge and the ideal farming zones shift (and possibly shrink). If things go the other way, (and every full blown iceage has been proceeded by a sharp temperature spike). Then good chunks of continental Europe and North America could end up under glaciers again.  The population affected is probably a lot greater then in the warming senario.&lt;br /&gt;&lt;br /&gt;In either case habitats change accross the world and overly specilised animals die out in the wild.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-2146048814697205346?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/2146048814697205346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=2146048814697205346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2146048814697205346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2146048814697205346'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2008/02/i-just-finished-reading-world-building.html' title=''/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-2067777598076435259</id><published>2007-09-08T03:59:00.000-07:00</published><updated>2007-09-08T04:04:43.968-07:00</updated><title type='text'>Why Lisp?</title><content type='html'>I've tried to answer the question before by giving a list of the features of lisp. But I don't think that language choices are entirely made on features.  There is more to it, and in the end I don't think there is a one language to rule them all. &lt;br /&gt; &lt;br /&gt;And that is a good thing, in exactly the same way as it is good that there is more than one language in the world. There have been numerous attempts to design a universal language, which the authors hoped would replace all other languages and become the way humans communicate. &lt;br /&gt; &lt;br /&gt;All of these attempts have failed not because the designed languages where missing important features but because humans thrive on diversity. We want to speak different languages. And Coders want to code in different languages. This simple statement explains why such passionate flame wars erupt over trivial matters such as how statements should be delimited. &lt;br /&gt; &lt;br /&gt;So to Answer my own question why lisp? Because it is different. Not just slightly different, such as Java vs C++ but entirely different. The fact that it is different is what attracted me to Lisp in the fist place. I simply decided that I wanted to learn something which was different. Once I started I found that Lisp did have a lot of cool features. &lt;br /&gt; &lt;br /&gt;Using a completly different langauge is a refreshing change and makes you think about programming in a different way. But that's something to discuss another day, I said I wasn't going to decent into a feature list and I wont.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-2067777598076435259?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/2067777598076435259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=2067777598076435259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2067777598076435259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/2067777598076435259'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2007/09/why-lisp.html' title='Why Lisp?'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-3702171807432125503</id><published>2007-08-28T16:52:00.000-07:00</published><updated>2007-08-28T16:56:09.055-07:00</updated><title type='text'>Change the name</title><content type='html'>So I changed the name of my Blog. &lt;br /&gt;&lt;br /&gt;I really wanted to have something more generic to cover both programming and writing Fiction but nothing came to mind so I settled for Lisp, the AI language, the cool language. It is really more my language of choice even if I use Python for practical reasons. &lt;br /&gt;&lt;br /&gt;Still newLisp shows some promise in being a practical lisp despite its warts and if I'm motivated enough Warts can be removed and replaced with something better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-3702171807432125503?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/3702171807432125503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=3702171807432125503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3702171807432125503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3702171807432125503'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2007/08/change-name.html' title='Change the name'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5027811794577585609</id><published>2007-08-22T19:56:00.000-07:00</published><updated>2007-08-22T20:21:25.679-07:00</updated><title type='text'>New Lisp warts</title><content type='html'>Well I haven't need to dig too deeply to find warts in NewLisp. and some of them do seem to be by design.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;No tail call optimization (and nver will be or so the creator has said) seems a little antagonistic to functional programming. And pass by value is not your friend here.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Contexts are inadequate for any of the jobs they are supposed to do, and they have been overloaded with too many jobs.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Macros facilites are inadaquate, as there are no gensyms and there is no macroexpand function.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Memory management seems to be a dogma. The only problem I have with pass by value is that it seems to go against the grain of functional programming. where you pass in functions expecting them to not modify their arguments, so why copy them? I think copy on write would be a better strategy. to adopt, perhaps a little more complex but favarable to functional programming.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No Type system. THere simply is no facility for user defined types. and hence no way to do anything interesting like generic functions&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Why contexts are inadaquate&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Context take the place of Module, hash tables, objects (closures really) and pass by reference mechanism.&lt;br /&gt;&lt;br /&gt;They fail as a packaging system as they have a flat namespace so that all modules must be global. Every scripting language that I know of supports hiarchical modules simply because it works better and reduces the changes of two differnt packages defining the same module. Without hiarchical contexts developing an extensive standard library for newLisp is going to be impractical. Note that all of the successfull scripting languages have large standard libraries, it is just one of the signs that a language is a success.&lt;br /&gt;&lt;br /&gt;As hashtables they sort of will do but are inadaquate simply because you must stick all your hashtables in MAIN, where they share a namespace with any loaded modules. So I can't have one without exposing it to the world and the chances of name collision have increased again. If I could create an anonymous context and bind it to a local variable that would be better.&lt;br /&gt;&lt;br /&gt;As a method of passing by referance. Sorry but that is a plain ugly hack, which forces the proliferation og global objects. Again if this must be the only way to do it then anonymous context are what is needed.&lt;br /&gt;&lt;br /&gt;As Objects. Well no what we have here are not objects but what every other Lisp would call a closure. Except that again while in all other Lisps closures are anonymous here they must be named, in the same namespace as Modules and Hash tables (boy its getting crowded in there). Yet again anonymous context seem to be what is missing.&lt;br /&gt;&lt;br /&gt;Unfortunately neither Hiarchical Contexts or Anonymous contexts are likely to be added. Form what I have seen the Project maintainer has already expressed the opinion that he does not like the idea of hierarchical Contexts. Anonymous ones meanwhile would I suspect play havoc with the whole ORO memory management Idea. As once they existed people would use them (quite Heavily I imagine).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5027811794577585609?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5027811794577585609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5027811794577585609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5027811794577585609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5027811794577585609'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2007/08/new-lisp-warts.html' title='New Lisp warts'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-3156356576868904695</id><published>2007-08-21T20:59:00.000-07:00</published><updated>2007-08-21T21:12:54.716-07:00</updated><title type='text'>Back to Lisp</title><content type='html'>Looks like I'll be playing wtih a little Lisp again rather than Python. May even need to chagne the name of this blog. This time in the form of &lt;a href="http://newlisp.org/"&gt;newLisp&lt;/a&gt; this is a very small and seeming agile implementation of lisp.&lt;br /&gt;&lt;br /&gt;It's not a Common Lisp, but instead does its own thing in what appears to be a very light weight manner, which still feels like lisp. All the While focusing on practical things like providing Network (indlucing HTTP) database, Threading and even GUI API's out of the box. As well as what seems like near seamless integration with C librarys, though only time will tell on that one.&lt;br /&gt;&lt;br /&gt;Some other features are a little unusual such as a return to older scoping rules. And a namespace implementation called contexts.&lt;br /&gt;&lt;br /&gt;Some of the design decisions have been critisised hevily, but others areue along the lines of try it and see it actually works out without being insane. So I'll go down this route.&lt;br /&gt;&lt;br /&gt;As a first remark it is a small distibution at 1.1MB of source Tarball and is very easy to compile out of the box. For me on two differnt machines (with different Distos) It just worked.&lt;br /&gt;&lt;br /&gt;I have two projects in mind:&lt;br /&gt;&lt;br /&gt;1) See how much of the stuff in 'On Lisp' I can get working in newLisp&lt;br /&gt;2) write a Rouge like console game using &lt;a href="http://libcaca.zoy.org/"&gt;libcaca&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-3156356576868904695?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/3156356576868904695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=3156356576868904695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3156356576868904695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/3156356576868904695'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2007/08/back-to-lisp.html' title='Back to Lisp'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-6674969125459450936</id><published>2007-07-31T19:19:00.001-07:00</published><updated>2007-07-31T19:33:15.061-07:00</updated><title type='text'>Back to Basics</title><content type='html'>&lt;p&gt;I seem to be seing stories about how software is getting slowe all the time. Part of the reason is that we expect it to do a lot more stuff, but do we really needed. The most entertaining Benchmark was comparing an Apple plus I beliefve wit ha Duel core Athlon 64. The Apple seemed to complete most common tasks faster than the more modern computer.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The biggest difference was in terms of boot time. Recently I have been dissatisfied at how long my somewhat dated (Pentium III) laptop was taking to boot. My most common use case for the laptop is&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;power up&lt;br /&gt;&lt;/li&gt;&lt;li&gt;start a terminal&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Navigate to a file&lt;br /&gt;&lt;/li&gt;&lt;li&gt; edit the file with VIM&lt;br /&gt;&lt;/li&gt;&lt;li&gt; save &amp;amp; shut down&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;with that use case, why am i waiting so long for the thing to boot. Granted I didn't time it but it was definetly longer than I needed to do what I wanted to do. So I decided to try something&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I made some space and installed a minimal Debian, added the programs I really use (but no X11)&lt;br /&gt;and away I went. After a little bit of tweeking (and some helP) I got a framebuffered console and a nice large font (which still gives me just over 80 characters accross.&lt;br /&gt;&lt;/p&gt;&lt;p&gt; end result is that I now have a 25 second wait from pressing the power button to login prompt, and a system which does exactly what I need, and nothing I don't.&lt;br /&gt;&lt;/p&gt;&lt;p&gt; and on those rare occasions when I would like to do something more I still have Ubuntu installed in a separate partition and can ask grub to boot into it for me. All it all it was a reasonably simple process, and it just goes to show that the console should not be discounted.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In many instances it is stil the tight interface for the job and it is a pity that things like getting autoconfguring the framebuffer and getting a good font selected are not automateded in any way.&lt;/p&gt;&lt;br /&gt;&lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-6674969125459450936?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/6674969125459450936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=6674969125459450936' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6674969125459450936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/6674969125459450936'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2007/07/back-to-basics.html' title='Back to Basics'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-5881777156188347557</id><published>2007-06-21T15:44:00.001-07:00</published><updated>2007-06-21T16:11:43.179-07:00</updated><title type='text'>Python 3000</title><content type='html'>I don't know If I like some of the changes that Python 3000 will bring. Introducing a destinction between string and binary data, seems like a backwards step. It seems to be more Windows style than Unix stile and harks back to the bad old days of breaking files when reading them via FTP.&lt;br /&gt;&lt;br /&gt;Is this the cost of using Unicode encodings, and if so is it worth it. Granted I do all my writing and coding in english so I won't really gain anything from being able to use Unicode Identifiers. But all in all it seems clunky.&lt;br /&gt;&lt;br /&gt;Dropping the reduce function entierly also seems a little extreme, like many people have already said, just move it to join all the other functional programming functions.&lt;br /&gt;&lt;br /&gt;On the other hand Generic Functions, which are a great paradime (and would make my multiple dispatch post oboslete, stand a danger of being droped due to lack of activity.  PEP 3124, which describes generic functions  actually covers almost the entire CLOS (Common Lisp Object System) specification.&lt;br /&gt;&lt;br /&gt;On balance I have a feeling that Python 3000 is just not going to be the same language, the number of differences seems so significant that best practices and general approaches will have to change. Porting to Pythong 3000 looks like it will not be a trivial task.  All In all it will be interesting to see what hte adoption  rate will be. A lot of the new features will also be available in Python 2.6, It may end up that everyone moves to python 2.6 and stops there preferring to keep the old style ways of doing things, such as havig a single unifed string/ binary type, and does not go any further.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-5881777156188347557?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/5881777156188347557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=5881777156188347557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5881777156188347557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/5881777156188347557'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2007/06/python-3000.html' title='Python 3000'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-115777255978699741</id><published>2006-09-08T19:54:00.000-07:00</published><updated>2007-10-03T17:37:30.828-07:00</updated><title type='text'></title><content type='html'>Implementing the Visitor Pattern&lt;br /&gt;&lt;br /&gt;The visitor pattern is a very interesting way to go if you have a lot of operations&lt;br /&gt;which need to be applied to one data structure. Especially if this is a recursive data structure such as a tree.&lt;br /&gt;&lt;br /&gt;Python provides a very interesting way to implement the visitor patter and get&lt;br /&gt;around some of its inherent problems. Granted when done this way you are really getting something closer to double dispatch then the visitor pattern.&lt;br /&gt;&lt;br /&gt;Allow me to take a short deter into CLOS (the common lisp object system). Objects&lt;br /&gt;in CLOS bear more of a resemblance to Structures in C then to Objects in a language Like Java or Python in that a CLOS object has no methods. The methods are defined separately as generic functions. One feature of generic&lt;br /&gt;fumigates is that they can select an implementation based on multiple arguments, where's in most OO languages only the first (the calling object) is considered. This idea is really quite powerful.&lt;br /&gt;&lt;br /&gt;back on the python front. Here is an interesting way to implement the visitor&lt;br /&gt;pattern using the available introspection tools.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class Node(object):&lt;br /&gt;&lt;br /&gt;    def __init__(self):&lt;br /&gt;        self.MethodNames = [ cls.__name__ for cls in self.__class__.__mro__]&lt;br /&gt;&lt;br /&gt;   def accepts(self, visitor, prefix='visit_'):&lt;br /&gt;       for name in self.MethodNames:&lt;br /&gt;           vName = prefix+name&lt;br /&gt;           if hasattr(visitor, vName):&lt;br /&gt;               # we could have allowed getattr to raise an exception but this is generally slower&lt;br /&gt;               # then an explicit check. In this case we assume that the exception would be &lt;br /&gt;               # thrown regularly under normal operation and would hurt performance.&lt;br /&gt;               getattr(visitor, vName)(self)&lt;br /&gt;               #do any cleanup activity&lt;br /&gt;               return&lt;br /&gt;       raise AttributeException("Visitor %s does not contain a suitable method." %  visitor)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class Visitor(object):&lt;br /&gt;&lt;br /&gt;    def visit_Node(self, node):&lt;br /&gt;        #do something&lt;br /&gt;        pass&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The important thing about these code is the use of __class__.__mro__&lt;br /&gt;__mro__ stands for Method Resolution Order and is a list of class objects in the&lt;br /&gt;order they are tried when a definition is needed for a method. In Older versions of python this is a simple (and fundamentally broken) depth first search. The problem with simple depth first search is that it doesn't handle&lt;br /&gt;multiple inheritance corectly. Since Python 2.4 a more sophisticated algorithm is used (incidentally the same Algorithm as used in CLOS).&lt;br /&gt;&lt;br /&gt;We have in effect created a Dispatch method which is polymorphic on the type of the current class. And moreover has the same method resolution order as the python language its self. The main advantage of this approach over a more&lt;br /&gt;traditional one is that we are free to extend the Node class hiarchy at any time&lt;br /&gt;without breaking existing visitors. Granted the dynamic dispatch will be slightly&lt;br /&gt;slower than accept methods which explicitly call a particular method.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-115777255978699741?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/115777255978699741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=115777255978699741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/115777255978699741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/115777255978699741'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2006/09/implementing-visitor-pattern-visitor.html' title=''/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-114619444993144861</id><published>2006-04-27T20:02:00.000-07:00</published><updated>2006-04-27T20:20:49.940-07:00</updated><title type='text'>Other side of the Coin</title><content type='html'>There is always a counter example. Having just saying that dynamically typed languages are better then statically typed ones, I find my own counter example in the kind of bug that static typing would have caught easily and simply.&lt;br /&gt;&lt;br /&gt;Recently I have been looking at two things, Databases (and especially SQLObject)  and cross platform GUI libraries. I seem to have settled on wxPython for this. wxPython comes with a great Python shell called PyCrust, this once was it's own project but the maintainer agreed to fold into the main wxPython distribution.&lt;br /&gt;&lt;br /&gt;PyCrust has a namespace browser (which I thought was quite a nifty idea) except every time I tried to brows SQLObject it would hang. And the problem was name collision. The Namespace inspector in PyCrust checks for objects that expose a method called _getMethodNames, which will assist it in displaying the correct attributes. It just so happens that SQLObject has a class which will happily return a callable object for almost any attribute you ask it for. PyCrust is expecting a list of strings and gets an instance of a class it knows nothing about, to make things worse this class overloads the + operator for its own purpus (it is used&lt;br /&gt;to dynamically construct SQL queries from python expressions).&lt;br /&gt;&lt;br /&gt;An error is only generated 20 lines of code later when PyCrust attempts to iterate over what a local variable which should contain a list (but dosn't). Has this changed my mind about dynamic typing... Well No. In the end every language feature has benefits and drawbacks. Dynamic typing opens the door for bugs of this type which can be quite hard to locate. It also gives flexibility, a lot of flexibility, this can make the programming effort a lot easier, as it promotes decoupled code.&lt;br /&gt;In python it is relatively easy to create an objects which are interface compatible with other objects without having a dependency on them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-114619444993144861?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/114619444993144861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=114619444993144861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/114619444993144861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/114619444993144861'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2006/04/other-side-of-coin.html' title='Other side of the Coin'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26586517.post-114568296448281060</id><published>2006-04-21T21:30:00.000-07:00</published><updated>2006-04-23T04:04:58.506-07:00</updated><title type='text'>So what's so good about Python</title><content type='html'>So what's so good about Python? All things being equal I would program in Lisp, because on Language features I think it rules, but there are problems including lack of libraries, lack of portability and difficulty of installation, the fact that I am yet to meet a full implementation of the Common Lisp standard.&lt;br /&gt;&lt;br /&gt;A few years back I tried Franz Common Lisp and it was the best tool I have ever used for developing a GUI (you can make changes to the app while it is running, find an error, fix it and try again (and this includes the GUI), the only problem is the cost, I couldn't afford it, even if I managed to convince my employer to use a Language which almost no-one (who isn't a programmer) has ever heard off, they could afford it either.&lt;br /&gt;&lt;br /&gt;When I found Python it was really the next best thing (in the interim I had messed about with Haskell and Prolog). Now I'm not the only Lisper who has ended up in Python, the lambda expression was only ever included because so many ex Lisp programmers where asking for it. Strangle I've never really used it (lambda's work great in Lisp but they just don't seem to fit in python, its an element which doesn't fit).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;The other good points in my opinion:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Interfaces are implicit. Nothing annoyed me more in java that exceptions based on the compiler telling me this is the wrong type of object. I don't care if it implements a next() method I will not call it. With dynamic typing the system will happily call my next method.&lt;/li&gt;   &lt;li&gt;meaningfully whitespace. Using a return to denote lines of code is an excellent idea for so many reasons:&lt;/li&gt; &lt;/ul&gt; &lt;ol&gt;   &lt;li&gt;Lines of Code can have a definite meaning, there is no point in arguing about this, what constitutes one logical line of Python code is defined in the Language reference.&lt;/li&gt;   &lt;li&gt;How many times has the average programmer forgotten to press return at the end of a line? How many times has the same programmer forgotten a semicolon ? Most C text books will have a paragraph which goes something like this, because semicolons delimit statements it is possible to put more than one statement on the same line ... But this can make your code harder to read and is considered bad style. These days when I write JavaScript I don't put the semicolons either.&lt;/li&gt; &lt;/ol&gt; In short the dynamic nature of the language means that you can take shortcuts and avoid the need to write boilerplate code. The &lt;a href="http://www.sqlobject.org"&gt;SQLObject&lt;/a&gt; library&lt;br /&gt;takes this a step further be implicitly creating properties based on the existence of _get_ and -set_ methods this is a very pythonic approach.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;what's missing:&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;There are also a couple of features I would like to see:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Delegation: this is a neat feature of Delphi (I will go out on a limb and say the only neat feature) claim to the world that you have implement interface X and then delegate it to a member variable. In essence this is a tool for avoiding typing which will generate a whole set of stubs for you such as&lt;br /&gt;&lt;br /&gt;def method(self, *args, **kwargs):&lt;br /&gt;return self.member.method(*args, **kwargs)&lt;br /&gt;&lt;br /&gt;I have some Ideas about how to add something like this to SQLObject, which I'll be talking about in my next post.&lt;br /&gt;&lt;br /&gt;Macros: Someone coming from C will have a long list of why macros are bad and dangerous. The problem is that the C macro pre-processor is not a true part of the language and is text based. Comings from Lisp I am familiar with an integrated macro expander which is part of the language and understands the language, hence it can solve all of the problems, associated with macros. And why would you want this... For speed optimization, and writing programs that write programs, if you can predict a head of time that a loop will execute exactly 20 times then why not unwrap it ... Because writhing the same&lt;br /&gt;lines with minor variations is annoying and error prone (even with copy and past), so let the macro expander do it.&lt;br /&gt;&lt;br /&gt;The first problem however is one of syntax? In Lisp macros fit, they look don't require any major contortions to express. I'm not the only one who has raised the idea of adding Lisp like macros to Python but so far no-one is come up with a model of what said macros should actually look like.&lt;br /&gt;&lt;br /&gt;OK That will do for this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26586517-114568296448281060?l=the-willows.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://the-willows.blogspot.com/feeds/114568296448281060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26586517&amp;postID=114568296448281060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/114568296448281060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26586517/posts/default/114568296448281060'/><link rel='alternate' type='text/html' href='http://the-willows.blogspot.com/2006/04/so-whats-so-good-about-python.html' title='So what&apos;s so good about Python'/><author><name>Konrad Zielinski</name><uri>http://www.blogger.com/profile/09649199263417264293</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
