<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Mark Leighton Fisher</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/" />
    <link rel="self" type="application/atom+xml" href="http://blogs.perl.org/users/mark_leighton_fisher/atom.xml" />
    <id>tag:blogs.perl.org,2009-11-03:/users/mark_leighton_fisher//541</id>
    <updated>2013-05-21T11:05:12Z</updated>
    <subtitle>A blog about the Perl programming language, software engineering, and other topics by Mark Leighton Fisher.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.38</generator>

<entry>
    <title>Git is the next Unix?</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2013/05/git-is-the-next-unix.html" />
    <id>tag:blogs.perl.org,2013:/users/mark_leighton_fisher//541.4700</id>

    <published>2013-05-21T10:55:13Z</published>
    <updated>2013-05-21T11:05:12Z</updated>

    <summary>Is Git the next Unix? Short answer - no. Long answer - no, but (a) Git is a powerful distributed source control system for developers and (b) Git&apos;s underlying object database is a powerful, fast database (faster than &quot;cp-a&quot; by...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="filesystem" label="filesystem" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="git" label="git" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gitfilesystem" label="gitfilesystem" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p><a href="http://www.advogato.org/person/apenwarr/diary/371.html">Is Git the next Unix</a>?</p>

<p>Short answer - no.</p>

<p>Long answer - no, but (a) Git is a powerful distributed source control system for developers and (b) Git's underlying object database is a powerful, fast database (faster  than "cp-a" by some accounts). (It might be your next filesystem, though -- read the linked article.)</p>

<p>Git's object database sacrifices some space for ease of manipulation, as each object is a file referred to by its SHA-1 hash. These objects are in a 2-level store, so an object A4F272058... will always be found at A4/272058... This is both fast (as mentioned before) and easy to debug and manipulate. And it is fast (worth mentioning twice), to the point that "git checkout" can be faster than "cp -a" in at least some circumstances.</p>

<p>Take a look at <a href="https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools">Git Interfaces, frontends, and tools</a> for some of the many tools built on top of or with Git.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Upgrading CORE Perl Modules? Use UNINST=1!</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2013/05/upgrading-core-perl-modules-use-uninst1.html" />
    <id>tag:blogs.perl.org,2013:/users/mark_leighton_fisher//541.4646</id>

    <published>2013-05-05T15:22:34Z</published>
    <updated>2013-05-05T15:24:26Z</updated>

    <summary>This one is easy to miss if you only develop in Perl part-time. If you have to upgrade a CORE module (usually because another module needs that upgraded CORE module), then you need to add UNINST=1 to your make(1) invocation....</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="coreperl" label="coreperl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="uninst" label="uninst" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>This one is easy to miss if you only develop in Perl part-time. If you have to upgrade a CORE module (usually because another module needs that upgraded CORE module), then you need to add UNINST=1 to your make(1) invocation.</p>

<p>There are few things more aggravating than to "make install" several times with different tweaks only to always end up with the same, out-of-date module stubbornly still installed. All for the lack of an UNINST=1.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Importing the  LOCKSS lockss-daemon into Eclipse</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2013/04/importing-the-lockss-lockss-daemon-into-eclipse.html" />
    <id>tag:blogs.perl.org,2013:/users/mark_leighton_fisher//541.4511</id>

    <published>2013-04-09T17:02:38Z</published>
    <updated>2013-04-09T17:32:13Z</updated>

    <summary>I haven&apos;t found any guidance on developing for LOCKSS with Eclipse, so here are the steps I followed to load the lockss-daemon code into Eclipse after checking it out from the anonymous CVS repository: Create a new project (I named...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="eclipse" label="eclipse" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="lockss" label="lockss" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>I haven't found any guidance on developing for
<a href="http://www.lockss.org/">LOCKSS</a> with Eclipse, so here
are the steps I followed to load the lockss-daemon code into Eclipse after
checking it out from the anonymous CVS repository:<p>

<ul>
  <li>Create a new project (I named it <em>lockss-daemon</em>).</li>
  <li>Select <strong>Use project folder as root for source and class files</strong>
	to make your life easier in the next step.</li>
  <li>This will bring up the dialog <strong>Java Settings</strong>. You will want to
	use the <strong>Link additional source</strong> link with parameters like these:
    <ul>
      <li><strong>Linked folder location:</strong> &ndash; Use something like
			<em>LOCKSSDAEMON/src</em> (my folder was
			<strong>C:\cygwin\home\lockss-daemon\src</strong>).</li>
      <li><strong>Folder name:</strong> &ndash; use <em>org</em>.
			This helps Eclipse put all of the files in Eclipse's idea of the right
			location (i.e. starting at the beginning of the
			package name). (Figuring out this step is where I had the most
trouble.)</li></ul></li>
  <li>Select your project in Project Explorer, then use
	<strong>Build Path -> Configure Build Path</strong> with the
	<strong>External JARs</strong> button to get the lockss-daemon JAR files
	&ndash; my JAR files were at
	<em>C:\cygwin\home\lockss-daemon\lib\*.jar</em>.</li>
	<li>Use <strong>Build Path -> Configure Build Path</strong> to
	remove, then re-add the JRE System Library to restore the
	correct dependency order (a fix found via
	<a href="http://stackoverflow.com/questions/860187/access-restriction-on-class-due-to-restriction-on-required-library-rt-jar">http://stackoverflow.com/questions/860187/access-restriction-on-class-due-to-restriction-on-required-library-rt-jar</a>).</li>
</ul>]]>
        
    </content>
</entry>

<entry>
    <title>Encoding Metadata in a Git Repository</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2013/02/encoding-metadata-in-a-git-repository.html" />
    <id>tag:blogs.perl.org,2013:/users/mark_leighton_fisher//541.4290</id>

    <published>2013-02-08T23:10:26Z</published>
    <updated>2013-02-08T23:39:52Z</updated>

    <summary>A fairly cheap kludge to encode metadata into a Git repository would use special directories that link to the files that need metadata. (I suggest prefixing the directory names with &quot;...&quot;, as that is ignored by default in some popular...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="file" label="file" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="git" label="git" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="metadata" label="metadata" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>A fairly cheap kludge to encode metadata into a Git repository would use special directories that link to the files that need metadata. (I suggest prefixing the directory names with "...", as that is ignored by default in some popular OS shells.)</p>

<p>An example of this is probably easier. Say we have <strong>jenkins.our-config</strong> and <strong>git.our-hooks</strong> in our repo <strong>configuration</strong>:<br />
<pre><br />
    configuration<br />
        jenkins.our-config<br />
        git.our-hooks<br />
</pre><br />
We want to include that both files are about our production server. If we set up a directory structure in the repo like this:<br />
<pre><br />
    configuration<br />
        jenkins.our-config<br />
        git.our-hooks<br />
        ...server=production<br />
            jenkins.our-config<br />
            git-our-hooks<br />
</pre><br />
with <strong>jenkins.our-config</strong> and <strong>git.our-hooks</strong> as links, then:<br />
<ul><br />
<li>Those files are not duplicated in the working tree;</li><br />
<li>Those files are the same blob in the Git database (as they are links);</li><br />
<li>Users do not ordinarily see <strong>...server=production</strong>; and</li><br />
<li>The metadata about those files (<em>server=production</em>) is encoded directly into the Git repository.</li><br />
</ul><br />
If you are on a filesystem without links, then you will have duplicate content in your working tree (but not in the database, as the blobs for <strong>jenkins.our-config</strong> and <strong>git.our-hooks</strong> are identical between <strong>configuration</strong> and <strong>configuration/...server=production</strong>). In that case, you could use a Git pre-commit hook to update the copies of the files in the special directories so they match the normal working files.</p>

<p><br />
As I said, this is a kludge, but it would (a) work and (b) require little magic.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Building Perl 5.16.2: Windows Madness!</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2013/01/building-perl-5162-windows-madness.html" />
    <id>tag:blogs.perl.org,2013:/users/mark_leighton_fisher//541.4233</id>

    <published>2013-01-25T22:07:20Z</published>
    <updated>2013-01-25T22:10:20Z</updated>

    <summary>I think it bears repeating -- on Windows with Cygwin, edit PATH to remove unfriendly characters like &apos;(&apos; (I&apos;m looking at at you, C:\Windows\Program Files (x86)). At least for me, this wasn&apos;t an obvious problem either......</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="buildperl" label="buildperl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cygwin" label="cygwin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="windows" label="windows" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>I think it bears repeating -- on Windows with Cygwin, edit <strong>PATH </strong> to remove unfriendly characters like '(' (I'm looking at at you, <em>C:\Windows\Program Files (x86)</em>).</p>

<p>At least for me, this wasn't an obvious problem either...</p>]]>
        
    </content>
</entry>

<entry>
    <title>pmtool-1.30 (Perl Module Tools) Released</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2013/01/pmtool-130-perl-module-tools-released.html" />
    <id>tag:blogs.perl.org,2013:/users/mark_leighton_fisher//541.4215</id>

    <published>2013-01-18T22:57:29Z</published>
    <updated>2013-01-18T23:05:27Z</updated>

    <summary>I&apos;ve released v1.30 of pmtools (Perl Module Tools) with these changes: Moved to Git for source control. Added a GitHub repo for pmtools. Fixed Devel::Loaded to not include itself in the output (thanks to NEILB@cpan.org for spotting this problem). As...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="git" label="git" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="github" label="github" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlmoduletools" label="perlmoduletools" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pmtools" label="pmtools" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>I've released v1.30 of <a href="http://search.cpan.org/dist/pmtools/">pmtools (Perl Module Tools)</a> with these changes:<p>
<ul>
	<li>Moved to Git for source control.</li>
	<li>Added a <a href="https://github.com/markleightonfisher/pmtools">GitHub repo for pmtools</a>.</li>
	<li>Fixed Devel::Loaded to not include itself in the output  (thanks to NEILB@cpan.org for spotting this problem). As long as you don't have files like 'MyOwnDevel/Loaded.pm', you are good to go.</li>
	<li>Patched pmeth to flag constants (thanks to jpierce@cpan.org). Note that XS constants are not yet flagged (needs some C-fu applied).</li>
	<li>Patched for basepods now in 'pods' in modern Perls. I guess the patch was from a CPANgnome, as there was no Requestor :(.</li>
</ul>
]]>
        
    </content>
</entry>

<entry>
    <title>OT: Purdue Course Signals - An Early Warning System for Students in Trouble</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2013/01/ot-purdue-course-signals---an-early-warning-system-for-students-in-trouble.html" />
    <id>tag:blogs.perl.org,2013:/users/mark_leighton_fisher//541.4209</id>

    <published>2013-01-17T11:59:10Z</published>
    <updated>2013-01-17T12:03:53Z</updated>

    <summary>Purdue&apos;s Course Signals provides instructors with an early-warning system for students who are struggling or otherwise in trouble in their courses. And it works! Possibly the coolest piece of educational technology I&apos;ve seen in quite a while....</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="coursesignals" label="coursesignals" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="earlywarning" label="earlywarning" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="purdue" label="purdue" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p><a href="https://www.itap.purdue.edu/newsroom/detail.cfm?NewsId=2726">Purdue's Course Signals</a> provides instructors with an early-warning system for students who are struggling or otherwise in trouble in their courses. And it works! Possibly the coolest piece of educational technology I've seen in quite a while.]]>
        
    </content>
</entry>

<entry>
    <title>Vim - Creating a Macro Without Recording It</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2013/01/vim---creating-a-macro-without-recording-it.html" />
    <id>tag:blogs.perl.org,2013:/users/mark_leighton_fisher//541.4203</id>

    <published>2013-01-15T20:35:32Z</published>
    <updated>2013-01-15T20:40:09Z</updated>

    <summary>Just as you can edit a macro in Vim by pasting it to a buffer and editing the pasted text (then yanking the edited text into the macro register), you can create a Vim macro by yanking (J. Random) text...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vim" label="vim" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vimmacro" label="vimmacro" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>Just as you can edit a macro in Vim by pasting it to a buffer and editing the pasted text (then yanking the edited text into the macro register), you can create a Vim macro by yanking (J. Random) text into a register then executing that register as a macro.</p>

<p><em>(This makes it easy to play the home game, "Gee, I wonder what this line noise would do in Vim?")</em></p>]]>
        
    </content>
</entry>

<entry>
    <title>pmtools on GitHub</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2012/12/pmtools-on-github.html" />
    <id>tag:blogs.perl.org,2012:/users/mark_leighton_fisher//541.4146</id>

    <published>2012-12-21T19:28:56Z</published>
    <updated>2012-12-21T19:40:42Z</updated>

    <summary>GitHub now holds a pmtools Git repository. Since I have some time right now to attend to pmtools (and other personal programming), I thought it would make my life easier to move my pmtools development into Git while making pmtools...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="git" label="git" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="github" label="github" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlmoduletools" label="perlmoduletools" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pmtools" label="pmtools" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>GitHub now holds a <a href="https://github.com/markleightonfisher/pmtools">pmtools Git repository</a>. Since I have some time right now to attend to <a href="http://search.cpan.org/dist/pmtools/">pmtools</a> (and other personal programming), I thought it would make my life easier to move my pmtools development into Git while making pmtools development more collaborative.</p>

<p><em>(Yes, I will accept pull requests, but I reserve the right to review all changes before making a formal release.)</em></p>]]>
        
    </content>
</entry>

<entry>
    <title>Stupid Joomla Tricks: Using /images to get PHPUnit coverage results</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2012/12/stupid-joomla-tricks-using-images-to-get-phpunit-coverage-results.html" />
    <id>tag:blogs.perl.org,2012:/users/mark_leighton_fisher//541.4124</id>

    <published>2012-12-11T20:21:15Z</published>
    <updated>2012-12-11T20:26:17Z</updated>

    <summary>If your website is powered by Joomla! but you want to display your PHPUnit HTML coverage results like the rest of the webpages, you can stick the coverage results in a subdirectory of images, like http://developer.example.com/images/coverage/. I haven&apos;t tried it,...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="joomla" label="joomla" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="stupidjoomlatricks" label="stupidjoomlatricks" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="stupidtricks" label="stupidtricks" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>If your website is powered by Joomla! but you want to display your PHPUnit HTML coverage results like the rest of the webpages, you can stick the coverage results in a subdirectory of <em>images</em>, like <strong>http://developer.example.com/images/coverage/</strong>.</p>

<p>I haven't tried it, but I expect this trick would work for other CMS-driven sites.</p>]]>
        
    </content>
</entry>

<entry>
    <title>pmtools-1.20 (Perl Module Tools) Released</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2012/12/pmtools-120-perl-module-tools-released.html" />
    <id>tag:blogs.perl.org,2012:/users/mark_leighton_fisher//541.4123</id>

    <published>2012-12-11T20:13:01Z</published>
    <updated>2012-12-11T20:20:32Z</updated>

    <summary>I&apos;ve released pmtools-1.20 with these fixes: pminst now only displays unique names. pminst now ignores non-existent directories in @INC. I added pmcheck, a utility to check whether Perl is set up for Perl modules. At the moment, pmcheck just reports...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perlmoduletools" label="perlmoduletools" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pmtools" label="pmtools" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>I've released pmtools-1.20 with these fixes:</p>
<ul>
	<li><strong>pminst</strong> now only displays unique names.</li>
        <li><strong>pminst</strong> now ignores non-existent directories in <em>@INC</em>.</li>
        <li>I added <strong>pmcheck</strong>, a utility to check whether Perl is set up
for Perl modules. At the moment, <strong>pmcheck</strong> just reports problems with <em>@INC</em> (missing directories, etc.)
</ul>
Thanks to Matthew Persico and Andrew Pam for their help with <strong>pminst</strong>.]]>
        
    </content>
</entry>

<entry>
    <title>Another view of XML schema attributes vs. elements</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2012/11/another-view-of-xml-schema-attributes-vs-elements.html" />
    <id>tag:blogs.perl.org,2012:/users/mark_leighton_fisher//541.4007</id>

    <published>2012-11-01T16:26:35Z</published>
    <updated>2012-11-01T16:34:54Z</updated>

    <summary>Another way to look at whether you should add information as an attribute or a child element while designing an XML schema element is whether you are talking about an IS-A or a HAS-A relationship. Attributes are great for IS-A...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="attributes" label="attributes" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="elements" label="elements" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xml" label="xml" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>Another way to look at whether you should add information as an attribute or a child element while designing an XML schema element is whether you are talking about an IS-A or a HAS-A relationship.</p>

<p>Attributes are great for IS-A relationships -- "I am an element with ID='20121101-i1' or "I am an element for the Dublin Core (METS MDTYPE='DC')".</p>

<p>Child elements are great for HAS-A relationships -- "I have several groups of files" or "I have binary and XML data for a file".</p>]]>
        
    </content>
</entry>

<entry>
    <title>When to create a branch in Git?</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2012/11/when-to-create-a-branch-in-git.html" />
    <id>tag:blogs.perl.org,2012:/users/mark_leighton_fisher//541.4006</id>

    <published>2012-11-01T15:22:13Z</published>
    <updated>2012-11-01T15:26:25Z</updated>

    <summary>Upon reflection: $ git status # On branch master # Your branch is ahead of &apos;origin/master&apos; by 297 commits. I think maybe I should have created a branch&#8230;...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="branch" label="branch" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="git" label="git" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gitbranch" label="gitbranch" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>Upon reflection:</p>

<pre>
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 297 commits.
</pre>

<p>I think maybe I should have created a branch&#8230;</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Towards a Science of Psychohistory</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2012/10/towards-a-science-of-psychohistory.html" />
    <id>tag:blogs.perl.org,2012:/users/mark_leighton_fisher//541.3936</id>

    <published>2012-10-08T21:13:08Z</published>
    <updated>2012-10-08T21:15:24Z</updated>

    <summary>Computational Social Science lets you compute what a group of people will do given their various levels of motivations (self-interest, wanting to fit in, etc.) Correspondingly, given the outcome Computational Social Science can calculate the varied and sundry motivations that...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="computationalsocialscience" label="computationalsocialscience" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="psychohistory" label="psychohistory" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>Computational Social Science lets you compute what a group of people will do given  their various levels of motivations (self-interest, wanting to fit in, etc.) Correspondingly, given the outcome Computational Social Science can calculate the varied and sundry motivations that went into creating that outcome.</p>

<p>This is real, solid hard science, with variables and equations and everything -- science with mathematically verifiable results, not pages of dense, hard-to-read prose because we don't actually have the equations to express what we know about the subject in question.</p>

<p>Those of us who have braved the wilds of science fiction will recognize this by another name -- Isaac Asimov's fictional science of psychohistory. Computational Social Science  is social science taking the first steps toward becoming a hard science -- and guess what? Hard sciences are where we make the fastest transition from pure science to everyday engineering.</p>]]>
        
    </content>
</entry>

<entry>
    <title>xsd:choice equivalence to individual xsd:elements</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/mark_leighton_fisher/2012/08/xsdchoice-equivalence-to-individual-xsdelements.html" />
    <id>tag:blogs.perl.org,2012:/users/mark_leighton_fisher//541.3724</id>

    <published>2012-08-22T16:28:59Z</published>
    <updated>2012-08-22T16:39:56Z</updated>

    <summary>Just noticed this in XSD -- an xsd:choice with minOccurs=1 and maxOccurs=unbounded that contains 2 xsd:element(s) each with minOccurs=0 and maxOccurs=1 is roughly equivalent to just having 2 xsd:element(s), each with minOccurs=0 and maxOccurs=unbounded. The only difference I see is...</summary>
    <author>
        <name>Mark Leighton Fisher</name>
        
    </author>
    
    <category term="markleightonfisher" label="markleightonfisher" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xsd" label="xsd" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xsdchoice" label="xsdchoice" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/mark_leighton_fisher/">
        <![CDATA[<p>Just noticed this in XSD -- an <strong>xsd:choice</strong> with <em>minOccurs=1</em> and <em>maxOccurs=unbounded</em> that contains 2 <strong>xsd:element</strong>(s) each with <em>minOccurs=0</em> and <em>maxOccurs=1</em> is roughly equivalent to just having 2 <strong>xsd:element</strong>(s), each with <em>minOccurs=0</em> and <em>maxOccurs=unbounded</em>.</p>

<p>The only difference I see is that having the<strong> xsd:choice</strong> lets you alternate between the <strong>xsd:element</strong>(s). In many common processing cases (that I've seen), these 2 sub-schemas are completely equivalent.</p>]]>
        
    </content>
</entry>

</feed>
