<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Theta Code</title>
	<atom:link href="http://theta.codesimplicity.com/feed" rel="self" type="application/rss+xml" />
	<link>http://theta.codesimplicity.com</link>
	<description>Scientology and Computer Programming</description>
	<pubDate>Sat, 12 Jul 2008 19:00:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Programming Languages</title>
		<link>http://theta.codesimplicity.com/archives/19</link>
		<comments>http://theta.codesimplicity.com/archives/19#comments</comments>
		<pubDate>Sat, 12 Jul 2008 19:00:31 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

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

		<category><![CDATA[programming languages]]></category>

		<category><![CDATA[self analysis]]></category>

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

		<guid isPermaLink="false">http://theta.codesimplicity.com/?p=19</guid>
		<description><![CDATA[In Self Analysis, L. Ron Hubbard says:

  Language is quite acceptable when understood as a symbol for the act and thing. But the word &#8220;ashtray&#8221; is no substitute for an ashtray. If you do not believe this, try to put your ashes on the airwaves which have just carried the word &#8220;ashtray.&#8221; Called a [...]]]></description>
			<content:encoded><![CDATA[<p>In <em>Self Analysis</em>, L. Ron Hubbard says:</p>
<blockquote><p>
  Language is quite acceptable when understood as a <em>symbol</em> for the act and thing. But the word &#8220;ashtray&#8221; is no substitute for an ashtray. If you do not believe this, try to put your ashes on the airwaves which have just carried the word &#8220;ashtray.&#8221; Called a &#8220;saucer&#8221; or an &#8220;elephant,&#8221; the object intended for the ashes serves just as well.
</p></blockquote>
<p>Have you ever thought about the fact that a programming language is just a <em>representation of actions</em>? (In actual fact, it&#8217;s a representation for a structure of data, actions taken on that data, and the results of those actions.) It&#8217;s just symbols. It doesn&#8217;t matter if we call a symbol &#8220;goto&#8221; or we call it &#8220;elephant,&#8221; it&#8217;s still going to be doing the same thing. And it&#8217;s not those symbols that <em>are</em> the actions, they just <em>represent</em> the actions.</p>
<p>It&#8217;s easy to become immersed in the complexities of programming languages, and to lose view of the fact that a computer program is there to <em>do something</em>, and that is the only reason it&#8217;s there. A computer program is <em>not</em> in fact &#8220;a bunch of code,&#8221; but is actually a <em>series of actions performed by the computer</em>, and the code is just a <em>representation</em>.</p>
<p>When you write a shopping list, you are giving yourself <em>instructions</em> about what to buy. The actual <em>activity</em> of shopping involves walking through the store and picking those items off the shelf. If you just wrote the instructions and called it a day, you wouldn&#8217;t be <em>shopping</em>. The instructions are a symbol for the action, not the action itself.</p>
<p>Similarly, a &#8220;bunch of code&#8221; is not a computer program, it&#8217;s a <em>representation of a computer program</em>. That&#8217;s kind of an interesting thought, isn&#8217;t it?</p>
<p>-Max</p>
<p><a href="http://theta.codesimplicity.com/archives/19#comments">Comments: 0</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/19/feed</wfw:commentRss>
		</item>
		<item>
		<title>Change</title>
		<link>http://theta.codesimplicity.com/archives/18</link>
		<comments>http://theta.codesimplicity.com/archives/18#comments</comments>
		<pubDate>Wed, 23 Apr 2008 17:36:52 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[handbook for preclears]]></category>

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

		<guid isPermaLink="false">http://theta.codesimplicity.com/archives/18</guid>
		<description><![CDATA[In Handbook For Preclears*, L. Ron Hubbard writes:

  Man is successful. That is evident because he is here today after eons of trial and error, good and bad planning. And he is successful because he can change.

Now, you really should read that whole chapter (Chapter One in the book) for the complete context of [...]]]></description>
			<content:encoded><![CDATA[<p>In <em><a href="http://www.bridgepub.com/items/hbfpc-sc.html">Handbook For Preclears</a>*</em>, L. Ron Hubbard writes:</p>
<blockquote><p>
  Man is successful. That is evident because he is here today after eons of trial and error, good and bad planning. And he is successful because he can change.
</p></blockquote>
<p>Now, you really should read that whole chapter (Chapter One in the book) for the complete context of the quote. It&#8217;s actually quite a beautiful and inspiring chapter&#8211;well worth reading. But that quote is enough for what I want to talk about today.</p>
<p>Those of you who read my <a href="http://www.codesimplicity.com/">main tech blog</a> know that I talk <a href="http://www.codesimplicity.com/archives/23">a lot about</a> <a href="http://www.codesimplicity.com/archives/19">change</a>, so this quote from L. Ron Hubbard made me smile when I read it. <img src='http://theta.codesimplicity.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>What do our software systems do? They change. The environment changes, requirements change&#8211;things change. It&#8217;s our ability to change our software <em>effectively</em> that largely determines whether we are good or bad programmers. It&#8217;s not our ability to construct a system that &#8220;works&#8221;&#8211;although that&#8217;s certainly important. No, what distinguishes the great programmer from the mediocre programmer is that the great programmer writes systems that can be <em>changed</em>.</p>
<p>Granted, just being able to construct a working system can be quite a challenge! When you&#8217;re a brand-new programmer, that&#8217;s what takes up most of the time&#8211;learning the language, figuring out how to do things, just making things <em>work</em>. That&#8217;s completely understandable if you&#8217;re a new programmer, or if you&#8217;re new to some language or technology. But once you&#8217;ve got a handle on that, it should quickly (or slowly) become apparent that there&#8217;s going to be a <em>future</em> to your code, and that means that you&#8217;re going to be <em>changing</em> it. If you didn&#8217;t plan for change, that&#8217;s going to be tough.</p>
<p>What do I mean by &#8220;plan for change?&#8221; Well, just have the idea, when you&#8217;re writing the code, &#8220;this might have to change some day,&#8221; and think, &#8220;what would keep this flexible, while still keeping it simple?&#8221; Sometimes that takes learning more about software design, but it&#8217;s always well worth it. The more you program, the better you&#8217;ll get at it. Just have &#8220;changeability&#8221; as a goal, and as you become a better and better programmer, your code will become easier and easier to change. It only becomes a problem if you never even care about it, and just spend the rest of your days as a programmer building <a href="http://www.computerhope.com/jargon/s/spaghett.htm">spaghetti code</a> that &#8220;works&#8221; but can never be fixed or changed when needed.</p>
<p>And as a note very related to this, never let anybody tell you, &#8220;If you&#8217;re not coding, you&#8217;re not working!&#8221; No! Planning, designing, refactoring, and even a bit of scribbling thoughts on paper are all <em>extremely</em> valuable uses of your time, and should not be neglected. Those are a large part of what help you cope with change. Programming isn&#8217;t all typing&#8211;it&#8217;s a bit of observing, thinking, and talking, too.</p>
<p>-Max</p>
<hr />
<p>* A <a href="http://www.whatisscientology.org/html/Part14/Chp50/pg1023.html">preclear</a> is the most commonly-used term for a person receiving Scientology counseling. The term &#8220;preclear&#8221; is used because the person is on the way to being a <a href="http://www.whatisscientology.org/html/Part03/Chp13/pg0245.html">Clear</a>.</p>
<p><a href="http://theta.codesimplicity.com/archives/18#comments">Comments: 0</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/18/feed</wfw:commentRss>
		</item>
		<item>
		<title>Future</title>
		<link>http://theta.codesimplicity.com/archives/17</link>
		<comments>http://theta.codesimplicity.com/archives/17#comments</comments>
		<pubDate>Wed, 02 Apr 2008 17:00:49 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

		<category><![CDATA[philadelphia doctorate course]]></category>

		<guid isPermaLink="false">http://theta.codesimplicity.com/archives/17</guid>
		<description><![CDATA[In a series of lectures called the Philadelphia Doctorate Course, L. Ron Hubbard says:

All of your work&#8230;is motivated by the future, not motivated by the past: you want to eat tomorrow, why, you work today.

That&#8217;s from the seventh lecture in the series, on December 2, 1952, for those who are curious.  
So why program? [...]]]></description>
			<content:encoded><![CDATA[<p>In a series of lectures called the <em>Philadelphia Doctorate Course</em>, L. Ron Hubbard says:</p>
<blockquote><p>
All of your work&#8230;is motivated by the future, not motivated by the past: you want to eat tomorrow, why, you work today.
</p></blockquote>
<p>That&#8217;s from the seventh lecture in the series, on December 2, 1952, for those who are curious. <img src='http://theta.codesimplicity.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>So why program? Are we doing it because the boss tells us to? Maybe we&#8217;re doing it to eat tomorrow and pay our rent and buy nice things for ourselves. I think a lot of programmers are doing that, and there&#8217;s absolutely nothing wrong with that. I mean, it sounds a little unpleasant&#8211;working so you can live, while spending most of life at work&#8211;but it&#8217;s not evil or wrong or something like that. But in addition to all that, aren&#8217;t there some people who might take a little pride in their work? Maybe there&#8217;s something in the future that we&#8217;re working toward&#8211;a completed product, a happy user, a piece of software that helps people&#8211;<em>something</em>.</p>
<p>Well, that means our software must have a <em>future</em>. And we&#8217;re creating that future, right now. In fact, you could go so far as to say that everything we do to the software in present time is somehow motivated by the future. It might be the future five minutes from now, or it might be two years from now. It doesn&#8217;t matter <em>how far</em> into the future we&#8217;re talking about, it&#8217;s just clear that it&#8217;s the <em>future</em> that motivates the tremendous amount of thought and effort that we put in to our systems.</p>
<p>We write code now so that we have a working system tomorrow. We put effort into the system now so that it can save us effort in the future. We work on our software architecture so that we don&#8217;t have to continually fix our software <em>in the future</em>.</p>
<p>It&#8217;s very easy to think of a system as &#8220;a series of decisions made in the past that led up to what we have now.&#8221; But who cares, because our <em>work</em> now isn&#8217;t motivated by a desire to affect the <em>past</em>&#8211;you can&#8217;t affect the past, that&#8217;s a pretty fundamental law of this universe. <img src='http://theta.codesimplicity.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><em>You</em> are the programmer, <em>you</em> are the cause of the system right now, and that cause is motivated by <em>the future</em>, one way or another.</p>
<p>-Max</p>
<p><a href="http://theta.codesimplicity.com/archives/17#comments">Comments: 4</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/17/feed</wfw:commentRss>
		</item>
		<item>
		<title>Stopping a Creation</title>
		<link>http://theta.codesimplicity.com/archives/16</link>
		<comments>http://theta.codesimplicity.com/archives/16#comments</comments>
		<pubDate>Mon, 10 Mar 2008 13:34:22 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

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

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

		<category><![CDATA[fundamentals of thought]]></category>

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

		<guid isPermaLink="false">http://theta.codesimplicity.com/archives/16</guid>
		<description><![CDATA[In Scientology: The Fundamentals of Thought, L. Ron Hubbard says:

To stop any creation, it can be established that one once knew one was creating it (finding that thought) and making it known again.

At first, that might seem like a funny thing to apply to programming. After all, aren&#8217;t we trying to create programs, not stop [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://www.bridgepub.com/materials/books/5.vm">Scientology: The Fundamentals of Thought</a>, L. Ron Hubbard says:</p>
<blockquote><p>
To stop any creation, it can be established that one once knew one was creating it (finding that thought) and making it known again.
</p></blockquote>
<p>At first, that might seem like a funny thing to apply to programming. After all, aren&#8217;t we trying to <em>create</em> programs, not <em>stop</em> their creation?</p>
<p>Well, yes. But there are a few things that we don&#8217;t want to create, like bugs, or bad designs. I know I&#8217;d be happier if those stopped being created. <img src='http://theta.codesimplicity.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> So how can this quote help us?</p>
<p>Well, have you ever noticed that some programmers produce far, far more bugs than other programmers? They just can&#8217;t seem to stop creating bugs. Now, these programmers, have they ever thought back to the moment they were making the bug, and found for themselves what decision they made at the time? Have they ever really <em>taken responsibility</em> for having made a decision that caused a bug, or do they just &#8220;fix the bug&#8221; and never try to understand the source of it?</p>
<p>Many of the greatest programmers I know have an instinct that they should go back and find out where a bug came from. They just <em>know</em> that this is important, even if they can&#8217;t quite articulate <em>why</em> (other than the practical sense of &#8220;Well, it might also be affecting other things&#8221; or &#8220;It&#8217;s educational&#8221;). When they find it, if they caused it, they&#8217;ll say, &#8220;Oh, yep, that was me.&#8221; They might even explain a little of what they were thinking, at the time.</p>
<p>On the flip side of the coin, some of the worst programmers I know spend a lot of their time <em>blaming</em> others for having caused bugs. Whether the blame is right or not, it doesn&#8217;t matter, because what needs to be established is &#8220;that <strong>one</strong> once knew one was creating it,&#8221; not that <em>somebody else</em> knew one was creating it. You have to find out for <em>yourself</em> what happened!</p>
<p>This whole thing also happens with software architecture. Somebody makes a decision like, &#8220;Okay, we&#8217;re going to design this poorly because we&#8217;re crunched for time.&#8221; Then, years later, they wonder why that part of the software is so hard to maintain! They never went back and took responsibility for having made that decision, they just hacked and patched and fixed&#8211;in other words, they <em>kept on creating</em> the bad design.</p>
<p>Often, it seems like there&#8217;s no way to handle bad designers or poor programmers. That they&#8217;re just hopeless and have to be let go or removed from the project. But maybe&#8211;just maybe&#8211;something could be done about it by teaching them to go back, note &#8220;Oh, right, I did have a thought about creating this,&#8221; and then get on with making it better or creating something new.</p>
<p>-Max</p>
<p><a href="http://theta.codesimplicity.com/archives/16#comments">Comments: 0</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/16/feed</wfw:commentRss>
		</item>
		<item>
		<title>How is a Program Like a Universe?</title>
		<link>http://theta.codesimplicity.com/archives/12</link>
		<comments>http://theta.codesimplicity.com/archives/12#comments</comments>
		<pubDate>Sun, 17 Feb 2008 01:23:26 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

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

		<category><![CDATA[object-oriented programming]]></category>

		<category><![CDATA[scientology 8-8008]]></category>

		<category><![CDATA[shivani rajan]]></category>

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

		<category><![CDATA[the factors]]></category>

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

		<category><![CDATA[web browsers]]></category>

		<category><![CDATA[word processor]]></category>

		<guid isPermaLink="false">http://theta.codesimplicity.com/archives/12</guid>
		<description><![CDATA[In a book called Scientology 8-8008, L. Ron Hubbard defines a &#8220;universe&#8221; like this:

  A universe is defined as &#8220;a whole system of created things.&#8221; There could be and are many universes and there could be many kinds of universes.

If you&#8217;ve never thought about it, it might be hard to envision the idea of [...]]]></description>
			<content:encoded><![CDATA[<p>In a book called <em><a href="http://www.scientology.org.uk/">Scientology</a> 8-8008</em>, L. Ron Hubbard defines a &#8220;universe&#8221; like this:</p>
<blockquote><p>
  A universe is defined as &#8220;a whole system of created things.&#8221; There could be and are many universes and there could be many kinds of universes.
</p></blockquote>
<p>If you&#8217;ve never thought about it, it might be hard to envision the idea of a universe that doesn&#8217;t look or act like this one. Here&#8217;s a way to think about it: Yesterday, I ran into <a href="http://www.shivanirajan.com/">an abstract artist</a> and I had this thought about her art&#8211;I asked her, &#8220;If you could create a universe, would it look like this one [the physical universe]?&#8221; Instantly, she said, &#8220;No!&#8221; This is something that I had not understood about abstract art until that very point&#8211;that it represents a whole universe made by the artist, not a representation of <em>this</em> universe. Her universe has colors and swirls and represents things in a whole different way than this universe.</p>
<p>So that&#8217;s a very wild example of &#8220;a universe&#8221;&#8211;the things that you see in abstract paintings. That&#8217;s &#8220;a whole system of created things&#8221; completely different from the universe we&#8217;re used to seeing (the physical universe).</p>
<p>In a much <em>less</em> wild way, a computer program is also a whole universe. For example, let&#8217;s take a simple program that adds 1 plus 1 and gets 2. <span id="more-12"></span> The only rule in that universe is addition. The only objects in that universe are two number 1&#8217;s and a number 2. And yet, that&#8217;s enough to be a &#8220;whole system of created things.&#8221;</p>
<p>This becomes especially apparent in larger computer programs, particularly ones where you&#8217;re using <a href="http://dictionary.cambridge.org/define.asp?key=54675&#038;dict=CALD">Object-Oriented Programming</a>. You say &#8220;I have a Dog object and a Frisbee object. Frisbees can be thrown, and a Dog can retrieve Frisbees.&#8221; You&#8217;ve actually just invented a universe&#8211;that&#8217;s &#8220;a whole system of created things&#8221; right there.</p>
<p>A word processor is a universe where you type keys and they appear on the page, and there are certain rules about how they are formatted, ways you can make them bold, italics, etc.</p>
<p>In fact, I would go so far as to say that computers are actually <em>universe simulators</em>. This seems to be the most accurate description of a computer that I can come up with.</p>
<p>The <a href="http://www.project-x.org.uk/bpcollp.html">very earliest computers</a> could simulate very limited universes&#8211;they cracked German coded messages during World War II using some very basic rules. As time went on, they evolved into being able to simulate more advanced universes, such as a word processor or a spreadsheet. Now most people run a universe called Windows on their computer that has little &#8220;windows&#8221; that contain other universes, like word processors, web browsers, and spreadsheets.</p>
<p>This is probably why games have always pushed the limits of computer hardware more than anything else&#8211;because most computer games are directly and obviously <em>universes</em>, and some darn complex universes at that! (Particularly when you start getting into 3D games, the kinds of calculations required to simulate that universe in a computer are pretty intense.)</p>
<p>This is also why I think <abbr title="Virtual Reality">VR</abbr> has never been successful&#8211;because the job of a computer is to simulate universes that <em>aren&#8217;t</em> this universe, not to re-simulate this one. (This is also why <abbr title="Artificial Intelligence">AI</abbr> doesn&#8217;t really get us anywhere&#8211;because universes don&#8217;t <em>think</em>, they just <em>are</em>.)</p>
<p>Anyhow, <em><a href="http://bpi.goldenageofknowledge.net/items/scn88008_pdc_fact.html">Scientology 8-8008</a></em> has a lot of information on how universes are created, and looking at it, I&#8217;ve personally found it applies in really interesting way to writing programs! Particularly the section called <a href="http://whatisscientology.org/html/Part14/Chp41/pg0772.html">The Factors</a>, which deals a lot with the creation of universes.</p>
<p>-Max</p>
<p><a href="http://theta.codesimplicity.com/archives/12#comments">Comments: 0</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/12/feed</wfw:commentRss>
		</item>
		<item>
		<title>Pleasure In Programming</title>
		<link>http://theta.codesimplicity.com/archives/10</link>
		<comments>http://theta.codesimplicity.com/archives/10#comments</comments>
		<pubDate>Mon, 04 Feb 2008 06:43:48 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

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

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

		<category><![CDATA[mac os x]]></category>

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

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

		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://theta.codesimplicity.com/archives/10</guid>
		<description><![CDATA[We&#8217;ve long known that a programmer&#8217;s productivity depends largely upon how much he enjoys his work environment and the task that he&#8217;s been assigned. We know that various things that make the environment nicer assist productivity, for some seemingly ungraspable reason.
To me, at least, this has long been a mystery. Why is it that a [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve long known that a programmer&#8217;s productivity depends largely upon how much he enjoys his work environment and the task that he&#8217;s been assigned. We know that various things that make the environment nicer assist productivity, for some seemingly ungraspable reason.</p>
<p>To me, at least, this has long been a mystery. Why is it that a programmer, given total understanding of his field, excellent training, and high intelligence, could yet produce better in a more <em>enjoyable</em> environment? It would seem to have nothing to do with the interaction between a person and a machine, as programming <em>seems</em> to be.</p>
<p>Well, in <em><a href="http://www.whatisscientology.org/html/Part03/Chp07/pg0186-a.html">Dianetics</a>:  The Modern Science of Mental Health</em>, L. Ron Hubbard talks about <em>pleasure</em>, over and over. One of the things he says is:</p>
<blockquote><p>
  There is a necessity for pleasure, a necessity as live and quivering and vital as the human heart itself. &#8230; The creative, the constructive, the beautiful, the harmonious, the adventurous, yes, and even escape from the maw of oblivion, these things are pleasure and these things are necessity.
</p></blockquote>
<p>Talk to anybody who worked at Netscape in its early days, and they will tell you that there was a sense of <em>adventure</em> in what they were doing. Talk to some of the people who work on Google&#8217;s greatest projects, and ask them about how pleasurable <em>they</em> find their jobs. Ask the Apple engineers how enjoyable it was to create the iPhone, or to design Mac OS X. Ask the world&#8217;s greatest user interface designers if the harmony of a perfectly usable, good-looking interface isn&#8217;t something that makes them <em>happy</em>.</p>
<p>Or just ask me why I have spent the last four years of my life working on <a href="http://www.bugzilla.org/">Bugzilla</a>.</p>
<p>The world&#8217;s greatest creations don&#8217;t come from the desire to make a quick buck, or the fear of a manager&#8217;s wrath. They don&#8217;t come merely from some programmer&#8217;s desire to prove how smart they are, and impress their peers. And they definitely don&#8217;t come about from organizations where programmers sit, blank-faced and void of thought, forced to stare at a computer to the exclusion of all else for eight hours a day, deprived of the pleasures of life. No, true creation flourishes in environments that bring into being that necessity &#8220;as live and quivering and vital as the human heart itself&#8221;&#8211;pleasure.</p>
<p>-Max</p>
<p><a href="http://theta.codesimplicity.com/archives/10#comments">Comments: 5</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/10/feed</wfw:commentRss>
		</item>
		<item>
		<title>Beautiful Code</title>
		<link>http://theta.codesimplicity.com/archives/14</link>
		<comments>http://theta.codesimplicity.com/archives/14#comments</comments>
		<pubDate>Sat, 02 Feb 2008 02:21:39 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[AP&amp;A]]></category>

		<category><![CDATA[bad code]]></category>

		<category><![CDATA[beautiful code]]></category>

		<category><![CDATA[good code]]></category>

		<category><![CDATA[Scientology 0-8]]></category>

		<category><![CDATA[ugly code]]></category>

		<guid isPermaLink="false">http://theta.codesimplicity.com/archives/14</guid>
		<description><![CDATA[In Scientology 0-8: The Book Of Basics, L. Ron Hubbard says:

  Goodness and Badness, Beautifulness and Ugliness, are alike considerations and have no other basis than opinion.

I&#8217;ve heard many programmers talk about &#8220;beautiful code.&#8221; Of course, it seems to mean something different to everybody! People can definitely have arguments over what is good or [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://bpi.goldenageofknowledge.net/items/scn08.html"><em>Scientology 0-8: The Book Of Basics</em></a>, L. Ron Hubbard says:</p>
<blockquote><p>
  Goodness and Badness, Beautifulness and Ugliness, are alike considerations and have no other basis than opinion.
</p></blockquote>
<p>I&#8217;ve heard many programmers talk about &#8220;beautiful code.&#8221; Of course, it seems to mean something different to everybody! People can definitely have arguments over what is <em>good</em> or <em>beautiful</em> in code.</p>
<p>Now, most people don&#8217;t write code and then think, &#8220;Aw, that code was terrible, horrible, and ugly.&#8221; Most programmers are pretty happy when they complete a project, and tend to admire their own creations. They might have a terrible tangled mass of code, but to <em>them</em> it might be beautiful. For us, though, who have to fix their terrible, tangled mass of code, maybe it&#8217;s not so beautiful.</p>
<p>So what can we do about people this like? Obviously, <em>we</em> know that there are better ways to write code and worse ways, and we&#8217;ve formed our opinions based on experience or having read some sensible things and agreed with them. We can&#8217;t just let people write terrible code and mess things up. So what do we do?</p>
<p>Well, has anybody ever changed <em>your</em> <strong>opinion</strong> about something? How did they do it? If <em>you</em> read something and thought it was sensible, and came to see why &#8220;good&#8221; code was &#8220;good&#8221;, and &#8220;bad&#8221; code was &#8220;bad&#8221;, then perhaps that person could read that thing too! Perhaps you could explain to them gently why you hold your opinions, and give them the chance to change theirs. Perhaps you could show them some good evidence, and they&#8217;d change their mind.</p>
<p>At the very least, a little communication probably wouldn&#8217;t <em>hurt</em> anybody. <img src='http://theta.codesimplicity.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>No matter what you choose, once you realize that all that&#8217;s happening is you have different <em>opinions</em>, the way is open to do something about it.</p>
<hr />
<p>By the way, the quote above is part of the &#8220;Axioms of Scientology.&#8221; In Scientology, &#8220;axioms&#8221; are:</p>
<blockquote><p>
  <strong>axioms</strong>: Statements of natural laws on the order of those of the physical sciences.
</p></blockquote>
<p>That&#8217;s from the glossary of a book called <em>Advanced Procedure and Axioms</em>, by L. Ron Hubbard.</p>
<p>The axioms are numbered, and the axiom above is Axiom 31. The rest of them are all very interesting, and I&#8217;d recommend you get a copy of <a href="http://bpi.goldenageofknowledge.net/items/scn08.html">Scientology 0-8: The Book Of Basics</a>, if you want to read the rest of them.</p>
<p>-Max</p>
<p><a href="http://theta.codesimplicity.com/archives/14#comments">Comments: 0</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/14/feed</wfw:commentRss>
		</item>
		<item>
		<title>Increasing Complexity Over Time</title>
		<link>http://theta.codesimplicity.com/archives/9</link>
		<comments>http://theta.codesimplicity.com/archives/9#comments</comments>
		<pubDate>Mon, 28 Jan 2008 05:14:32 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

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

		<guid isPermaLink="false">http://theta.codesimplicity.com/archives/9</guid>
		<description><![CDATA[In Dianetics, L. Ron Hubbard mentions:

  Only things which are poorly known become more complex the longer one works upon them.

Have you ever seen that happen with a software project? It just becomes more complex, and more complex, and more complex, and eventually it&#8217;s just a huge mass of complexity that nobody can maintain [...]]]></description>
			<content:encoded><![CDATA[<p>In <em><a href="http://www.amazon.com/Dianetics-Modern-Science-Mental-Health/dp/088404632X">Dianetics</a></em>, L. Ron Hubbard mentions:</p>
<blockquote><p>
  Only things which are poorly known become more complex the longer one works upon them.
</p></blockquote>
<p>Have you ever seen that happen with a software project? It just becomes more complex, and more complex, and more complex, and eventually it&#8217;s just a huge mass of complexity that nobody can maintain anymore?</p>
<p>I think it might be interesting to think about that in the context of the above quote. Perhaps there&#8217;s actually something more that could be <em>known</em> about the system. Maybe your users don&#8217;t actually need or want all those features. Maybe there&#8217;s more research that could be done on different areas of the system. Anything, really&#8211;just <em>know more</em> about it. Maybe there&#8217;s even some fundamental missing data about life or programming that&#8217;s hampering the project.</p>
<p>Whatever it is, I think it&#8217;s pretty interesting to think that <em>knowledge</em> could defeat complexity!</p>
<p>-Max</p>
<p><a href="http://theta.codesimplicity.com/archives/9#comments">Comments: 2</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/9/feed</wfw:commentRss>
		</item>
		<item>
		<title>Technical Controversy and the Unknown</title>
		<link>http://theta.codesimplicity.com/archives/7</link>
		<comments>http://theta.codesimplicity.com/archives/7#comments</comments>
		<pubDate>Mon, 14 Jan 2008 15:13:18 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

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

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

		<guid isPermaLink="false">http://scientology.codesimplicity.com/archives/7</guid>
		<description><![CDATA[In Dianetics: The Modern Science Of Mental Health, L. Ron Hubbard says:

  It is not untrue that where one finds the greatest controversy, there he will also find the least comprehension. And where the facts are least precise, there one can also find the greatest arguments.

There are some areas of computing that are very [...]]]></description>
			<content:encoded><![CDATA[<p>In <em><a href="http://www.bridgepub.com/materials/books/101.vm">Dianetics: The Modern Science Of Mental Health</a></em>, L. Ron Hubbard says:</p>
<blockquote><p>
  It is not untrue that where one finds the greatest controversy, there he will also find the least comprehension. And where the facts are least precise, there one can also find the greatest arguments.
</p></blockquote>
<p>There are some areas of computing that are very difficult to comprehend. There are also areas where the facts are very imprecise, or where no real facts are known (there are just guesses or theories, instead).</p>
<p>In these areas, programmers can get into <em>endless</em> technical debates that seem to get nowhere.</p>
<p>The subject of &#8220;security&#8221; is often like this. Developers can get into extremely long technical debates about how to implement security features in their programs, how to fix security issues, and so on. But, um, security <em>from what</em>? Security that allows the user to <em>do what</em>? How important is security? What level of security is important? What is the basic, fundamental point of computer security? What do we even mean when we say &#8220;computer security&#8221;? If I say my program is &#8220;secure&#8221;, what does that <em>mean</em>?</p>
<p>Can you see that there might be some things there that are hard to comprehend, or that there might be some imprecise facts in that field?</p>
<p>The subject of user interface design is also like this. Developers can get into some knock-down, drag-out fights about user interfaces, <em>probably because they don&#8217;t understand them</em>, and because the field is full of imprecise facts. I personally leave most UI work to the UI engineers, and stay out of it. <img src='http://theta.codesimplicity.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> I let the people who <em>do</em> comprehend these things do their job, and I don&#8217;t encourage debates in areas that are poorly understood.</p>
<p>When I don&#8217;t understand something, or when the facts aren&#8217;t precise enough, I think there&#8217;s nothing wrong with saying, &#8220;I don&#8217;t understand this!&#8221; or &#8220;We need more data!&#8221; And that&#8217;s the <em>end of the conversation</em>. There really shouldn&#8217;t be any more debate after that, because it&#8217;s going to get nowhere!</p>
<p>Whenever a technical debate goes on and on without resolution, I say, &#8220;Okay, obviously something is unknown here. What more could we find out about this?&#8221;</p>
<p>There&#8217;s nothing wrong with debating the pros and cons of technical issues. But when it becomes really controversial or people become strongly argumentative, that&#8217;s when I start applying the quote above from <em>Dianetics</em>.</p>
<p>As an exercise, you can see for yourself if this applies. Look at an area in computing where there&#8217;s a lot of controversy (such as operating systems, programming languages, security, etc.), and check: Are there some imprecise facts, or is there some missing comprehension in that field?</p>
<p>-Max</p>
<p><a href="http://theta.codesimplicity.com/archives/7#comments">Comments: 5</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/7/feed</wfw:commentRss>
		</item>
		<item>
		<title>Complexity to Fix Complexity</title>
		<link>http://theta.codesimplicity.com/archives/8</link>
		<comments>http://theta.codesimplicity.com/archives/8#comments</comments>
		<pubDate>Sun, 13 Jan 2008 17:59:34 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

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

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

		<guid isPermaLink="false">http://scientology.codesimplicity.com/archives/8</guid>
		<description><![CDATA[In Dianetics: The Modern Science of Mental Health, L. Ron Hubbard discusses a principle called the Introduction of an Arbitrary:

 An aribtrary structure is one in which one error has been observed and an effort has been made to correct it by introducing another error. In progressive complexity, new errors must be introduced to nullify [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://www.amazon.com/Dianetics-Modern-Science-Mental-Health/">Dianetics: The Modern Science of Mental Health</a>, L. Ron Hubbard discusses a principle called the Introduction of an Arbitrary:</p>
<blockquote><p>
 An aribtrary structure is one in which one error has been observed and an effort has been made to correct it by introducing another error. In progressive complexity, new errors must be introduced to nullify the evil effects of old errors.
</p></blockquote>
<p>How many times have you seen this happen with a software project? It&#8217;s poorly designed in the first place, and then somebody discovers an error. Instead of fixing the <em>design</em>, they tack on some &#8220;hack&#8221; to fix the error. In other words, just like Ron says, they keep introducing <em>new errors</em>.</p>
<p>It&#8217;s long been known that this is a bad idea, but the <em>new</em> idea here is to look at this as a process of <em>introducing errors</em>. Just because some code &#8220;fixes a bug&#8221; doesn&#8217;t mean that it&#8217;s not an <em>error</em> to write code that way. You are actually introducing new errors into your program every time you &#8220;hack&#8221; in a fix instead of fixing the real root cause of a problem.</p>
<p>I think most professional developers have long felt uneasy with &#8220;hacking&#8221; in a fix, but perhaps didn&#8217;t quite have anything to back them up when they protested and said, &#8220;I just want to fix it the right way!&#8221; However, if we look at &#8220;hacks&#8221; as <em>errors</em>, then it becomes easier to see <em>why</em> the &#8220;right way&#8221; <em>is</em> the right way.</p>
<p>So in the future, when you&#8217;re fixing an error, don&#8217;t introduce new errors to fix it. Do things the &#8220;right way.&#8221; <img src='http://theta.codesimplicity.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>-Max</p>
<p><a href="http://theta.codesimplicity.com/archives/8#comments">Comments: 4</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/8/feed</wfw:commentRss>
		</item>
		<item>
		<title>ARC and User Interfaces</title>
		<link>http://theta.codesimplicity.com/archives/6</link>
		<comments>http://theta.codesimplicity.com/archives/6#comments</comments>
		<pubDate>Sun, 13 Jan 2008 05:33:22 +0000</pubDate>
		<dc:creator>Max Kanat-Alexander</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

		<guid isPermaLink="false">http://scientology.codesimplicity.com/archives/6</guid>
		<description><![CDATA[In Scientology, one of the most important ideas is called ARC, which stands for Affinity, Reality, and Communication.
I was thinking the other day about an interesting way that this applies to computing.
The first thing you have to realize is that as a programmer, your user interface is a Communication to the user. Over a very [...]]]></description>
			<content:encoded><![CDATA[<p>In Scientology, one of the most important ideas is called <a href="http://www.scientology.org/html/opencms/cos/scientology/en_US/religion/description/scientology/pg006.html">ARC</a>, which stands for Affinity, Reality, and Communication.</p>
<p>I was thinking the other day about an interesting way that this applies to computing.</p>
<p>The first thing you have to realize is that as a programmer, your user interface is a <strong>Communication</strong> to the user. Over a very long distance, you are actually communicating something to the user. You happen to be communicating a window with some buttons and funny words in it, actually.</p>
<p>Now, it&#8217;s always mystified me why users like pretty interfaces that are <em>impossible to use</em>. That is, why does it sometimes seem like aesthetics is more important than usability? Well, one important thing to consider here is that the user will have to have some <strong>Affinity</strong>, or liking, for your user interface. People tend to have more affinity for pretty things. So the more &#8220;likable&#8221; your user interface is, the more effective your program is going to be. Of course, I think &#8220;likable&#8221; also includes <em>usable</em>, since I personally really dislike user interfaces that are hard to use. That is, my affinity for them is low. So, both &#8220;pretty&#8221; and &#8220;usable&#8221; are important to affinity, for user interfaces.</p>
<p>You as a programmer should also have some affinity for the user&#8211;generally if you&#8217;re thinking, &#8220;I&#8217;d like to help this nice guy be able to use my program better,&#8221; that&#8217;s a lot better than, &#8220;All my users are stupid and I don&#8217;t care if they can use this thing at all.&#8221;</p>
<p>The final aspect of the triangle is <strong>Reality</strong>, which we usually think of as agreement. Does your user <em>know</em> what that weird little icon means? <em>Is there actually reality (agreement) between you and the user?</em> There are lots of important pre-arranged agreements with computers that are important to remember. For example, &#8220;When I click the X button, the window will close.&#8221; That&#8217;s pretty much true on <em>all</em> operating systems (even Linux, which I&#8217;m using now). If I clicked the X button and I got a screen full of dancing pigs, I&#8217;d probably be annoyed (though slightly amused), because &#8220;dancing pigs&#8221; wasn&#8217;t really my reality, there.</p>
<p>All together, ARC adds up to Understanding. So, if users are having a hard time <em>understanding</em> your program, check which component you&#8217;re missing! Are you failing to communicate something? Is the affinity between you and the user too low? Or is there some missing reality (or some reality that you enforced upon them without their permission)? </p>
<p>There&#8217;s lots of ways to use this concept of ARC in user interface design, and lots of different ways it could go wrong. The items in the blog above are just examples, to sort of get your mind rolling on it.</p>
<p>-Max</p>
<p><a href="http://theta.codesimplicity.com/archives/6#comments">Comments: 0</a></p>]]></content:encoded>
			<wfw:commentRss>http://theta.codesimplicity.com/archives/6/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
