<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Z1R0</title>
      <link>http://www.z1r0.com/</link>
      <description>All your base are belong to us!</description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Wed, 26 Nov 2008 19:03:07 -0700</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

      
      <item>
         <title>OpenBSD Cheat Sheet</title>
         <description><![CDATA[I always find myself having to dig out the following commands after I've upgraded my systems. Here's my contribution to working smarter, not harder.

<h3>Ports</h3>
<ul>
<li>Unpack <code><b>ports.tgz</b></code> in the <code><b>/usr</b></code> directory.</li>
<li><p>The following command will update the ports tree using anonymous cvs:</p>
<pre>
# cvs -q -d anoncvs@anoncvs3.usa.openbsd.org:/cvs up -r \
OPENBSD_4_4 -Pd
</pre>
<p>For a list of anoncvs servers look <a href="http://www.openbsd.org/anoncvs.html">here</a>.</p>
</li>
<li><p>To find where a package lives in the ports tree, use the following command:</p>
<pre>
# make search key=programName
</pre>
<p>Beats visual grepping all the port directories.</p>
</li>
<li><p>To show available package flavors:</p>
<pre>
# make show=FLAVORS
</pre>
<p>To build a flavor:</p>
<pre>
# env FLAVOR="flavorName" make install
</pre>
</li>
</ul>

<h3>Base System Source Code</h3>

<ul>
<li>Unpack <code><b>src.tgz</b></code> and <code><b>sys.tgz</b></code> in the <code><b>/usr/src</b></code>. Do <b>NOT</b> unpack these archives in the <code><b>/usr</b></code> directory unless you want trouble.</li>
<li><p>Apply patches from the top of the source tree - <code><b>/usr/src</b></code> using the following command:</p>
<pre>
# patch -p0 < pathToPatch/001_patchname
</pre>
<p>The instructions are fairly clear with regards what needs to happen after application of the patch. Don't skip any steps or bad shit will happen.</p>
</li>
<li><p>Rebuild the kernel using the following commands:</p>
<pre>
# cd /usr/src/sys/arch/i386/conf && config GENERIC && \
cd ../compile/GENERIC && make depend bsd && mv /bsd /bsd.old && \
cp bsd /
</pre>
<p>I usually put this into an executable script in the <code><b>/usr/src</b></code> directory so that I can easily rebuild the kernel. You might want to install <code><b>screen</b></code> from ports before attempting to run this command on a Soekris 4801 or have the patience of a saint. If you've applied of patches in succession, you can issue a single rebuild instead of rebuilding per patch. That's just masochistic.</p>
</li>
</ul>]]></description>
         <link>http://www.z1r0.com/2008/11/openbsd_cheat_sheet.html</link>
         <guid>http://www.z1r0.com/2008/11/openbsd_cheat_sheet.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Eunichs</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">openbsd</category>
        
         <pubDate>Wed, 26 Nov 2008 19:03:07 -0700</pubDate>
      </item>
      
      <item>
         <title>Installing OpenBSD 4.4 on a Soekris 4801</title>
         <description><![CDATA[<p>Not a very sexy title, but entirely to the point. It's been a while since I installed on my trusty Soekris 4801 and time has been both kind and capricious by dulling my memory regarding the arcana required to make this combo work. To save myself future frustration, I've decided to document the steps and commit them to the collective unconscious. 
</p>

<p>Just a little background; I began this project when I retired my rather thirsty and ancient Pentium Pro  that served as my personal firewall/gateway for my home LAN a couple of years ago. I wanted a device that would not compromise on security and flexibility (hence the requirement to support OpenBSD) but also consume a reasonable amount of power. Enter the Soekris 4801 - an AMD Geode based embedded system. Base power consumption is 5W - 12W at peek. Not a powerful machine by modern standards, but certainly more powerful than my old system and more than sufficient for my needs.  This system was cutting edge in the embedded systems space when I got it, but has been superceded by the newer 5501-60. For the record, the 4801-60 has the following specifications:
</p>
 
<ul>
<li>233 Mhz i386 compatible AMD Geode CPU</li>
<li>128 Mbyte SDRAM (embedded)</li>
<li>3 SIS 10/100BaseT Ethernet ports (embeded)</li>
<li>2 RS232 Serial extensions with a single 9 pin port</li>
<li>1 32-bit Compact Flash socket</li>
<li>1 44 pin IDE 66 connector</li>
<li>1 Mini-PCI socket</li>
<li>1 3.3V PCI connector</li>
<li>1 1621 dual port SIS 10/100BaseT Ethernet card attached to the PCI connector</li>
</ul> 

<p>Soekris Engineering also manufactures an add-in mini-PCI VPN accelerator (vpn1411), but I haven't gotten around to installing one of these yet. Although, the Soekris is ideally suited for flash based firewall distros, I opted to have a full version of OpenBSD. Storage for the OS is provided through a CF adapter which houses a 6GB Hitachi Microdrive.</p>

<p>Like most embedded systems, there is no built-in support for external peripherals, such as keyboards, mice, and video. All communications happens through one of the two serial ports. Thankfully, the engineers at Soekris were kind enough to wire up a port, otherwise you'd be left to your own devices to rig one up for yourself. The 4801 supports comBIOS, meaning you can use a null serial cable and a communications program (such as minicom) to manage the device through its entire boot cycle. This brings us to my first tidbit; communication parameters. The 4801 supports the following :</p>

<pre>
19200 8N1
hardware and software flowcontrol off 
</pre>

<p>Be sure that your communication software is configured with these parameters - their importance will become apparent when we attempt to update the 4801 with the latest BIOS firmware. It is good practice to use the latest vendor supplied firmware to reduce the possibility of potential hardware conflicts. However, without the correct parameters, attempting to update the firmware using the built-in BIOS monitor is impossible and will result in spurious cryptic errors being thrown. There were sites which suggested that the following <code><b>xmodem</b></code> parameters be changed to enable communications compatibility with the 4801:</p>

<pre>
/usr/sbin/sx -vv -b -X
</pre>

<p>but from my experience, disabling hardware flow control was sufficient to ensure seemless serial communications.</p>

<p>The process for updating the firmware is as follows and assumes that you are already connected to the 4801 through a serial cable :</p>

<ol>
<li>Download the latest firmware from <a href="https://www.soekris.com/downloads.htm">Soekris</a>.</li>
<li>Reboot the 4801. At the boot prompt, interrupt the boot process using <code><b>CTRL-P</b></code>. This will bring up the boot monitor.</li>
<li><p>The official documentation refers to the <code><b>download</b></code> command to initiate file transfer. There is an undocumented option to this command however which will correctly initialize the file transfer session.
</p>
<pre>download -</pre>
<p>Failing to provide the additional <code><b>-</b></code> argument will result in NAK errors when attempting to establish the communications channel.</p>
</li>
<li><p>Once the file has been uploaded, issue the following command:</p>
<pre>flashupdate</pre>
</li>
<li>Reboot.</li>
</ol>

<p>For more detailed instructions, please see the <a href="Updating Bios">Updating the Soekris BIOS</a>.</p>

<p>As there is no direct way to supply install media directly to the 4801, updating the 4801 requires configuration for PXE booting. At this point, I'd like to point out my second major caveat regarding the upgrade process:</p>

<blockquote><b>The Soekris 4801 does not support PXE booting on any other interface other than the first ethernet port (ETH1).
</b>
</blockquote>

<p>I wasted a precious amount of time learning this lesson. Heed it well. This limitation also implies that to upgrade the 4801 requires it being in a network environment where the primary network interface can be configured. If this is not the case (such as when the 4801 resides on the network boundary), you will have to move it. Kiss goodbye to an in-place upgrade.</p>

<p>There are two services that are required to facilitate PXE booting - <code><b>tftp</b></code> and <code><b>dhcp</b></code>. The DHCP server has to be configured to supply an optional <code><b>filename</b></code> to a lease request made from the 4801's primary network interface. This implies that you know the MAC address of this interface. If you do not already have it, you can get it by forcing the 4801 into booting off the network using the BIOS monitor. See below.</p> 

<p>The following is an example of a <code><b>dhcpd.conf</b></code> file that supports PXE booting</p>

<pre>
# dhcpd.conf
#
# Configuration file for ISC dhcpd (see 'man dhcpd.conf')
#

## GLOBAL OPTIONS
ddns-update-style ad-hoc;
default-lease-time 1200;
max-lease-time 9600;

subnet 10.0.1.0 netmask 255.255.255.0 
	{
		range 10.0.1.101 10.0.1.200;
		option broadcast-address 10.0.1.255;
		option routers 10.0.1.1;
		option domain-name "domain.com";
	}

host soekris
	{
		hardware ethernet 00:00:24:c3:90:f8;
		fixed-address 10.0.1.100;
		filename "pxeboot";
		option host-name "soekris";
		next-server 10.0.1.10;
	}
</pre>

<p>Please note the following :</p>
<ul>
<li><b>The argument to <code><b>filename</b></code> is not an absolute path. It is simply the name of the pxeboot file.</b></li>
<li><b>The <code><b>next-server</b></code> option is required.</b></li>
<li><b>The <code><b>ddns-update-style</b></code> global option is required for newer versions of <code><b>dhcpd</b></code>.</b></li>
</ul>

<p>Following these guidelines when configuring <code><b>dhcpd</b></code> will save you from needless troubleshooting.</p>

<p>TFTP is usually managed through <code><b>inetd/xinetd</b></code>. Unfortunately, this results in <code><b>arp</b></code> network issues. It is recommended that <code><b>tftpd</b></code> run in standalone mode to avoid these issues.</p>

<p>The last part of the <code><b>tftpd</b></code> configuration requires creating a directory to serve out the <code><b>pxeboot</b></code> and <code><b>bsd.rd</b></code> files. Keep in mind that by default, <code><b>tftpd</b></code> runs as an unprivileged user (such as <code><b>nobody</b></code>). Ensure that wherever you place these PXE files, they have appropriate permissions for the daemon to access. Because we are using the console to manage the boot process, this PXE installation also requires an <code><b>etc</b></code> directory with a <code><b>boot.conf</b></code> file to configure the installer to use the console. The contents of the file are as follows:</p>

<pre>
stty com0 19200
set tty com0
boot bsd.rd
</pre>

<p><b>The order of these configuration parameters is important. The <code><b>stty</b></code></b> must come before the <code><b>set</b></code> command.</p>

<p>Believe it or not, at this point, you are ready to install OpenBSD. To get the 4801 to boot over the network requires the following steps:</p>

<ol>
<li>Reboot. Interrupt the boot process using <code><b>CTRL-P</b></code> to enter the BIOS monitor.</li>
<li><p>Issue the following boot command:</p>
<pre>
boot f0
</pre>
</li>
</ol>

<p>I won't belabor the install details; you can get these directly from the main OpenBSD site. There is however one last caveat in this upgrade process: when the installer has completed unpacking the file sets, you are asked whether you want to set the current serial console as the default terminal. <b>Say Yes!</b> If you don't, when the 4801 reboots, it will hang attempting to load the kernel. This unfortunately leads to the boot process simply hanging at the following message:</p>

<blockquote>entry point at 0x200120 </blockquote>

<p>Took me a while to figure this out. Hopefully others will not have to suffer quite as much as I did. Thankfully, OpenBSD has finally "modernized" and supplied a cleaner upgrade path than in previous releases. Hurray!!! About fucking time.</p>

]]></description>
         <link>http://www.z1r0.com/2008/11/installing_openbsd_44_on_a_soe.html</link>
         <guid>http://www.z1r0.com/2008/11/installing_openbsd_44_on_a_soe.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Eunichs</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">openbsd</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">soekris</category>
        
         <pubDate>Tue, 25 Nov 2008 19:38:27 -0700</pubDate>
      </item>
      
      <item>
         <title>One Language to Rule them All</title>
         <description><![CDATA[<blockquote>Will machines think like human beings, or will human beings begin thinking like machines?</blockquote> 

This is an interesting question with rather practical implications to a programmer. Although there are certain advantages understanding the low level mechanics of how computers work, I don't think the relationship between that kind of technical knowledge and being able to write a program are necessarily related. No doubt a relationship exists, but I don't think it follows that knowing one automatically leads to the other. 

Perhaps an analogy would better explain what I'm getting at. Technical details are like the study of linguistics compared to programs which are like prose/poetry. Knowing linguistics allows you to describe languages and their components such as verbs, nouns, adverbs, the rules of grammatical correctness, etc. This knowledge however doesn't mean that familiarity with these structural elements will automatically allow you to write meaningfully or expressively. These elements provide the constraints of expression when attempting to articulate an idea, but the articulation of the idea lies outside the bounds of this domain of knowledge. This is the same in programming. Although understanding how a computer functions or a compiler works is useful, it does not follow that you can write useful or meaningful programs just as knowing linguistics won't necessarily let you write literature. So what exactly is the nature of the relationship? 

At its core, I think that the relationship can be summed up as follows:

<b>Programming, as an endeavor, is still an exercise in expression.</b>

How you choose to express an idea is as important as the idea itself. Like great literature which is firmly rooted in the language chosen by the author, a program acquires this quality of expressiveness based on the language which forms the foundation of a program. Although great writers sometime "break the rules" when writing literature, it is no different than the clever hacks exploited by programmers to express the difference between constraint and convention.

This idea of language as a source the expression implies that certain languages are better suited to expressing different ideas. No one single language is capable of the full range of expression because, at the point of its creation, the range of future expression is completely unknown. It also follows that languages evolve to fill that gap in expression. 

So what is it that programmers seek in languages that they choose to solve problems? Quite simply, languages with real longevity possess an expressive quality that is both aesthetic and technical. Although semantics may vary widely between languages, this "expressiveness" is what programmers implicitly recognize and use to build their conceptual framework on which to hang those semantics. For lack of a better word (and borrowing shamelessly from Neal Stephanson and his novel Snowcrash), this is the <b>Ur</b> quality that is the root of all programming languages.

This brings us back to the question at the beginning of this article. Implicitly, expression is still a very human endeavour. Until this changes, I'm inclined to believe that machines will evolve to express very human ideas which will be reflected in the language we choose to express our intentions to them. 

I think in this regard, Ruby is a step in the right direction.

<h4>Addendum</h4> <a href="http://www.sciencedaily.com/releases/2008/11/081120073130.htm">Beauty Is Truth In Mathematical Intuition: First Empirical Evidence</a>

I found this article  a day after writing this tidbit. Interesting how much the aesthetic guides intuition to the truth.]]></description>
         <link>http://www.z1r0.com/2008/11/one_language_to_rule_them_all.html</link>
         <guid>http://www.z1r0.com/2008/11/one_language_to_rule_them_all.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Ur</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">programming</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ruby</category>
        
         <pubDate>Thu, 20 Nov 2008 21:02:41 -0700</pubDate>
      </item>
      
      <item>
         <title>Rubyisms</title>
         <description><![CDATA[Most rubyisms are convention based, meaning that they are not strictly enforced by the language/interpreter. Hear is my cheat sheet to help orient those new to ruby with some of these conventions without having to dig through the documentation. 

<h3>Variables & Class Naming Conventions</h3>

<ul>
<li><b>Local Variables, Methods, and Parameters</b> - always start with a lower case character or an underscore</li>
<li><b>Globals</b> - prefixed with a <code><b>$</b></code></li>
<li><b>Instance Variables</b> - prefixed with a <code><b>@</b></code></li>
<li><b>Class Variables</b> - prefixed with a <code><b>@@</b></code>. These type of variables imply that there is only a single instance for the entire class. This does not however, imply public visibility.</li>
<li><b>Class Methods</b> - prefix with class name <code><b>class.method</b></code></li>
</ul>

<h3>Access Control</h3>

<ul>
<li><b>public</b> - no access control; the default visibility applied. The only exception is the <code><b>initialized</b></code> method which is <b>always</b> private.</li>
<li><b>protected</b> - limited visibility to an instance of the class and subclasses.</li>
<li><b>private</b> - cannot be called with an explicit receiver. Visible only within the class.</li>
</ul>

<h3>Iterators</h3>
<p>Code blocks can be dynamically associated with method invocations. The can be used to implement call backs, pass around chunks of code, and to implement iterators.</p>
<p>Code blocks are delimited by <code><b>{}</b></code> or the following key words :</p>
<pre>
do
   ...
   ...
end
</pre>

<p>The block is invoked in the receiver with a call to <code><b>yield</b></code>.</p>

<p>A callblock has the following form : </p>

<p><code><b>{|parameter1, .... parametern| argument1, .... argumentn}</b></code></p>

<p>The parameters are the values that will be used by the arguments.</p>

<h3>Quirks</h3>
<ul>
<li><code><b>gets</b></code> stores the input into a global variable <code><b>$_</b></code></li>
<li><code><b>$_</b></code> is the default input for most cases.</li>
<li>don't create your own Observer class .... fucks things up.</li>
</ul>

<h3>Troubleshooting</h3>
<ul>
<li>Attribute setter not being called. Within an object, Ruby will parse <code><b>setter=</b></code> as an assignment to a local variable, not as a method call. Use <code><b>self.setter=</b></code> to indicate the method call. </li>
<li>A parse error at the last line of the source often indicates a missing end keyword. </li>
<li>Make sure that the type of the object you are using is what you think it is. If in doubt, use  <code><b>Object#type</b></code>  to check the type of an object. </li>
<li>Make sure that your methods start with a lowercase letter and that classes and constants start with an uppercase letter. </li>
<li>If you happen to forget a <code><b>``,''</b></code> in an argument list---especially to print---you can produce some very odd error messages. </li>
<li>Block parameters are actually local variables. If an existing local of the same name exists when the block executes, that variable will be modified by the call to the block. This may or may not be a good thing. </li>
<li>Watch out for precedence, especially when using <code><b>{}</b></code> instead of <code><b>do/end.</b></code> </li>
<li>Make sure that the open parenthesis of a method's parameter list butts up against the end of the method name with no intervening spaces. </li>
<li>Output written to a terminal may be buffered. This means that you may not see a message you write immediately. In addition, if you write messages to both <code><b>$stdout</b></code> and <code><b>$stderr</b></code>, the output may not appear in the order you were expecting. Always use nonbuffered I/O <code><b>(set sync=true)</b></code> for debug messages. </li>
<li><p>If numbers don't come out right, perhaps they're strings. Text read from a file will be a String, and will not be automatically converted to a number by Ruby. A call to to_i  will work wonders. A common mistake Perl programmers make is: </p>
<pre>while gets
  num1, num2 = split /,/
  # ...
end
</pre></li>
<li>Unintended aliasing---if you are using an object as the key of a hash, make sure it doesn't change its hash value (or arrange to call  <code><b>Hash#rehash</b></code> if it does). </li>
<li>Use trace_var to watch when a variable changes value. </li>
<li>Use the debugger. </li>
<li>Use  <code><b>Object#freeze</b></code>. If you suspect that some unknown portion of code is setting a variable to a bogus value, try freezing the variable. The culprit will then be caught during the attempt to modify the variable. </li>
</ul>

<h3>Performance</h3>
These idioms will help close the distance in performance between native code versus interpreted code generated by ruby:

<ul>
<li>Create locals outside of code blocks to prevent reinstantiation of iterator variables.</li>
<li>Use the included profiler. This feature can be invoked by either including the <code><b></b>-r profile</code> argument to the interpreter or adding the <code><b>require 'profile'</b></code> directive to your code.</li>
</ul>

Got your own Rubyisms? Just add them below.]]></description>
         <link>http://www.z1r0.com/2008/11/rubyisms.html</link>
         <guid>http://www.z1r0.com/2008/11/rubyisms.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Ur</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">ruby</category>
        
         <pubDate>Thu, 20 Nov 2008 18:02:52 -0700</pubDate>
      </item>
      
      <item>
         <title>PostgreSQL Addendum</title>
         <description><![CDATA[As I installed PostgreSQL using Fink, the user account that I originally create using my previous instructions is not aware of these binaries. The simplest way for pgsql account to be aware of these new binaries is to create a custom <code><b>.bash_profile</b></code> file which appends the <code><b>/sw/bin</b></code> directory to the <code><b>PATH</b></code> environment variable. Create a <code><b>.bash_profile</b></code> file in the home directory of the <bold>pgsql</bold> account with the following contents:

<pre>
PATH=$PATH:/sw/bin
</pre>

This should allow you to refer to the PostgreSQL binaries within the Fink installation directory without have to use full qualified path names.

In addtiion, the original startup script required modification of the <code><b>PGSQL_HOME</b></code> variable to reflect the new installation's location(<code><b>/usr/local/pgsql</b></code>) as well as ensuring that the correct file permissions were enabled on both the service directory and script (which happen to have the same name):

<pre>
# chmod 555 PostgreSQL
</pre>

<p>The only other thing that bit me in the ass was the fact that my copy and paste operation didn't work out quite as well as I expected and I was missing the shebang at the top of the script as well as having an orphaned comment. Always check the validity of the script contents.</p>]]></description>
         <link>http://www.z1r0.com/2008/11/postgresql_addendum.html</link>
         <guid>http://www.z1r0.com/2008/11/postgresql_addendum.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Eunichs</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">OS X</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">PostgreSQL</category>
        
         <pubDate>Tue, 11 Nov 2008 14:20:46 -0700</pubDate>
      </item>
      
      <item>
         <title>Reboot !!!</title>
         <description><![CDATA[<p>
I usually avoid rebooting as a matter of principle. It always seemed like using a hammer to swat a fly, and the inferiority of an OS is directly related to the number of reboots required to get it to function civilly. That being said, I've run into a number of situations during my OS X re-installation where a reboot was quite necessary.
</p>

<p>
The first involved an application called TextExpander - a great little app that performs macro expansion at the OS level for all applications and meshes well with QuickSilver and Ubiquity for Firefox. The beauty of these applications is that almost everything is accessible via the keyboard as opposed to having to switch input methods (the old keyboard, mouse conundrum). This allow you preserve flow when you are working without being distracted by the cognitive changes required to switch input methods.
</p>

<p>
Anyway, the problem I experienced was with the way TextExpander choose to install itself. Although the instructions are pretty straight forward, nothing in the installation docs mentioned the application's requirement of a custom daemon - <b>textexpanderd</b>. Unfortunately, the installer, while correctly copying the daemon onto the System, failed to enable the associated Login item. The system logs provided the very unhelpful messages consisting of the following lines :
</p><br/>

<pre>
Nov 10 18:57:31 aleph kernel[0]: Finder[109] Unable to clear quarantine 
`TextExpander.prefPane': 30
Nov 10 18:57:37 aleph [0x0-0x1a01a].com.apple.systempreferences[188]: 
No matching processes belonging to you were found
Nov 10 18:57:38 aleph textexpanderd[191]: textexpanderd 2.5 
at your service
</pre><br/>

<p>
Luckily, I managed to decipher this gobbledegook, and a handy reboot allowed the daemon to start without issue. It is documented here for others who might one day run into the same problem.
</p>

<p>The other situation I found I need to bounce the machine was with the installation of PostgreSQL. In my orginal instructions, I outlined the steps to create a user account using the <code><b>dscl</b></code> command line utility. I unfortunately forgot to include the caveat that a reboot is required to make the user account visible to the system. Yet again, a less than insightful error message was displayed when attempting to initialize the database. I've lost the message, but the gist of it was the inability for postgres to proceed with the initialization because of inadequate shared memory configured on the system.  This, needless to say, is not one of the limitations of my machine. Note to self: if the user is not visible from the User dialog, but available from the terminal, this is the issue.</p>

<p>Oh well, such is life.</p>
]]></description>
         <link>http://www.z1r0.com/2008/11/reboot.html</link>
         <guid>http://www.z1r0.com/2008/11/reboot.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Eunichs</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">PostgreSQL</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">TextExpander</category>
        
         <pubDate>Mon, 10 Nov 2008 21:37:29 -0700</pubDate>
      </item>
      
      <item>
         <title>It was a dark and stormy night ....</title>
         <description>In an effort to actually finish some of the books on my reading list, I&apos;m going to document my efforts here. My tastes are pretty eclectic, but I&apos;m trying to find out if there is an underlying thread in the books that I enjoy, versus those which are simply dead trees to me. I&apos;ll separate out the technical from the fiction/non-fiction, just in case anyone is actually reading this and needs to make the distinction (which apparently, I don&apos;t).

I&apos;ll begin this category with an entry titled with the immortal words of Edward George Bulwer-Lytton, in his book Paul Clifford (1830). Seems appropriate.</description>
         <link>http://www.z1r0.com/2008/11/it_was_a_dark_and_stormy_night.html</link>
         <guid>http://www.z1r0.com/2008/11/it_was_a_dark_and_stormy_night.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Literati</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">books</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">fiction</category>
        
         <pubDate>Mon, 10 Nov 2008 18:00:00 -0700</pubDate>
      </item>
      
      <item>
         <title>Shadow Dawn - Adventure Template</title>
         <description><![CDATA[<h2>Tell it Like it Is</h2>

<p>One of the most difficult tasks for a DM when running a campaign is structuring adventures in a way that is both engaging for the players without becoming a tedious management task. After all, the enjoyment the DM gets as a participant in the gaming session is as the director of collective imagination.</p>

<p>More importantly, adventures need enough structure to move the storyline forward but enough flexibility to account for unexpected player actions. Achieving this balance is difficult, but luckily both Torg and Earthdawn provide excellent examples of how to structure an adventure just right. A more rigid storytelling structure results in too much <b>Deus Ex Machina</b> common in a lot of D&D style games.</p>

<p>The following template can be used to modify existing ShadowRun adventures (which, despite their exceptional back story are incredibly difficult to run) or create new scenarios to introduce elements of the world storyline into regular game play.</p>

<h3>Common Adventure Themes</h3>

<p>To prevent adventures from devolving from one dungeon trawl to another, it is crucial to craft a theme around adventures. This relieves the tedium most campaigns become, by providing a variety of encounters for the players some of which (believe it or not) do not require the use of swords. I find that most games which over-rely on physical confrontation quickly become "Gear" games. The only motivation for players is to acquire the next "Biggest, Baddest, Can of Whoop Ass". While there is something gratifying in having a powerful item, it quickly upsets game balance.</p>

<p>This is the main short-coming of ShadowRun. While advances in technology and magic make the game interesting, the system suffers from it's inability to scale with experienced players.</p>

<p>Before designing an adventure, decide the core theme. This will provide the foundation of the adventure experience. Here are some common themes (other than the basic Hack-N-Slash theme):</p>

<h4>Themes</h4>
<ol>
<li><b>Mystery</b>
<p>
I world without mystery quickly becomes predictable. Players crave discovery as part of the experience and making them work for it makes it all the more enjoyable. Metagaming is a part of a group dynamic that generally undermines mystery. The challenge is to engage the player regardless of this element by introducing the unpredictable to the  campaign. Doing so provides opportunities for players to have a hand in determining the outcome of campaign wide events.
</p>
</li>
<li><b>Revenge</b>
<p>
Revenge can only work within a campaign setting if the DM invests the time to develop credible nemesi (probably a non-existent plural for nemesis) to continually challenge players. This means that death should not be the only outcome when encountering game master generated opposition. Like unrequited love, the longer the act is delayed, the sweeter it is (or the greater the disappointment).
</p>
</li>
<li><b>Comedy</b>
<p>
Like a good movie, the right mix of action, mystery, romance, and comedy contribute to the overall enjoyment experienced by players. Comedy provides colour and has multiplier effect on the other elements that make the game enjoyable for the players.
</p>
</li>
</ol>

<p>Don't overlook providing some character downtime as an opportunity to lighten the mood of the campaign. These moments allow players to become more vested in character by allowing them to pursue personal sub-themes. Sometimes, it is these sub-themes that become the motivating force for moving the plot forward.</p>

<h3>Plots</h3>
<p>Plots provide the primary motivation for the characters in terms of moving the story and action forward. Without motivation, campaigns quickly devolve into chaos. The GM's challenge is to allow characters to fulfill plots while allowing sub-plots to develop in parallel. These objectives should be achievable within 2-3 sessions. Larger story arcs should be broken up into chapters, each with its own plot. This prevents the primary motivation from becoming stale. Plots should have a definitive beginning and end. In the context of larger story arcs, each chapter should be able to stand on its own and allow the players to choose whether or not to continue the larger arc. There is nothing more frustrating from a players perspective then having to follow a story arc simply because the DM has an adventure for it. Using transitional elements to move the story forward allows the GM to introduce possible resolutions to a story without explicitly directing the players into a course of action. A campaign should be flexible enough to allow deviation while still accomplishing the necessary objectives.</p>
<p>
Most plots are variations of the following types and usually vary only in scope within a campaign. These types should be fairly self explanatory.
</p>
<ol>
   <li><b>The Quest</b></li>
   <li><b>The Guantlet</b></li>
   <li><b>The Gathering</b></li>
</ol>

<h3>Building an Adventure</h3>

<ol>
<li><b>Basic Outline</b>
   <ol>
      <li>Adventure Idea</li>
      <li>Background</li>
      <li>Act One - setup. Near the conclusion of the act, a plot point in presented.</li>
      <li>Act Two - contains a confrontation leading to the major conflict.</li>
      <li>Act Three - contains a confrontation leading to the major conflict.</li>
      <li>Conclusion - climax and resolution of the major conflict.</li>
   </ol>

   <p><b>Beginnings</b> - always try to start with some sort of action. This will set the 
  tone of the adventure. </p>
</li>

<li><p><b>Scenes</b> - discrete units of action within each act to move the action forward. Within each scene you need to decide what the action will be and what events you want to occur.</p>

<p><b>Settings</b> - work along with tone and genre to place and adventure firmly in front of the players. Ideally, each Act should have its own unusual and distinct setting. One or two additional details will flesh out the scenario and make the setting real.</p>
</li>

<li><p><b>The Action</b> - what the player characters will be doing. Each scene should only involve one primary action. If there is another action, it should be split into two scenes.</p>
</li>

<li><p><b>Events</b> - an interactive situation which depends upon timing and setting. An incident of significance within a scene.</p>
</li>

<li><p><b>Variables</b> - plans for alternate directions in the storyline.</p>
<p>Plot Twists - throw in a surprise or two. Keep some information secret until later.</p>
</li>

<li><p><b>Flags</b> - conditional events that are activated by the player characters' action, not necessarily connected to a specific setting. Design flags that add new twists, new menaces, or new information to the adventure.</p>

<p><b>Bits</b> - events not part of the central storyline. Used to insert running gags, comic relief, red herrings, to add spice to the story line.</p>

<p><b>Stacks</b> - scenes that exist separate and apart from the individual acts designed to move the storyline forward.</p>
</li>

<li><p><b>Awards</b></p>
<p>Rewards should scale based on player experience. The challenge is to ensure that players feel like they are advancing without unbalancing the game. ED is great for this as power is acquired incrementally and requires a proportional investment of experience to gain the benefits of a new power or item. Power is rooted in knowledge not simple possession.</p>
</li>

<li><p><b>Cut To ... </b> - The lead-in to the next act.</p>
<p>
This is an opportunity for the DM to provide context for the Action and exercise his/her storytelling abilities. Introduction of new game themes or characters allows the story to flow into the general narrative.
</p>
</li>

<li><p><b>Gamemaster Characters</b></p>
<p>
These elements of GM characters give depth which allow players to treat them with more that disposable game elements. The more you allow players to interact with characters with these elements, the more they are likely to be recurring elements in your campaign. This is useful for being able to subtly direct action through interaction as imposing them situationally.
</p>
<ol>
   <li>Distinctive Appearance</li>
   <li>Distinctive Speech</li>
   <li>Definite Objective</li>
   <li>Skills</li>
   <li>Motivation</li>
</ol>
</li>

<li><p><b>GM Character Roles</b></p>
<p>
GMing is a balancing act that requires practice. It requires intuition of the players themselves in order to determine the right amount of these elements to introduce and when to introduce them. Ultimately, although your job is to play all the obstacles the players are likely to encounter, you must also give them the opportunity to succeed. The challenges should be difficult, but not impossible. This is what builds the feeling of being invested in the development of a player character. Death, while being a real possibility in the game, should be used sparingly. Players should feel their mortality, but should not always be put in mortal danger. 
</p>

<ol>
   <li>Information Source</li>
   <li>Obstacle</li>
   <li>Major Villain</li>
   <li>Comic Relief</li>
   <li>Mood-Setting Device</li>
</ol>
</li>

</ol>

<p>As with all this material, please feel free to comment.</p>


]]></description>
         <link>http://www.z1r0.com/2008/11/shadow_dawn_adventure_template.html</link>
         <guid>http://www.z1r0.com/2008/11/shadow_dawn_adventure_template.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">RPG</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">RPG</category>
        
         <pubDate>Sun, 09 Nov 2008 21:01:26 -0700</pubDate>
      </item>
      
      <item>
         <title>Ymmm .... ProductivityPR0N</title>
         <description><![CDATA[<a href="http://www.aaronsw.com/weblog/productivity">Raw Thought: HOWTO: Be more productive</a><br/>

I created this category to catch all of the productivity stuff that I seem to find myself reading.  I'm not sure however, whether or not the time invested in reading these articles actually contributes to my procrastination or not .... a question best left for another posting.

Anyway, this article is a great motivator. I have a lot of ideas that simply stay as ideas and I need a way to move from ideas to action. I'm sure I'm not alone in this respect, but that fact that I am self-aware is frankly depressing enough that I'm doing something about it. 

As per the article, I have a handy-dandy Moleskin with blank note cards that I carry with me to capture my eureka moments. At the very least, I've begun investigating the possibility of actually carrying out these projects and in some cases prototyping. Not to say that everything is achievable given certain externalities (damn you iPhone and your paltry 2 megapixel non-autofocusing camera !!!!). But the fact of the matter is that the idea has a least been given an opportunity. I'm sure that most of these ideas will never see fruition, but at the very least, I can always point out my rather brilliant precognitive outlook when other people build them. 

Ahhhh, basking in the reflected light of another's success!!! The validation of a true procrastinator. It's only taken a year to actually post something to this category though. Guess what? I put it off. ]]></description>
         <link>http://www.z1r0.com/2008/11/ymmm_productivitypr0n.html</link>
         <guid>http://www.z1r0.com/2008/11/ymmm_productivitypr0n.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Productivity PR0N</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">productivity</category>
        
         <pubDate>Sun, 09 Nov 2008 20:49:20 -0700</pubDate>
      </item>
      
      <item>
         <title>OSX Install Redux</title>
         <description><![CDATA[Having staved off the inevitable lack of storage with the installation of a new drive in my laptop, I've endeavored to bring my machine back into working order and avoid the newb mistakes I've made over the course of 2 years on OS X. Unfortunately, my memory is not what it used to be and I've had to jog the cobwebs to relearn certain gotchas. I'm writing about them here in the hope that I will at least remember to look up the answers next time and save time and frustration.

<ul>

<li><b>X11</b>
<p>
Let me say it. The X.org 7.2 packaged with Leopard is simply half-baked. There are a number of obvious shortcomings in this release and unfortunately, Apple has declined to make amends. Fortunately, there is the <a href="http://xquartz.macosforge.org/trac/wiki">XQuartz</a> project which provides updated X11.app binaries which are a direct replacement.  This upgrade is a must if you are planning to use X11 apps in Fink. There are still no native ports of wireshark, pan, and other great open source apps found under Linux. Fink is a quick and elegant way to get these on your system, though it is not without it's own difficulties.
</p>
<p>
I used to require an updated X11.app to use with OpenOffice, but as there is a native aqua version as of version 3.0, there is no longer a need for this. I wonder how much longer it will take before there are native packages that can be built and deployed in the native OS X environment?
</p>
</li>

<li><b>Fink</b>
<p>
As or writing this, Fink is at version 0.9.0. This package manager is by far the simplest way to get open source apps working under OS X. When I reinstalled this on my system, I was perplexed by the incompleteness of the packages displayed. I finally clued in and realized that the update method was set to <b>point</b>. This only allows packages added to the 10.5 tree to be accessible. To change this, Fink needs to be reconfigured using the following command:
</p>
<pre>
# fink configure
</pre>
<p>
The trick is to change the self update method to rsync or cvs. This will ensure that all supported packages from 10.4 to 10.5 will be available to Fink.
</p>
<p>
Just a word of warning: if you decide to update/install an application which requires gcc 4.3.2 as a dependency, prepare for a long install.
</p>
</li>
 
<li><b>OpenVPN</b>
<p>
One of the things that seemed to require herculean effort the first time around was the installation of an OpenVPN client on OS X. When I first attempted to use <a href="http://code.google.com/p/tunnelblick/">TunnelBlick</a>, it did not seem to support automatic installation of the kernel extensions required to create the tap virtual network interfaces. Thankfully, as an official project under the auspices of Google, this is no longer the case. Installation was pretty straight-forward and all that was required was to drop in my existing configuration files into the <code><b>User/Library/openvpn</b></code> directory.
</p>
<p>
One caveat is to ensure that the contents of the configuration files use file and path names that are relative to their location within that directory. TunnelBlick will fail otherwise.
</p>
</li>

</ul>

I'm sure other things will crop up, but this has been good exercise thus far. One last thing for my future self : remember to remove ALL THE SCREWS when attempting to replace the hard drive.]]></description>
         <link>http://www.z1r0.com/2008/11/osx_install_redux.html</link>
         <guid>http://www.z1r0.com/2008/11/osx_install_redux.html</guid>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">OS X</category>
        
         <pubDate>Sun, 09 Nov 2008 17:51:34 -0700</pubDate>
      </item>
      
      <item>
         <title>Ruby Deja Vu</title>
         <description><![CDATA[Having recently upgraded my laptop to a new spanky Hitatchi 7K320, I've had the opportunity to build my Ruby development platform from scratch (and hopefully jettison some unwanted cruft) as well as relearn the in's and out's of Ruby on OS X. A clean install provides you with ruby 1.8.4 as well as an older rails 1.1.2. The challenge is to get the latest and greatest. With that in mind, I've outline the steps that I need to follow to get there:

<pre>
# sudo gem update --system
# sudo gem update
</pre>

Instead of the cumbersome update of individual components, a simple update will catch all the necessary updates and bring your system up to speed (rails 2.2.0).

Now on to see if installing PostgreSQL is any easier .... ]]></description>
         <link>http://www.z1r0.com/2008/11/ruby_deja_vu.html</link>
         <guid>http://www.z1r0.com/2008/11/ruby_deja_vu.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Eunichs</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">OS X</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">rails</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ruby</category>
        
         <pubDate>Sun, 09 Nov 2008 15:47:29 -0700</pubDate>
      </item>
      
      <item>
         <title>Upgrading to MT 4.21</title>
         <description>Time to upgrade to the latest MovableType. Now supports the iPhone (which should make things more interesting). Hope all goes well.</description>
         <link>http://www.z1r0.com/2008/09/upgrading_to_mt_421.html</link>
         <guid>http://www.z1r0.com/2008/09/upgrading_to_mt_421.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">NaN</category>
        
        
         <pubDate>Wed, 03 Sep 2008 19:43:14 -0700</pubDate>
      </item>
      
      <item>
         <title>Shadow Dawn - Dungeon Master&apos;s Compendium</title>
         <description><![CDATA[<h2>DM Rules</h2>

<ol>
<li><p><b>Talent Linking.</b> Two or more characters can collaborate to perform a task together assuming that both characters possess the skill. In this circumstance, task resolution is accomplished as follows:</p>
       <ul>
             <li>the highest skill level is used for the test.</li>
             <li>additional characters reduce the possibility of failure. Instead of adding skill to the test, additional characters can use their allotment of failures to ensure that the test succeeds.</li>
             <li>if the test allows the use of karma pools, additional characters can add dice to the test equal to the number of failure dice that can be canceled by the skill level of the character.</li>
             <li>the success level can be used to determine the effect. If the task is time sensitive,standard success is accomplished without any time bonuses. A good success results in accomplishing the task in 1/3 the time. An excellent success results in the task taking only 1/2 the time. An extraordinary success results in the tasks taking 1/4 of the time.</li>
             <li>additional characters can use cards in their pool</li>
       </ul>
</li>

<li><p><b>Magic.</b> There are some missing ED corollaries that need to be addressed in ShadowRun.</p>

<ul>
<li><b>Matrices.</b> There must be a progression from casting raw magic to using artifacts to filter astral energy to the use of matrices. The ideal of warping can easily be reflected in additional physical drain that characters must take when casting in a corrupt area. The use of the matrix artifact removes this "lethal astral feedback" from the spell caster. The use of matrices will be limited to magical initiates with the initiate allocating one of his/her metamagical technique slots to be able to access this ability.  The number of matrices is equal to 1/3 the Spellcasting skill.</li>

<li><p><b>Conjuring.</b> There must be limitations placed on current conjuring techniques. The act of conjuring binds the astral construct to the conjurer. This is reflected by Magic Pool dice being allocated to conjured spirits with 1 Magic Pool dice per level being used while the spirit remains bound to the conjurer. While this Magic Pool dice is associated with the spirit it CANNOT be used to augment Magic rolls. Not all of the Magic Pool must be used this way. Unallocated Magic Pool dice functions as normal. For example a character wil 6 Magic Pool dice that conjures a level 3 spirit allocates 3 dice from his pool while the spirit remains bound to him. The remaining Magic pool dice can be used normally. The 3 Magic Pool dice return to the character's Magic Pool when the spirit has returned to the astral plain it was conjured from.</p>

<p>This now provides a method to create Free Spirits (or Familiars). By permanently giving Magic Pool dice to an astral construct, it becomes self empowered.</p></li>

<li><p><b>Enchanting.</b> To be determined.</p></li>
</ul>
</li>

<li><p><b>Opposed resolution.</b> There are situations which are tedious to resolve using the current ruleset which can be easily resolved through the use of the Drama Deck using the following mechanism:</p>

<blockquote>both parties declare their objectives. The first party to complete all of their actions(A, B, C, D) wins the their desired outcome.</blockquote>

<p>For example, a car chase results between the players and local law enforcement. The character's objective is to escape the coppers and the coppers objective is to catch the players. This situation can be resolved using this mechanism. The characters escape when they complete all of their action sequences before the cops do.</p>
</li>

<li><p><b>Karma effects in an evolving magical world.</b> Like Earthdawn, Karma can be used to represent a character's innate magical nature. World events which change the nature of magic can manifest in game play by modifying Karma behavior. For example, using Karma near magically active sites can result in different Karma behavior. Using magic near a Ley Line may result in Karma dice never resulting in failures (even on a 1).</p>
 
<p>This also allows for magical attacks which affect the use of Karma. Cursed Luck can take a player's highest roll and turn it into a 1. Corrupt Karma can prevent Karma from being used on an action. Various ED karma modifiers can be used to supplement SR3 to provide a more magical feel to the game.</p>
</li>

<li><p><b>Convergent Torg storylines.</b> That FASA meant to introduce the Scourage and the coming of the Horrors, there can be no doubt. The problem lies in the implementation of these details.Torg provides a great framework to meld SR3 / ED themes without upsetting the game universe dramatically.</p>

<ul>
<li><p>As well as Church dogma to proclaim the validity of the metahuman soul, church elements begin to embrace technology as a source of salvation. This leads to the formation of a modern Cyberpapal state with Magic taking on the role of "miracles". The search for a spiritual machine results in the birthing of a "moral" AI (Gabriel).</p></li>

<li><p>The astral bridge to signal the beginning of the Scourage is halted temporarily, but minions of powerful Named Horrors managed to gain a foot hold in this world. When they realize that technology played a factor in repelling their advances, they create technodemon constructs to augment their power and provide insight into this tool. A negative astral cascade sweeps SoCAL and transforms it into Tharkhold. This fits in with Saito succession of Japanese authority and creating a nation state.</p></li>

<li><p>The Atlantean Foundation spurred on by the discovery of the pyramids on Mars manages to create an astral gateway to contact the last of the Therans. The Space Gods arrive as a call to their answers. With their return, will they look to re-establish the dominance of 3rd world Thera. A twist on this could be that the Incan Gold looted by the Spanish was in fact Orichulum. The geoglyphs of Nazca and Palpa are the traces
of the magical glyphs that took the Therans from this world to the next.</p></li>

<li><p>Aztechnology and their penchant for blood magic seems like a natural fit for Orrosh. We can develop the story line to transform Aztlan nto the first bastion of the Horror foothold in SR3. Given its proximity to SoCAL and the transformation of the adjacent L.A into Tharkholdu, this makes a lot of sense as the Horrors experiment with high technology in a separate realm. Think HellRaiser meets the Cube. This could also explain the strange similarity between Space God/Theran magical methods (and their use of the pyramid).</p></li>

<li><p>Aysle can manifest in the Tir nations. The heavy reliance on magic due to the high availability of magical sources such as ley lines makes this a natural fit. By introducing a continuum between the technological and the magical, we will have the ability to adjust magic use depending on the game context. This can play well against the Eleven Schism which manifests between Tir Tairngire and Tir Nan Og. This can be the the parallel between Sereathea and the Wyrm Wood. Once the encroaching Horrors target Aylse strong holds due to their attraction to the high mana available in these zones, perhaps the Alichia will reinvoke the Ritual of Thorns.</p></li>

<li><p>The Nile Empire fits in well with idea that "Egypt" is analogous to Creana. Although Weird Science has no SR3 analogue, I think that if approached with the technomagic bent (such as personal force fields powered with Karma), this might be doable. Ra can be transformed into one of the Great Dragons which is late to the party (or All-wings herself).</p></li>

<li><p>Nippon Tech I think suites the intrigue posed by the Yakuza/Seoulpa Rings/Triads. With their penchant for cloak and dagger maneuverings, this would be a good fit. I suggest that the 227 plot line be attempts for either biological or cybernetic cloning (which in SR3 falls into the realm of cybermancy). The surreptitious acquisition of technology from competitors plus the alchemical philosophers stone (i.e. Orichulum) allows the transfer of human consciousness to an autonomous technological body.</p></li>

<li><p>The only problems I have are with the Living Land / Land Below cosms which I think violate base SR3 idioms. If these are left out, I think that most of the Torg world is well preserved that the general feel can pervade the campaign.</p></li>
</ul>
</li>

<li><p><b>Convergent ED storylines.</b> There were a number of world storylines in ED which remained unresolved. These themes could provide a wealth of  adventure possibilities in SR3.</p>

<ul>
<li><p>The Ever Living Flower. Some of the SR3 adventures touch upon this, but do not go into any further detail. This could be a good introduction to magical theory regarding Immortality, elves on the Path of Lords, and the power of True Naming. This could lead in to magical means of enchanting mundane items and create an interesting mechanic for the game.</p></li>

<li><p>Aardelea and the Drakes. The appearance of drakes in close temporal proximity to extended periods of elevated Mana suggests that Great Dragons are still relying on the Ritual of Blue Spirits to create their servants. Perhaps a genetic marker exists in the descendants of Aardelea which through exposure to high mana sources forces a latent transformation.</p></li>

<li><p>The Books of Harrow. As I mentioned previously, I think that artifacts from previous eras could prognosticate the return of the Scourage. Perhaps the Sphinx in Eygpt is Jaron himself and the Ritual of Awakening can coax some tidbits of information from him.</p></li>

<li><p>The Orichulum Wars. I think the manifestation of Orichulum in SR3 provide ample opportunity to introduce the theme of War on a Global scale to SR3. As well as allowing for closer technological and magical integration, it becomes the currency of the new era. </p></li>

<li><p>Kaers. With the discovery of the Books of Harrow, preparations begin to secure humanity against the onslaught. Although there are those who believe that the Scourge can still be avoided, the prudent begin construction of Kaers; this time with the help of technology. Think Saeder Krupp Prime.</p></li>

<li><p>The rise of Magic. The warning by ancestor spirits of the coming Scourage points to the development of Nethermancy. Prior to this, Elementalism, Wizardry, and Illusionism were well represented in SR3. This would be a new magical focus which manifests in SR3. At first, those who are practitioners are hunted down until it becomes understood that Nethermancy is not the practice of the Dark Arts, but the study of the magic use of the Horrors. This could dovetail nicely with the rise of the Cyberpapacy and their war on Heretical Nethermancers.</p></li>

<li><p>The Power of Naming. This could have the biggest effect on the use of persistent magic in SR3. Like ED, it is not enough that something is inherently magical because of its construction or materials, but through its use becomes empowered. This could mesh well with the Torg cosm artifacts in terms of the Karma/Possibilities. Mechanics to be determined at some future date.</p></li>

</ul>
</li>

</ol>

<p>As with the general rules, comments are welcome.</p>
]]></description>
         <link>http://www.z1r0.com/2008/07/shadow_dawn_dungeon_masters_co.html</link>
         <guid>http://www.z1r0.com/2008/07/shadow_dawn_dungeon_masters_co.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">RPG</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">RPG</category>
        
         <pubDate>Wed, 23 Jul 2008 20:43:47 -0700</pubDate>
      </item>
      
      <item>
         <title>Shadow Dawn - Rule Modifications</title>
         <description><![CDATA[<p>Over the years, my RPG group has sampled the entire genre of classic RPG games ranging from Paranoia to Warhammer10K. Three systems we always find ourselves returning to are Earthdawn, ShadowRun 3rd Edition, and Torg. These systems represent the pinnacle of the RPG experience. Whether it's the immersive world stories and plot lines, the technical mechanics of representing dramatic action,  the scalability in play for increasingly capable characters, or the engagement of players in telling their own stories in the context of the game, these systems epitomize the true nature of RPGs. All that needs to be said about the quality of these games can be summarized by one simple fact - they are imminently replayable. How may games can you say that about?</p>

<p>Instead of subjecting ourselves to YAGS (yet another gaming system), we decided to create a fusion of these existing games. This will hopefully bring together all of the best elements from the individual gaming systems to create an familiar, yet engaging whole. It is assumed that groups that wish to apply these rules have access to source material from all of the three gaming systems mentioned above.</p>

<p>The base story line is that from ShadowRun 2050. The rise of magic and the return of the Halley's comet provide key points to inject themes from Torg and Earthdawn into the near future at the confluence of magic and technology.</p> 

<h2>New Rules</h2>

<ol>
<li>There is a disconnect in SR between attributes and skills which impacts the probability of a success test.This does not make the distinction between aptitude (represented by attributes) versus skills.The changes below address some of the shortcomings of the 3rd edition rules.

<ul>
<li>certain game aspects will be changed to reflect the that skills are based on attributes. The failuretarget number for skills based on the attribute is equal to 6 - attribute value to a minimum of 1. Failures always take precedent over successes. For example a character with an attribute of 1 will result in the skill failure threshold of 5 or less regardless of the standard success target number.
</li>
<li>the number of true failures (1 on a d6) that can be ignored on a skill role is based on 1/4 of the skill. In essence, there is a balance between the skill (in terms of the number of true failures that can be ignored) and the base aptitude (the failure threshold). While increasing aptitude (the attribute) reduces the threshold of failure, skill limits the amount of mistakes that can be made, but does not
remove the possibility of failure.
</li>
<li><b>BOD</b> 
      <ul>
           <li>for every two points of this attribute add 1 additional box to the physical damage monitor.
           </li>
           <li>1/3 of the BOD attribute shifts the damage levels by its value. For example, a BOD attribute of 8 will result in the following physical damage monitor: xxLxxMxxSxxxDx
           </li>
           <li>this results in 2 additional boxes before L damage is felt. It also means that a character with a BOD of 8 can take D damage without going unconscious as well as having an additional box before going into overflow.
           </li>
       </ul> 
</li>

<li><b>STR</b>
        <ul>
              <li>1/3 of the STR attribute can be used for recoil compensation.</li>
         </ul>
</li>

<li><b>DEX</b>
       <ul>
             <li>1/3 of the DEX attribute is used to determine the number of physical distance attack successes to target a character to a minimum of 1. For example, a character with a dexterity of 6 would require 2 successes to damage successfully.</li>
       </ul>
</li>

<li><b>INT</b>
       <ul>
             <li>1/3 of the INT attribute can be used to cancel Dump Shock damage associated with a single action.</li>
       </ul>
</li> 

<li><b>WIL</b>
       <ul>
             <li>for every two points of this attribute add 1 additional box to the stun damage monitor.</li> 
              <li>1/3 of the WIL attribute shifts the stun damage levels by its value. See the BOD attribute.</li>
              <li>1/3 of the WIL attribute is used to determine the number of magical attack successes required totarget a character to a minimum of 1. For example, a character with a willpower of 9 would require 3 successes to damage successfully.</li>
       </ul>
</li>

<li><b>CHA</b>
       <ul>
             <li>1/3 of the CHA attribute is used to determine the number of social interaction successes required to target the character.</li>
        </ul>
</li>

<li><b>MAGIC</b>
       <ul>
             <li>1/3 of the MAGIC attribute can be used to cancel drain boxes associated with a single magical action. For example, a character with a MAGIC attribute of 6 can ignore 2 boxes of drain. When casting a spell with Medium drain, the amount of actual drain taken is 1 box (3 - 2) or Light. This allows highly magical beings to ignore drain in proportion to their magic rating.</li>
             <li>(physical adepts only) 1/3 of the MAGIC attribute determines the power level of certain powers. The adept is only responsible for purchasing the base power. Its effectiveness is inheritly linked to the adepts magic / initiate level.</li>
             <li> (MAGIC - 6) =  the number of  metamagical techniques a character can possess.</li>
             <li>(MAGIC - 6)/2 = technological healing modifier. Magical creatures are more difficult to heal with purely technological means. This modifier does not apply to magical healing methods.</li>
       </ul>
</li>

<li><b>ESSENCE</b>
       <ul>
             <li>(ESSENCE - 6)/2 = social interaction test modifier. Characters that are heavily modified by cybernetics have lower emotional affect which hinders social interaction</li> 
             <li>(ESSENCE - 6)/2 = magical healing modifier. Characters with extensive cybernetics are more difficult to heal by magical means. This does modifier does not apply to technological healing methods.</li>
        </ul>
</li>

</ul>
</li>

<li>Current dice mechanics measure only successes and not failures. Going forward all roles will require measure successful roles against true failures (1 on a d6). Any true failures must be subtracted from any rolled successes to determine the net result of the test. For example if the standard target number of 4 results in a roll of 1,2,4,4,6 the net result is 3 successes - 1 failure = 2 successes.
</li>

<li><p>Karma pools remain the same, but their usage is as follows: Karma can no longer be used to buy successes. They can only be used to augment dice rolls. They cannot be used for rerolls. They can be used to cancel dice failures (1 on a d6), but not gain unrolled successes. The corollary is that your karma pool can only increase and NOT decrease. Increasing your karma pool requires using accumulated karma points to increase the pool at a cost of karma equal to the next level.</p>

<p>There are no more group karma pools. Karma points refresh at the end of every session.</p>
</li>

<li><p>Skill concentrations will be used as following: For every 2 points in a skill, a single concentration can be chosen. There are no more separate build/repair skills, only the build repair concentration. This removes the skill tree proliferation that has handicapped 3rd edition rules. Using skills with the correct concentration allows the character to role against standard success target numbers. Using the skill 
without the correct concentration will require achieving a good success for a test. This also reduces the maximum staging offset by 1.</p>

<p>As well as determining the number of dice rolled, a skill also determines the number of true failures that can be disregarded on a single roll. 1/4 of the skill level can be used to disregard true failures (1 on a d6). For example, a skill of 8 when roled will allow for 2 true failures to be ignored.</p>
</li>

<li><p>Target numbers will be modified for difficulty following ED rules. There will be failure, average, good, excellent, and extraordinary success target numbers. The highest roled dice determines the success level. For every success level achieved, the staging number of the role is increased by 1. For example, an attack that does 9M damage will a single good success will result in 10M damage. Additional successes will power 
level will increase. For example, two average successes for an attack that does 9M damage will result in 9S damage. </p>

<p>Failures result when there are no rolls resulting in successes, but the number of true failures (1 on a d6) exceed 1/4 of the attribute on which the skill is based. For example, if a skill of 6 based on an attribute value of 4 results in a roll of 1, 2, 2, 2, 3, 3 when a standard target number of 4 is required for the role will result in 3 failures (1 true failures + 2 standard failures based on 6-4=2). </p>

<p>A catastrophic failure results when the skill dice roled results in more true failures (1 on a d6) than 1/2 of the base attribute. For example, if the skill roll instead resulted in 1, 1, 2, 2, 3, 3 this would have resulted in 4 failures (2 true failures + 2 standard failures). Since the attribute base is 4, this would have resulted in a catastrophic failure.</p> 

<p>A standard failure results in a minor inconvenience (i.e. a gun jam). A catastrophic failure will result in something more dramatic (i.e. such as your ammo exploding resulting in damage). This is usually a good time to use a karma point to reduce the number of true failures.</p>

<p>Using karma to offset roles results in a double edged sword. As well as providing more opportunity to increasing the role effect, it also increases the possibility of true failures. Karma usage becomes more unpredictable which reflects the uncertainty introduced by relying on magic. Only experience can mitigate
the risks associated with using karma.</p>
</li>

<li><p>Initiative is to be determined using the Drama Deck. Only one standard action is allowed per round, unless modified by the Drama Deck. Speed and defensive/offensive capability is now better reflected in a character's attributes. </p>
</li>

<li><p>Magical or technological enhancement of the attribute does NOT affect the base attribute modifiers. They are considered externalities and already have requisite benefits associated with their use. The only caveat is for physical adepts who use their magic points to improve their attributes. These bonuses affect the underlying attribute which affect the base attribute modifiers.</p>
</li>

<li><p>Essence can be improved like any other attribute. This allows for healing and social interaction bonuses as well as to recovering Essence Loss associated with the removal of cyberware. This also allows magical characters to install cyberware by offsetting any loss in their magic rating.</p>
</li>

<li><p>Knowledge skills and contacts can only be improved through role playing.</p></li>

<li><p>The Drama Deck will be used to enhance various aspects of the game:</p>
<ul>
     <li>as per Torg, characters will start out with 5 cards which they must activate by placing into their pool. One card per initiative turn is allowed.</li>
     <li>each skill bonus can be applied to a single die result. Multiple cards can be used either on a single die result or to affect multiple dice (with one card per die).</li>
     <li>the attribute bonuses correspond as follows:
          <ul>
             <li>BOD - Toughness</li>
	     <li>DEX - Dexterity</li>
	     <li>STR - Strength</li>
	     <li>CHA - Charisma</li>
	     <li>INT - Perception</li>
	     <li>WIL - Mind</li>
	      <li>MAGIC - Spirit</li>
          </ul>
     <li>

   <li>alertness cards function without modification.</li>
   <li>haste cards allow for an additional action within a round.</li>
   <li>master plan cards function without modification.</li>
   <li>seize initiative cards function without modification.</li>
   <li>hero cards can be used to re-roll ALL failed dice or cancel one true failure (1 on a d6). They can also be used to counteract an opponent fails card. Keeping this card till the end of the session increases the karma reward by 1 as well.</li>
   <li>opponent fails cards function without modification.</li>
   <li>rally works without modification. All stun damage is removed.</li>
   <li>second chance works without modification.</li>
   <li>connection allows a character to develop a contact.</li>
   <li>idea works without modification.</li>
   <li>glory : use of this card in conjuction with an extraordinary success will also shift the damage level to D. Keeping this card till the end of the session increases the karma reward by 3 as well.</li>
   <li>monologue works without modification.</li>
   <li>campaign works without modification.</li>
   <li>coup de grace : shifts the base damage level of an attack by 1 damage level. An attack with a base of S can be shifted to a base of D.</li>
   <li>romance works without modification. Can be submitted for 1 additional karma point reward if unused.</li>
   <li>martyr : why change this at all?</li>
   <li>mistaken identity : ditto</li>
   <li>true identity : ditto</li>
   <li>personal stake : ditto</li>
   <li>nemesis : ditto</li>
   <li>suspicion : ditto</li>
   <li>drama : can be used like a hero card or redeemed for 3 karma points at the end of an adventure.</li>
   <li>leadership works without modification</li>
   <li>supporter works without modification</li>
   <li>escape : probably shouldn't allow this, but oh well ...</li>
   <li>hero fails : no deck is complete without this. Can be redeemed (if used in a session) for 3 karma points.</li>
   <li>research works without modification</li>
   <li>quest works without modification</li>
   <li>super hero : roll twice and take the best result or use it like a hero card.</li>
   <li>second wind : ignore stun penalties for this round only</li>
   <li>resolve : add an additional success to any WIL based action for this round.</li>
   <li>breakthrough : use any unskilled skill without penalties</li>
   <li>new hope : roleplay a round of inspirational speech. All players that can trade cards are inspired.</li>
   <li>plunder works without modification</li>
   <li>fate : replace as many cards from the deck as you have discarded</li>
   <li>murphy's law : like hero fail's but worse. The bright side is its worth 4 karma points if used.</li>
   <li>retrospection : cannot be played in combat. After a round of meditation, you can replace this card with another card in the Discard Stack.</li>
   <li>desperation : all players can put their cards into their pools.</li>
   <li>clone : this card duplicates the affect of one card already in the pool.</li>
   <li>reckoning : bonus applies to a single opponent and only until the end of an event/scene.</li>
   <li>defiance : bonus applies to a single opponent and only until the end of an event/scene.</li>
   <li>repair : works for 1 round</li>
</ul>

<p>Card actions work as follows:</p>
<ul>
     <li>Fatigue : add L Stun Damage (this is not compensated for by WIL bonuses)</li>
     <li>Inspiration : remove L Stun Damage</li>
     <li>Up : re-roll all failed dice</li>
     <li>Flurry : get another action this round</li>
     <li>Setback : lose your action this round, if completing a task lose one level of success</li>
     <li>Stymied : lose your action this round</li>
     <li>Breaks : lose one success for every action taken this round.</li>
     <li>Confused : if completing a task, you cannot make progress this round</li>
</ul>
<p>As per Torg, approved actions will allow the character to draw another card from the drama deck. At the end of a session, players can only have a maximum of 5 cards in their hand. Excess cards MUST be discarded.</p>

</li>

<li><p>We will be starting at the beginning of the know ShadowRun universe. SOTA will be factored into the game time line as your characters progress through the adventures. This means that all characters start off with only the base equipment allowable for SR3 2050 characters. This also means that as SOTA becomes a factor, older gear will begin to loose its effectiveness. Your characters will also have age affect their attributes.</p>
</li>

<li><p>Spells will NOT have rating levels. The force/power of the spell is to be determined by the caster. This should simplify magic immensely. The distinction/bonuses for hermetic versus shamanic magicians still apply.</p>
</li>

<li><p>Building gear. The appropriate build/repair skill will allow construction/customization of gear. Custom built gear will have the same stats as the manufactured stuff, but will have a reliability rating
as well. This factor will be based on the following formula:</p>

<pre>
(manufactured cost)/2 
---------------------
     custom cost
</pre>

<p>This means that a custom solution can be as reliable as the manufactured one if the component cost is equal to half the cost of the original. Using inferior components reduces reliability. If the custom component cost is equal to only 1/4 of the original cost, the component will be twice as likely to fail. Reliability mechanics to be determined. This also means that for riggers, repairing their droids should
be feasible (assuming there is enough left to salvage).</p>
</li>

<li><p>As per ED, skill advancement requires successful use of a skill at the current level. Attributes can be improved whenever (assuming you have the karma points to spend).</p>
</li>

<li><p>Reputation will also factor into the game. The Karma Point total will be used to measure character reputation. This will have both positive and negative impacts on character interaction with in-game personalities and will affect game mechanics such as availability. The reputation system mechanics to be determined.</p>
</li>

</ol>

<p>This is a work in progress. Obviously, play testing will reveal any flaws with these rules. Changes will be published as these deficiencies are discovered. Feel free to comment on these rule changes or make additional suggestions.</p>]]></description>
         <link>http://www.z1r0.com/2008/07/shadow_dawn_rule_modifications.html</link>
         <guid>http://www.z1r0.com/2008/07/shadow_dawn_rule_modifications.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">RPG</category>
        
        
         <pubDate>Tue, 22 Jul 2008 20:41:37 -0700</pubDate>
      </item>
      
      <item>
         <title>Further Eliminations X</title>
         <description><![CDATA[Those who have measured the distance between expectation and reality.

<blockquote>Ceux qui ont mesuré la distance entre l'espérance et la réalité.</blockquote>]]></description>
         <link>http://www.z1r0.com/2008/07/further_eliminations_x.html</link>
         <guid>http://www.z1r0.com/2008/07/further_eliminations_x.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Elimination Dance</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">dances</category>
        
         <pubDate>Tue, 22 Jul 2008 19:37:49 -0700</pubDate>
      </item>
      
   </channel>
</rss>
