<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[davidb dives in]]></title>
  <link href="http://blacka.com/david/atom.xml" rel="self"/>
  <link href="http://blacka.com/david/"/>
  <updated>2012-01-13T21:55:07-05:00</updated>
  <id>http://blacka.com/david/</id>
  <author>
    <name><![CDATA[David Blacka]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Migration to Octopress]]></title>
    <link href="http://blacka.com/david/2011/10/09/migration-to-octopress/"/>
    <updated>2011-10-09T15:54:00-04:00</updated>
    <id>http://blacka.com/david/2011/10/09/migration-to-octopress</id>
    <content type="html"><![CDATA[<p>I&#8217;ll admit it.  I&#8217;ve been ignoring this blog for a while.  Recently,
over lunch, my friends started talked about <em>their</em> moribund blogs and
the basic security threat they implied.  My friend
<a href="http://seanmountcastle.com">Sean</a> said that he&#8217;d migrated to
<a href="http://ocotopress.org">octopress</a> based on a
<a href="http://mattgemmell.com/2011/09/12/blogging-with-octopress/">blog post</a>.
Given that we had all been running various versions of
<a href="http://wordpress.org">wordpress</a>, it seemed like a good idea to
investigate some other, less risky solution.  I had sort of kept up
with wordpress upgrades, but didn&#8217;t make the leap to the 3.x
series.  I actually tried it recently, and discovered that my PHP
version on the host wasn&#8217;t up to snuff.</p>

<p>So, I&#8217;ve decided to take the plunge as well.  I haven&#8217;t yet decided to
move my blog to github pages, but I have done some work to get
octopress working on my existing host.  This is the default octopress
theme.  I&#8217;m going to leave it like that for a while, because a) it
works and looks fine, and b) I&#8217;m not entirely sure how to change it.
As part of the migration, all of my posts were transcoded into
Markdown (in some cases, back into Markdown, but the majority were
straight html.)  As such, some of the formatting is broken.  I plan to
fix them as time goes on.</p>

<p>Octopress has the advantage of just generating static HTML sites
(which you then move to the host via rsync or git.)  This makes me
much happier from a security standpoint.  On the other hand, I now
have to have Octopress installed on any machine that I want to be able
to post from.</p>

<p>Since comments were actually useful on my site (although I was <em>very</em>
remiss in moderating them), I&#8217;ve moved them to
<a href="http://disqus.com">disqus</a>, as octopress can&#8217;t handle them in line.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Hosting your own git repositories]]></title>
    <link href="http://blacka.com/david/2010/09/28/hosting-your-own-git-repositories/"/>
    <updated>2010-09-28T23:13:22-04:00</updated>
    <id>http://blacka.com/david/2010/09/28/hosting-your-own-git-repositories</id>
    <content type="html"><![CDATA[<p><a href="http://github.com">Github</a> is all the rage, but what if you don&#8217;t
want to store your code up in the sky? No, you want to host it
<em>yourself</em>.  Or, more likely, you <em>have</em> to host it yourself, because
you work for some giant corporation who doesn&#8217;t believe in letting
their coders store their stuff in the unclean world.</p>

<p>So. What are your options?</p>

<p>Let&#8217;s back up a little. Why do you need to host git repositories at
all? What sorts of things should a hosting solution give you? First of
all, if you want to actually work with other people, and those other
people use, um, different computers, it is quite convenient to have a
central repository around to use as a conduit. Also, if you want to be
able to push changes anywhere, a central hosted git repository is a
not-very-confusing place to do so.</p>

<p>Generally hosting solutions range from just providing push and
clone access to a bare git repository somewhere, to bundling repository
browsers, bug trackers, wikis, graphs, ugh. The top end of the hosting
solutions integrates everything you need to run a successful software
project, the bottom end solutions do the bare minimum, letting other
apps handle the metaphorical heavy lifting. Unless you are the only one
going to use the hosted repositories, your hosting solution likely has
to deal with account management (i.e., letting other folks get accounts,
upload keys, etc.), and likely it will have to make trivial the task of
adding new repositories to the service. Some other things that it is
useful to know:</p>

<ul>
<li><em>ssh</em> is the gold standard for pushing changes. It can be done other
ways, but why waste your time with anything else?</li>
<li>The <em>git</em> protocol and http (or https) are pretty common for pull
protocols, although, you can use ssh too, of course. The nice thing
about using http is that is almost always works (unless you don&#8217;t
add the right post-commit hook). The git protocol is nice when it
isn&#8217;t blocked by an annoying firewall.</li>
</ul>


<p>And back to the main business at hand: your hosting options. This list
is non-exhaustive, but it should get you headed in the right direction.</p>

<p>The high end:</p>

<ul>
<li><p><strong><a href="http://fi.github.com/">github:fi</a></strong>. This is the commercially available version of
github that you can install yourself.  It costs money, so it makes
it hard to install as part of a stealth project. Count on paying at
least $8k-ish. However, it does everything that github.com does, and
<a href="http://fi.github.com/tour.html">looks to be quite easy to install</a>.</p></li>
<li><p><strong><a href="http://cjohansen.no/en/ruby/setting_up_gitorious_on_your_own_server">gitorious</a></strong>. (This project always makes me think of
<a href="http://www.youtube.com/watch?v=ytWIZHxolI0">Duran Duran</a>.) As an
open source project, gitorious can be downloaded and installed on
your own system. I haven&#8217;t tried this yet, but it looks like it has
a fair number of dependencies, and no one has wrapped this thing up
in a nice bow for you, so installation may be non-trivial.</p></li>
<li><p><strong><a href="http://repo.or.cz/w/girocco.git/blob/HEAD:/README">girocco</a></strong>. This
is basically gitweb on steroids. That is, it looks mostly like
gitweb, but also provides mechanisms to allow users to set up
repositories, handles &#8220;forks&#8221; of projects, and can &#8220;mirror&#8221; an
external git repository (that is, use a pull model rather than a
push model). It is a bit non-trivial to set up, but has fewer
dependcies than gitorious. You will likely have the easiest time of
it if you are installing onto Debian &#8220;Lenny&#8221; (so I gather from the
documentation). If you aren&#8217;t prepare to edit some of the scripts.</p></li>
</ul>


<p>The low end:</p>

<ul>
<li><strong><a href="http://github.com/sitaramc/gitolite">gitolite</a>/<a href="http://eagain.net/gitweb/?p=gitosis.git;a=blob_plain;f=README.rst;hb=HEAD">gitosis</a></strong>.  Both of these packages do
roughly the same thing: manage user access.  Project browsing,
repository creation, etc. are not included. The basic technique with
either tool is to create a single account (probably called &#8216;git&#8217;) on
your host, then uses the package to add other user&#8217;s ssh keys to
that account while still maintaining the idea that different users
are committing to the repositories. Of the two packages, gitolite is
still active and has more features, while gitosis hasn&#8217;t been
updated in 3 years. gitolite is implemented in Perl, gitosis in
Python.</li>
</ul>


<p>Or, just give everyone an account on a machine and tell them the path
to the bare git repositories. Or you could use a combination of
straight ssh and gitosis/gitolite. With the &#8220;low end&#8221; solutions, you&#8217;d
typically want to set up repository browsing (at least). Fortunately,
git comes with a reasonable one, gitweb. However, there are others:
<a href="http://hjemli.net/git/cgit/">cgit</a>,
<a href="http://trac-hacks.org/wiki/GitPlugin">Trac</a>, and
<a href="http://www.atlassian.com/software/fisheye/">FishEye</a>, to name a few.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Switching to Cocoa Emacs]]></title>
    <link href="http://blacka.com/david/2010/01/17/switching-to-cocoa-emacs/"/>
    <updated>2010-01-17T14:05:45-05:00</updated>
    <id>http://blacka.com/david/2010/01/17/switching-to-cocoa-emacs</id>
    <content type="html"><![CDATA[<p>&#8230; from <a href="http://homepage.mac.com/zenitani/emacs-e.html">Carbon Emacs</a>,
That is. I pretty much assume that if you aren&#8217;t already a dedicated
Emacs user you will just stick with <a href="http://macromates.com/">TextMate</a>
Or <a href="http://www.barebones.com/products/TextWrangler/">TextWrangler</a>, or
<a href="http://support.apple.com/kb/HT2523">whatever</a>.</p>

<p>Anyway, did you even know that Cocoa Emacs existed? You may have heard
Of Carbon Emacs or <a href="http://aquamacs.org/">Aquamacs</a>, but <em>WTH</em> is
Cocoa Emacs? It turns out that with the final stable release of Emacs
23.1, it came with a Cocoa native build option. Thus, Cocoa Emacs is
Now the standard, no-nonsense build of Emacs for OS X. So, how does
Cocoa Emacs compare to Carbon Emacs? It acts and feels mostly the
Same, although I think it looks a bit crisper and feels a bit faster
(which is probably an illusion). It is smaller on disk (95 MB vs 157
MB), and, of course, it is based on a newer version of Emacs
Itself. It is <em>The Future</em>!</p>

<p>There are two things that irritated me with Cocoa Emacs when I
Switched:</p>

<ol>
<li>Meta is, by default, mapped to the option key. However, this is
easily fixed.</li>
<li>Carbon Emacs came with a built-in version of aspell. With Cocoa
Emacs you need to get aspell separately. This is less easily fixed,
but it isn&#8217;t too bad.</li>
</ol>


<p>You can get a pre-built stable version of Cocoa Emacs from
<a href="https://cocoa-Emacs.s3.amazonaws.com/Cocoa%20Emacs%2023.1.dmg">Here</a>,
or nightly builds from
<a href="http://atomized.org/wp-content/cocoa-Emacs-nightly/">here</a>.</p>

<p><strong>Step 1</strong>: Switch the meta key back to the command key, where it is
meant to be.  This can either be done via Customize, or you can do it
manually with elisp. Manually, add: <code>(setq ns-command-modifier 'meta)</code>
to .Emacs. This same thing can be done simply via Customize:</p>

<ol>
<li><code>M-x customize</code>,</li>
<li>go to Environment->NS,</li>
<li>and change the &#8220;Ns Command Modifier&#8221; option to &#8220;meta&#8221;.</li>
</ol>


<p>You can map option to something else, keep it is &#8220;meta&#8221;, or unset it
altogether (which is how it behaves in Carbon Emacs, and probably what
You want).</p>

<p><strong>Step 2</strong>: Getting <a href="http://aspell.net/">aspell</a>. If you never ask
Emacs to spell check anything, you can ignore this. There are three
Ways that I&#8217;ve thought of to get aspell:</p>

<ol>
<li>Copy it from Carbon Emacs. I haven&#8217;t actually tried this, but it
should be possible to copy it from the Carbon Emacs bundle into
the Cocoa Emacs bundle. You will probably need <code>Contents/Mac
OS/bin/aspell</code> and <code>aspell-import</code>, and <code>Contents/Resources/lib</code>,
and
<code>Contents/Resources/site-lisp/site-start.d/builtin-aspell.el</code>. Good
Luck.</li>
<li>Install aspell via <a href="http://www.macports.org/">macports</a>. If you
already have macports, this is probably the way to go. To do it
this way:

<ul>
<li><code>% sudo port install aspell</code></li>
<li><code>% sudo port install apsell-dict-en</code> (or some other language
dictionaries)</li>
<li>In Emacs: <code>M-x customize-option</code>, <code>ispell-program-name</code>, and set
the value to <code>/opt/local/bin/aspell</code>.</li>
</ul>
</li>
<li>Get it by installing <a href="http://cocoaspell.leuski.net/">cocoaAspell</a>.
This is what I&#8217;ve done currently.</li>
</ol>


<p>CocoaAspell both delivers a version of aspell (to <code>/usr/local/bin</code>)
and also delivers a preference pane for getting it configured. Nifty,
but I had to manually fix the aspell configuration to point it to the
dictionaries, and you also need to modify the <code>ispell-program-name</code>
variable (which can be done via Configure, as well). To fix the aspell
configuration, I edited <code>/usr/local/etc/aspell.conf</code>, changing:
<code>dict-dir /usr/local/lib/aspell-0.60</code> to <code>dict-dir
/Library/Application\ Support/cocoAspell/aspell6-en-6.0-0</code> Or, I
suppose, you could copy the dictionaries back to
<code>/usr/local/lib/aspell-0.6.0</code>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Installing DBD::Oracle on Mac OS X, redux]]></title>
    <link href="http://blacka.com/david/2009/12/10/installing-dbdoracle-on-mac-os-x-redux/"/>
    <updated>2009-12-10T08:34:26-05:00</updated>
    <id>http://blacka.com/david/2009/12/10/installing-dbdoracle-on-mac-os-x-redux</id>
    <content type="html"><![CDATA[<p>After upgrading to Snow Leopard, I had to redo the installation of
<a href="http://search.cpan.org/dist/DBD-Oracle/">DBD::Oracle</a>. This time I
used DBD::Oracle 1.23. The good news is that the majority of my
<a href="http://blacka.com/david/2008/11/12/how-to-install-dbdoracle-on-mac-os-x/">previous instructions</a>
no longer appear to be necessary: a normal build of DBD::Oracle looks
ugly, but completes.</p>

<p><em>However</em>, I did discover that if you are running a 64-bit perl, which
you probably are, you need to get the 64-bit Oracle
<a href="http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/intel_macsoft.html">instantclient</a>
release. If you build DBD::Oracle and then cannot load the module
because of missing symbols (e.g., _OCIAttrGet), then what is happening
is that you linked against 32-bit libraries which cannot load from the
64-bit perl instance.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[wordpress upgrade (2.7)]]></title>
    <link href="http://blacka.com/david/2008/12/13/wordpress-upgrade-27/"/>
    <updated>2008-12-13T16:50:52-05:00</updated>
    <id>http://blacka.com/david/2008/12/13/wordpress-upgrade-27</id>
    <content type="html"><![CDATA[<p>Posting about upgrading your incredibly common blogging software isn&#8217;t
very interesting. But I&#8217;m going to take this opportunity to suggest
that this time, if you are able, switch to using subversion for
wordpress.  Installing wordpress is pretty easy. Upgrading it is also
easy, but you still have to move your plugins, themes, and
wp-config.php around, or delete stuff that gets in the way. Using
subversion makes all of that that go away. Yay!</p>

<p><strong>Update</strong>: Sadly, since I have been such a blog slacker, I was able
to upgrade to
<a href="http://wordpress.org/development/2009/02/wordpress-271/">wordpress 2.7.1</a>
while this post was still the top post. Using svn did, in fact, make
this the easiest wordpress upgrade I&#8217;ve done.</p>

<p><strong>Update 2</strong>: Even more sadly, I just upgraded to 2.8.1.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[How to install DBD::Oracle on Mac OS X]]></title>
    <link href="http://blacka.com/david/2008/11/12/how-to-install-dbdoracle-on-mac-os-x/"/>
    <updated>2008-11-12T22:03:20-05:00</updated>
    <id>http://blacka.com/david/2008/11/12/how-to-install-dbdoracle-on-mac-os-x</id>
    <content type="html"><![CDATA[<p>Today, I figured out how to get
<a href="http://search.cpan.org/dist/DBD-Oracle/">DBD::Oracle</a> to work on Mac
OS X Leopard (intel). Since it isn&#8217;t (yet) entirely straightforward, I
thought I&#8217;d describe the process here:</p>

<ol>
<li>Install
<a href="http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/intel_macsoft.html">instantclient</a>. You
will need the basic and sdk modules. I suggest also getting the
sqlplus module while you are at it. I put this in
<strong>/usr/local/instantclient_10_2</strong>.</li>
<li>Modify your .bashrc (or whatever) to set <strong>ORACLE_HOME</strong> and
<strong>DYLIB_LIBRARY_PATH</strong> to /usr/local/instanclient_10_2.</li>
<li><p>Get <a href="http://search.cpan.org/dist/DBD-Oracle/">DBD::Oracle</a> from
<a href="http://www.cpan.org">CPAN</a>. (I got 1.22). Here is where it gets
tricky: In Terminal:</p>

<p> <code>% perl Makefile.PL</code></p>

<p>This generates <em>Makefile</em>.</p></li>
<li>Edit <em>Makefile</em>,
<a href="http://osdir.com/ml/lang.perl.macosx/2005-04/msg00079.html">changing</a>:
<em>NMEDIT=nmedit</em> to <em>NMEDIT=echo</em></li>
<li>Edit <em>dbimp.c</em>, removing all code that references
<strong>dump_env_to_trace()</strong>. I found a patch at
<a href="http://www.macosxhints.com/article.php?story=20061021211559813">macosxhints.com</a>,
but this is tied to a particular release of DBD::Oracle. I decided
to use my mad programming skillz to logically do what was
needed. Hopefully this will be fixed in some future version of
DBD::Oracle.</li>
<li><p>Again, in Terminal:</p>

<p><code>% make &amp;&amp; sudo make install</code></p></li>
</ol>


<p>And that should do it.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[I has iPhone]]></title>
    <link href="http://blacka.com/david/2008/08/03/i-has-iphone/"/>
    <updated>2008-08-03T12:25:38-04:00</updated>
    <id>http://blacka.com/david/2008/08/03/i-has-iphone</id>
    <content type="html"><![CDATA[<p>After a mere 2.5 hour wait in line, assisted by jet-lag, I have acquired
the 3G iPhone. More later.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[python-rwhoisd]]></title>
    <link href="http://blacka.com/david/2008/06/21/python-rwhoisd/"/>
    <updated>2008-06-21T17:28:37-04:00</updated>
    <id>http://blacka.com/david/2008/06/21/python-rwhoisd</id>
    <content type="html"><![CDATA[<p>Back in 2003, as an exercise to help me learn
<a href="http://python.org">Python</a>, I wrote
<a href="http://blacka.com/software/python-rwhoisd">python-rwhoisd</a>. Why an
<a href="http://www.rwhois.net">RWhois</a> server? I had been the main developer
and sole maintainer of
the <a href="http://http://www.rwhois.net/#Downloads">C reference version</a>
since 1996, and I had been thinking about writing a replacement in a
nicer language ever since. So I pretty familiar with the protocol and
problem space, and it was complicated enough to be able to sink your
teeth into it, yet not so hard that you couldn&#8217;t do it fairly
quickly. Basically, a great learning project.</p>

<p>Back then, I wanted this project to be unquestionably <em>mine</em>. I was
paranoid enough to believe that if I used any of my employer&#8217;s
equipment, network access, or time that my employer might claim
ownership. Why they would want to is anyone&#8217;s guess.</p>

<p>So I was very careful to only work on python-rwhoisd at home, on my
own time, on my own equipment. The initial version took me two weeks
of nights and weekends. Hm. That makes it sound like I was furiously
coding into the wee hours. I was actually only spending a few hours
each day on it.</p>

<p>Python was a joy to use. My day job was in Java (and Perl) and it felt
extremely liberating to be able to write so much code with so little
typing. My favorite part was discovering that as I learned more about
Python, my code kept getting smaller without getting less readable.
Amazing!</p>

<p>Even though I had basically just written python-rwhoisd to learn a new
programming language, I was planning on releasing it. I didn&#8217;t think
that many folks would want it. RWhois wasn&#8217;t (and still isn&#8217;t) a
popular protocol. But some of my colleagues were evangelizing
<a href="http://http://www.ietf.org/rfc/rfc3981.txt">IRIS</a> at the time, and
urged me to not release. They thought that it would muddy the waters,
so to speak. So I didn&#8217;t release it, and then I basically forgot about
it.</p>

<p>Fast forward five years. Just two weeks ago I suddenly wanted to learn
how to use <a href="http://git.or.cz">Git</a>. I played around with tutorial-like
git repositories, but it wasn&#8217;t enough. I needed something real to
work on. I was casting about for a project that I could use, and I ran
across python-rwhoisd, mouldering in a local CVS repository.</p>

<p>I had things that I thought should be improved about python-rwhoisd
before attempting to release it again. The main thing was to add IPv6
indexing support, which I had done for the C version several years
before. While this wasn&#8217;t a perfect project for learning Git in all of
its glory (for that, I would need collaborators to merge with), it was
good enough. Several days later, I&#8217;d added the IPv6 indexing and
search support, and it was time to
<a href="http://lists.verisignlabs.com/pipermail/rwhois/2008-June/002232.html">release it</a>.</p>

<p>While I don&#8217;t expect there to be any major outpouring of interest over
python-rwhoisd, it still should be easier to run than the C version
(at least, for small datasets), and it should be possible to get it
working on Windows without too much effort.</p>

<p>Get it <a href="http://blacka.com/software/python-rwhoisd">here</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Running UNBOUND at home.]]></title>
    <link href="http://blacka.com/david/2008/05/30/running-unbound-at-home/"/>
    <updated>2008-05-30T06:59:38-04:00</updated>
    <id>http://blacka.com/david/2008/05/30/running-unbound-at-home</id>
    <content type="html"><![CDATA[<p>I finally got around the setting up <a href="http://unbound.net">unbound</a> as my
home resolver. I <em>should</em> have done this months ago, when it was in beta
or before, since I had access to it. I kick myself. I feel bad. Oh well,
let&#8217;s get on with it. My initial impressions:</p>

<ol>
<li>It will be nice once there are distribution packages for unbound. I
spent more time that I would like (which is zero) figuring out where
to put the log file, pid file, etc. Of course, I was installing it
on a machine running Fedora Core 5&#8230;</li>
<li>I was forwarding a zone to a nameserver running on localhost:20053.
There is a gotcha to doing this, as, by default unbound won&#8217;t send
<em>any</em> queries to localhost. You have to add a
&#8216;do-not-query-localhost: no&#8217; config line to fix it. Maybe this is
something unbound-checkconf could detect?</li>
<li>unbound&#8217;s configuration defaults leave it locked down fairly
tightly. I had it running, but on my other machines, it seemed so
slow &#8211; turns out, my queries were timing out and I was hitting my
ISP nameserver. Make sure you add your networks to the
&#8216;access-control:&#8217; config parameters.</li>
<li>I turned up the logging to debug some of my issues. Looking at the
log was <em>uncanny</em>.</li>
</ol>


<p>Anyway, it didn&#8217;t take all that long to set up. Hopefully relatively
soon I (or someone else) will write up how to configure unbound to run
in a few different scenarios.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[wordpress upgrade (2.5)]]></title>
    <link href="http://blacka.com/david/2008/04/09/wordpress-upgrade-25/"/>
    <updated>2008-04-09T07:07:29-04:00</updated>
    <id>http://blacka.com/david/2008/04/09/wordpress-upgrade-25</id>
    <content type="html"><![CDATA[<p>I realized that I was running a now-ancient version of wordpress, so I
upgraded. It was easy. Yay wordpress 2.5!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Duke 71, Belmont 70]]></title>
    <link href="http://blacka.com/david/2008/03/20/duke-71-belmont-70/"/>
    <updated>2008-03-20T20:22:28-04:00</updated>
    <id>http://blacka.com/david/2008/03/20/duke-71-belmont-70</id>
    <content type="html"><![CDATA[<p>I feel sick, but not as sick as I could feel. <strong>Update</strong>: Duke 67, WVU
73. Sigh.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[RFC 5155]]></title>
    <link href="http://blacka.com/david/2008/03/11/rfc-5155/"/>
    <updated>2008-03-11T08:23:12-04:00</updated>
    <id>http://blacka.com/david/2008/03/11/rfc-5155</id>
    <content type="html"><![CDATA[<p><a href="http://www.links.org">Ben Laurie</a> celebrates the publication of
<a href="http://feeds.feedburner.com/~r/links/ZvUZ/~3/249426532/">RFC 5155</a>. I
hadn&#8217;t gotten around to blogging about it, but I&#8217;m also pretty happy
that <a href="http://www.ietf.org/rfc/rfc5155.txt">this RFC</a> finally made it
out. Ben says:</p>

<blockquote><p>It turns out that in general, to prove the nonexistence of a name
using NSEC you have to show at most two records, one to prove the
name itself doesn&#8217;t exist, and the other to show that you didn&#8217;t
delegate some parent of it. Often the same record can do both. In
NSEC3, it turns out, you have to show at most three records. And if
you can understand why, then you understand DNS better than almost
anyone else on the planet.</p></blockquote>

<p>One of the fascinating things about working on NSEC3 was that it
forced us to <em>really understand</em> how existence in DNS
works. Basically, we had to develop the general form of the theory
when we already had a special case (in NSEC). So, after we figured out
how NSEC3 had to work, we actually knew more about how NSEC
worked. For me and our co-editor Roy, this RFC culminates the 2nd
round of working on the some of the problems that NSEC3 solves. The
first effort was &#8220;DNSSEC Opt-In&#8221;, now published as an experimental
RFC, <a href="http://www.ietf.org/rfc/rfc4956.txt">RFC 4956</a>.  (That effort
was also tied up in DNS minutiae and political wrangling and
ultimately failed to make the IETF standards track). For us, it feels
more like the culmination of 7 years of work.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Internet Draft Ideas (DNS related)]]></title>
    <link href="http://blacka.com/david/2008/03/09/internet-draft-ideas-dns-related/"/>
    <updated>2008-03-09T23:07:29-04:00</updated>
    <id>http://blacka.com/david/2008/03/09/internet-draft-ideas-dns-related</id>
    <content type="html"><![CDATA[<p>I&#8217;m at the IETF this week, and so I get to turn my brain to thinking
about IETF-y things, like Internet Drafts that I think should (and
could) be written.</p>

<p><strong>Idea #1: Cache Poisoning Resilience</strong></p>

<p>This would be a draft that describes steps beyond
<a href="http://www.ietf.org/rfc/rfc2181.txt">RFC 2181</a> that a resolver must
do to protect itself from cache poisoning. (RFC 2181 addresses this
problem by introducing credibility rules in section 5.4.1.) Modern
caching resolvers need to do more to protect themselves from name
poisoning attacks like malicious CNAME chains. I would expect this
draft to be able to lay out a few simple rules like:</p>

<ul>
<li>Discard any RRs in a response that are &#8220;irrelevant&#8221; (i.e., answer
RRs that do not match qname/sname, addtional RRs that don&#8217;t match
names in the RDATA of answer and authority RRs, etc.)</li>
<li>Discard any RRs in a response that are not at or below the queried
zone.</li>
</ul>


<p><em>Update</em>: A draft similar to this was written in 2009 by my friend
 Wouter:
 <a href="http://tools.ietf.org/id/draft-wijngaards-dnsext-resolver-side-mitigation-01.txt">draft-wijngaards-dnsext-resolver-side-mitigation-01</a>.
 However, it doesn&#8217;t appear to address my suggested rules.</p>

<p><strong>Idea #2: Authoritative Servers Should Not Chase CNAMEs</strong></p>

<p>This is a draft discouraging authoritative servers from chasing CNAMEs
out-of-zone (or, optionally, at all), based on conclusions presented
in draft idea #1. This draft could either side-step or confront other
possibly controversial things about CNAME processing, like whether or
not the authority section should apply the head or the tail of a CNAME
chain.</p>

<p><strong>Idea #3: DNS Name Compression Standards</strong></p>

<p>A draft mandating the DNS name compression only be done in one
direction. Virtually all (or perhaps even <em>actually</em> all)
implementations have DNS compression pointers only pointing to earlier
in the message. This draft would propose that forward-pointing
compression pointers should be treated as format errors. This would
accomplish two things:</p>

<ol>
<li>Simplify what implementers need to support when parsing messages,
and</li>
<li>Outlaw any possibility of having to deal with a compression
pointer loop.</li>
</ol>


<p>And, in the process, effectively codify standard practice.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Bachelor Chow]]></title>
    <link href="http://blacka.com/david/2007/12/19/bachelor-chow/"/>
    <updated>2007-12-19T22:45:17-05:00</updated>
    <id>http://blacka.com/david/2007/12/19/bachelor-chow</id>
    <content type="html"><![CDATA[<p>It has been ages since I&#8217;ve blogged, and at least one of my four
subscribers reminds me of this regularly. So, here goes. I&#8217;ve come
home pretty late from work, and I&#8217;m pretty uninspired when it comes to
assembling some sort of dinner. After staring at the fridge
fruitlessly for a while, I&#8217;m struck by an inspiration of sorts. I&#8217;ll
make
<a href="http://www.urbandictionary.com/define.php?term=bachelor+chow">bachelor chow</a>.</p>

<p>Now, I have no idea what is in the original bachelor chow (nor do I
want to know), but my bachelor chow is just the name I&#8217;ve given to the
worst thing that I cook for myself on purpose. So, here is the basic
recipe:</p>

<p>Makes one serving:</p>

<p>3-4 oz. pasta, preferably penne, but anything will suffice.<br/>
1/4 jar pasta sauce, any tomato-based variety.<br/>
Shredded cheese. I use Sargento&#8217;s 4-cheese mexican.<br/></p>

<ol>
<li>Cook the pasta. You can salt the water, but I&#8217;ve been running
periodic experiments with not salting the water, and so far, I
can&#8217;t really tell the difference. It is even less important with
this recipe, since taste is clearly not high on the agenda.</li>
<li>Prior to completely cooking the pasta through, drain the
pasta. Overcooking it is OK, undercooking it sucks, though, so err
to the side of too long. Deposit the pasta into a microwave-safe
plate or bowl. You know, the dish you are going to serve this on.</li>
<li>Optionally stir in a little bit of olive oil and salt (preferably
kosher or sea salt). You can stop right here and have a pretty good
dish, even if it is nutritionally unbalanced. It is only going to
get worse from here.</li>
<li>Pour the (cold) pasta sauce over the pasta. Do not stir it in,
just let it sit on top.</li>
<li>Sprinkle the shredded cheese on top. Again, no stirring.</li>
<li>Microwave on high for 2-3 minutes, until the cheese has melted.</li>
<li>Enjoy. Or, at least, Tolerate.</li>
</ol>


<p>This recipe violates almost every thing I&#8217;ve learned about cooking,
but it takes me back to my just-out-of-college days when I was equally
as lazy and less polluted by cookbooks,
<a href="http://www.cooksillustrated.com/">Cooks Illustrated</a>, and
<a href="http://www.foodnetwork.com/">Food Network</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Quest for Anti-Aliased Emacs]]></title>
    <link href="http://blacka.com/david/2007/08/31/quest-for-anti-aliased-emacs/"/>
    <updated>2007-08-31T13:55:50-04:00</updated>
    <id>http://blacka.com/david/2007/08/31/quest-for-anti-aliased-emacs</id>
    <content type="html"><![CDATA[<p>In contemplating a move back to Linux for my day job, or at least a
future where more of my work is done directly on my Linux box, I began
to pine for decent anti-aliased fonts for Emacs. Both the
<a href="http://ourcomments.org/Emacs/EmacsW32.html">windows</a> and
<a href="http://homepage.mac.com/zenitani/emacs-e.html">mac</a> builds of Emacs 22
have this support built-in. Although, good luck trying to figure out how
to change the font to what you want, at least in Carbon Emacs.
Fortunately the default font of Monaco is pretty good (albeit not
perfect). I don&#8217;t have a lot of experience with EmacsW32, even though I
do have it installed somewhere. At first, I was puzzled as to why Emacs
just didn&#8217;t come with anti-aliased fonts on Fedora 7 by default. Some
web searches led me to believe that support was to be merged in before
Emacs 22.1, and there I was, running 22.1. Alas, I had misread the
interweb. If support has been merged in, it has been merged in <em>after</em>
22.1. Since 22.1 is the latest stable version of Emacs (as of this
writing), it isn&#8217;t all that surprising that Fedora 7 doesn&#8217;t have this.
Ah, well, time to move to the bleeding edge. Concise instructions for
building a CVS version of Emacs with anti-aliased fonts can be found on
the <a href="http://www.emacswiki.org/cgi-bin/wiki/XftGnuEmacs">XftGnuEmacs</a>
page. I didn&#8217;t have a whole lot of trouble building and installing this
version, but what I really want is a Fedora 7 package to <em>replace</em> the
delivered packages. If I were running
<a href="http://peadrop.com/blog/2007/01/06/pretty-emacs/">Ubuntu</a>, this
wouldn&#8217;t be much of a problem. So far, my attempts to hack the existing
source RPM for Emacs haven&#8217;t met with much success. It doesn&#8217;t help that
emacs take a while to compile, and I keep having to completely start
over. <del>I&#8217;ll update this entry if I ever get an rpm built</del>.</p>

<p><strong>Update</strong>: I&#8217;ve managed to work through the major issues, so here is
the
<a href="http://blacka.com/david/files/emacs-23.0.0-u2.20070901cvs.fc7.src.rpmu2.20070901cvs.fc7.src.rpm">source RPM</a>
for Fedora 7. I&#8217;ve put some actual binaries
<a href="http://blacka.com/david/files/emacs-xft-rpms">here</a>. This version doesn&#8217;t replace the stock
Emacs-22.1. Instead it installs into <code>/usr/local</code>, but can easily be
made the default version via the <em>alternatives</em> command:</p>

<blockquote><p><code>alternatives --set emacs /usr/local/bin/emacs-23.0.0</code></p></blockquote>

<p>Now that I have a working version of Emacs with anti-aliased font
support, I&#8217;ve been <a href="http://www.lowing.org/fonts/">hunting down</a> what
font to actually use. <a href="http://www.gnome.org/fonts/">Bitstream Vera Sans
Mono</a> is a good default, but at the moment
I&#8217;m trying out
<a href="http://www.ms-studio.com/FontSales/anonymous.html">Anonymous</a>. For the
curious, the bit of elisp that I&#8217;m using to set the fonts is this:</p>

<blockquote><pre><code>(if (eq window-system 'x)
    ;; if we have the Xft-enabled version of emacs...
    (if (&gt;= emacs-major-version 23)
    (progn
      ;; note: Anonymous doesn't come with Fedora.  You can get it here:
      ;; http://www.ms-studio.com/FontSales/anonymous.html
      (set-default-font "Anonymous-10")
      (setq bvsm10 "Bitstream Vera Sans Mono-10")
      ;; unfortunately, anonymous doesn't have bold or italic
      ;; so, use bitstream vera sans mono for that
      (set-face-font 'bold (concat bvsm10 ":weight=bold"))
      (set-face-font 'italic (concat bvsm10 ":slant=oblique"))
      (set-face-font 'bold-italic
             (concat bvsm10 ":weight=bold:slant=oblique"))
      ;; ...and no proportional font, for that matter
      (set-face-font 'variable-pitch "Bitstream Vera Sans-10")
      (add-to-list 'default-frame-alist '(font . "Anonymous-10")))
      ;; otherwise...
      (progn
    (set-default-font
     "-*-lucidatypewriter-medium-r-*-*-14-140-*-*-*-*-*-*"))
      )
  )
</code></pre></blockquote>

<p>I&#8217;m doing it this way (instead of in X resources) so that launching
Emacs-22.1 will still work. If you stick with <em>Bitstream Vera Sans
Mono</em> (or <em>DejaVu LGC Sans Mono</em> which is very similar), then you
won&#8217;t have to bother with overriding the <strong>bold</strong>, <em>italic</em>, and
<strong><em>bold-italic</em></strong> font settings as those will basically just work once
you set the default font. You would still have to deal with overriding
the proportional font, however.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[twittering]]></title>
    <link href="http://blacka.com/david/2007/08/17/twittering/"/>
    <updated>2007-08-17T21:48:20-04:00</updated>
    <id>http://blacka.com/david/2007/08/17/twittering</id>
    <content type="html"><![CDATA[<p>Meaningless stream of comments <a href="http://twitter.com/dblacka">here</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Why the bluetooth headset hate?]]></title>
    <link href="http://blacka.com/david/2007/07/18/why-the-bluetooth-headset-hate/"/>
    <updated>2007-07-18T19:21:24-04:00</updated>
    <id>http://blacka.com/david/2007/07/18/why-the-bluetooth-headset-hate</id>
    <content type="html"><![CDATA[<p>Over the past few days I&#8217;ve read not
<a href="http://www.37signals.com/svn/posts/516-blinking-bluetooth-headsets">one</a>,
but
<a href="http://arstechnica.com/journals/apple.ars/2007/07/18/iphone-bluetooth-headset-shipping-soon-look-20-less-ridiculous-than-when-using-other-models">two</a>
articles expressing the hate toward bluetooth headsets. And for both
articles, I realized that it was misplaced hate. The authors (and
commenters) actually hate the way that some people use them. That is,
the whole standing around and talking to yourself thing. Fair enough,
but some of us just want bluetooth headsets so we don&#8217;t have to keep
buying special, vendor specific headsets, and yet also don&#8217;t want to
hold the phone up to our ear for the whole hour-long conference call.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The updated irony]]></title>
    <link href="http://blacka.com/david/2007/07/14/the-updated-irony/"/>
    <updated>2007-07-14T16:11:20-04:00</updated>
    <id>http://blacka.com/david/2007/07/14/the-updated-irony</id>
    <content type="html"><![CDATA[<p>Since I was
<a href="http://blacka.com/david/archives/2007/07/the-irony/">thwarted in my one lame attempt</a>
to get an <a href="http://www.apple.com/iphone/">iPhone</a>, I ended up getting a
standard-ish
<a href="http://reviews.cnet.com/cell-phones/nokia-6102-cingular-wireless/4505-6454_7-31517958.html">Nokia flip phone</a>.
This was supposed to be my &#8220;backup phone&#8221;. I&#8217;m not sure when I would
have used the backup phone (when I sent my iPhone in for service? When
I didn&#8217;t want to take the iPhone with me to a dangerous
neighborhood?), but it didn&#8217;t seem too wasteful to have a unit to use
when the primary phone wasn&#8217;t working. Of course, now that I&#8217;ve had
this Nokia for a few days, I keep liking it more. It fits in my
pocket. I can sync it with the Mac via bluetooth. It gets decent
reception. It sounds fine. I can use a custom ringtone. (I&#8217;m not at
the moment, however). It ain&#8217;t perfect, but it is working for me. I do
miss the calendaring, password safe, and games from the Treo. But, I
never did really use that thing to its full potential, so stepping
down from the smartphone is working out fine.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The irony]]></title>
    <link href="http://blacka.com/david/2007/07/05/the-irony/"/>
    <updated>2007-07-05T10:38:42-04:00</updated>
    <id>http://blacka.com/david/2007/07/05/the-irony</id>
    <content type="html"><![CDATA[<p>Yesterday, my trusty Treo 650 decided to go crazy. OK, I think, I had
it for two years, time for something new. Time for an iPhone! Alas,
today is a day when the iPhone appears to be
<a href="http://daringfireball.net/linked/2007/july#thu-05-sold_out">mostly out of stock</a>. So,
let me describe the particular form of crazy that my Treo has
become. I first noticed it last night. I was outside, and it was
raining (although not directly on me). I look at the Treo, and it is,
for some reason, trying to sync via cable. Cancel. It tries to sync
again. It is in an endless loop of syncing. It is acting like it has
the sync cable plugged in, and the sync button permanently
pressed. After several resets to no avail, I give up and remove the
battery for a few hours. Now it doesn&#8217;t try to sync all the time
(although, it still tries sometimes), but it also doesn&#8217;t turn on when
asked, either. I&#8217;ve tried everything up to and including the
data-erasing hard reset with no change. Hopefully, I&#8217;ll be able to get
an iPhone soonish. I don&#8217;t want one bad enough to get it from
ebay&#8230;</p>

<p><strong>Update</strong>: instead of getting an iPhone, I&#8217;ve gotten a
<a href="http://seap.forum.nokia.com/devices/6102i">Nokia 6102i</a> with no
contract. Nothing at all like an iPhone, but it <em>is</em> a credible
phone. I may change my mind if I&#8217;ve got to take it overseas,
though. By paying for the phone and not getting a new contract, I do
still reserve the right to get an iPhone in the not-too-distant
future.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[<strike>Red Sweater Software</strike> Spam Filtering Lets Me Down; Red Sweater Tries Real Hard]]></title>
    <link href="http://blacka.com/david/2007/05/01/red-sweater-software-lets-me-down/"/>
    <updated>2007-05-01T21:48:01-04:00</updated>
    <id>http://blacka.com/david/2007/05/01/red-sweater-software-lets-me-down</id>
    <content type="html"><![CDATA[<p>Step&#8230;</p>

<ol>
<li>Discover <a href="http://www.red-sweater.com/blackink/">Black Ink</a>. It has a
30-day trial period</li>
<li>Try for 30 days. Like in the beginning, like at the end.</li>
<li>Buy it. I go the the
<a href="http://www.red-sweater.com/store/">online store</a> and pay via
paypal.</li>
<li>Wait for 3 days. See credit card charge go through.</li>
<li><em>During this time, fail to check the spam traps</em>.</li>
<li>Wait for 4 more days. Nothing from Red Sweater Software.</li>
<li>Send email to support@red-sweater.com asking for actual registration
code.</li>
<li>Wait 3 more days. Silence.</li>
<li><em>Discover that somehow, searching for &#8220;red-sweater&#8221; in Mail.app
doesn&#8217;t find mail in the spam folders</em>.</li>
<li><em>Eventually find 3 emails from Daniel Jalkut with your registration
code</em>.</li>
</ol>


<p>Hmm.. The online store page says &#8220;&#8230;usually within a few minutes&#8221;. Is
two weeks to wait long enough? I guess after that I&#8217;ll be reversing the
charges. Or something.</p>

<p><strong>Update</strong>: All fixed now. I am somewhat amazed that posting to my
blog was an effective means of communication. I&#8217;m guessing this
reflects more on Red Sweater Software&#8217;s customer service diligence
than anything else.</p>

<p><strong>Update[2]</strong>: So my friend Sean summed this whole event up as: &#8220;You
posted to your blog, Daniel Jalkut read it, said &#8216;check your spam box,
dumbass&#8217;, and now you look like an idiot.&#8221;  Yep.</p>
]]></content>
  </entry>
  
</feed>

