<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atomfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="0.3">

<title type="text/plain">Just a Theory</title>
<tagline type="text/plain">Theory waxes practical. By David E. Wheeler.</tagline>
<link rel="alternate" type="text/html" href="http://justatheory.com" />
<id>tag:justatheory.com,2012:/</id>
<generator url="http://www.blosxom.com/" version="2.1">Blosxom</generator>

<link rel="start" type="application/atom+xml" href="http://feeds.feedburner.com/justatheory/atomsum" /><feedburner:info uri="justatheory/atomsum" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
<id>tag:justatheory.com,2012:/computers/databases/dbi-in-sqitch</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/L2fS5_mX_GU/dbi-in-sqitch.html" />
<title type="text/plain">Use of DBI in Sqitch</title>

<issued>2012-05-15T17:41:00Z</issued>
<modified>2012-05-15T17:41:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="text/html" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="escaped">
&lt;p&gt;&lt;a href="http://sqitch.org/"&gt;Sqitch&lt;/a&gt; uses the native database client applications (&lt;a href="http://www.postgresql.org/docs/current/static/app-psql.html"&gt;&lt;code&gt;psql&lt;/code&gt;&lt;/a&gt;, &lt;a href="http://man.he.net/man1/sqlite3"&gt;&lt;code&gt;sqlite3&lt;/code&gt;&lt;/a&gt;, &lt;a href="http://dev.mysql.com/doc/refman/5.5/en/mysql.html"&gt;&lt;code&gt;mysql&lt;/code&gt;&lt;/a&gt;, etc.). So for tracking metadata about the state of deployments, I have been trying to stick to using them. I&amp;rsquo;m first targeting PostgreSQL, and as a result need to open a connection to &lt;code&gt;psql&lt;/code&gt;, start a transaction, and be able to read and write stuff to it as migrations go along. &lt;a href="http://stackoverflow.com/questions/10569805/what-is-the-preferred-cross-platform-ipc-perl-module"&gt;The IPC&lt;/a&gt; is a &lt;a href="http://www.perlmonks.org/?node_id=970244"&gt;huge PITA&lt;/a&gt;. Furthermore, getting things properly quoted is also pretty annoying &amp;mdash; and it will be worse for SQLite and MySQL, I expect (&lt;code&gt;psql&lt;/code&gt;&amp;rsquo;s &lt;code&gt;--set&lt;/code&gt; support is pretty slick).&lt;/p&gt;&lt;p&gt;&lt;a href="http://justatheory.com/computers/databases/dbi-in-sqitch.html"&gt;Read More »&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/L2fS5_mX_GU" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://justatheory.com/computers/databases/dbi-in-sqitch.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/computers/databases/sqitch-steps</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/DeC0DdLk4ZM/sqitch-steps.html" />
<title type="text/plain">Sqitch Status: A Step at a Time</title>

<issued>2012-05-01T04:09:00Z</issued>
<modified>2012-05-01T04:09:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I've just released <a href="http://search.cpan.org/dist/App-Sqitch-0.20-TRIAL/">Sqitch v0.20-TRIAL</a>, the third testing release of Sqitch. Since last week, I've implemented <a href="http://search.cpan.org/dist/App-Sqitch-0.20-TRIAL/lib/sqitch-add-step.pod"><code>add-step</code></a>. So let's have a look-see at what all it can do. First, let's initialize a Sqitch project.</p><p><a href="http://justatheory.com/computers/databases/sqitch-steps.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/DeC0DdLk4ZM" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/databases/sqitch-steps.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/computers/databases/sqitch-update</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/xqgtGLczivA/sqitch-update.html" />
<title type="text/plain">Sqitch Update</title>

<issued>2012-04-28T04:32:00Z</issued>
<modified>2012-04-28T04:32:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>A quick update on <a href="https://github.com/theory/sqitch/">Sqitch</a>. I started implementation about a couple of weeks ago. It’s coming a long a bit more slowly than I'd like, given that I need to give <a href="http://www.pgcon.org/2012/schedule/events/479.en.html">a presentation</a> on it soon. But I did things a little differently than I usually do with project like this: I wrote documentation first. In addition to the basic docs I <a href="http://justatheory.com/computers/databases/sqitch-draft.html">posted</a> a couple weeks back, I’ve written <a href="https://github.com/theory/sqitch/blob/master/lib/sqitchtutorial.pod">a tutorial</a>. I put quite a lot of time into it, studying the <a href="http://git-scm.com/">Git</a> interface as I did so, to try to develop useful workflows. The nice thing about this it that it will not only serve as the foundation for my presentation (<em>PHEW!</em> Half the work done already!), but it also serves as a design specification.</p><p><a href="http://justatheory.com/computers/databases/sqitch-update.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/xqgtGLczivA" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/databases/sqitch-update.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/travel/france/2012/rouen-again</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/15-kDjKsskk/rouen-again.html" />
<title type="text/plain">Rouen Again</title>

<issued>2012-04-27T04:07:00Z</issued>
<modified>2012-04-27T04:07:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.flickr.com/photos/theory/3330418728/"><img src="http://farm4.staticflickr.com/3359/3330418728_7a8a5024bb_z.jpg?zz=1" alt="Rouen Skyline" title="" /></a></p><p><a href="http://justatheory.com/travel/france/2012/rouen-again.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/15-kDjKsskk" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/travel/france/2012/rouen-again.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/culture/journalism/open-letter-printed-press</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/cPi_SLviRYk/open-letter-printed-press.html" />
<title type="text/plain">An open letter to the printed press</title>

<issued>2012-04-23T04:26:00Z</issued>
<modified>2012-04-23T04:26:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Last weekend, I was talking to a friend who works for a moderately-sized regional newspaper. We were talking about distribution. The guys upstairs, he told me, feel very comfortable, complacent even, with their position. They’re not worried about their future because, as they say, “Hey, we’re not the <em>New York Times,</em> we’re not going to have those kind of distribution problems, because we cover regional news, and there’s still a need for good regional coverage.” I guess they think that people in their region don’t read local news on the internet or their mobile devices?</p><p><a href="http://justatheory.com/culture/journalism/open-letter-printed-press.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/cPi_SLviRYk" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/culture/journalism/open-letter-printed-press.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/computers/databases/postgresql/use-timestamptz</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/yPH6nuTQ2mw/use-timestamptz.html" />
<title type="text/plain">Always Use TIMESTAMP WITH TIME ZONE</title>

<issued>2012-04-16T22:08:00Z</issued>
<modified>2012-04-16T22:08:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>My recommendations for sane time zone management in PostgreSQL:</p><p><a href="http://justatheory.com/computers/databases/postgresql/use-timestamptz.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/yPH6nuTQ2mw" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/databases/postgresql/use-timestamptz.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/computers/blog/new-home</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/E_DZnRKs6IM/new-home.html" />
<title type="text/plain">New Home</title>

<issued>2012-04-10T05:52:00Z</issued>
<modified>2012-04-10T05:52:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>After
<a href="/computers/blog/how-not-to-withstand-a-fireballing.html">the Fireballing</a>
week before last, I put aside a bit of time to rejigger things. This blog
now has a new home.</p><p><a href="http://justatheory.com/computers/blog/new-home.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/E_DZnRKs6IM" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/blog/new-home.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/computers/databases/sqitch-draft</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/bgqPM3XvOpA/sqitch-draft.html" />
<title type="text/plain">Sqitch - VCS-powered SQL Change Management</title>

<issued>2012-04-06T02:08:00Z</issued>
<modified>2012-04-06T02:08:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Back in January, I <a href="/computers/databases/simple-sql-change-management.html">wrote</a> <a href="/computers/databases/vcs-sql-change-management.html">three</a> <a href="/computers/databases/sql-change-management-sans-redundancy.html">posts</a> outlinining some ideas I had about a straight-forward, sane way of managing SQL change managment. The idea revolved around specifying scripts to deploy and revert in a plan file, and generating that plan file from VCS history. I still feel pretty good about the ideas there, and <a href="http://iovation.com/">work</a> has agreed to let me write it and open-source it. Here is the first step making it happen. I call it “Sqitch.”</p><p><a href="http://justatheory.com/computers/databases/sqitch-draft.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/bgqPM3XvOpA" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/databases/sqitch-draft.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/computers/blog/how-not-to-withstand-a-fireballing</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/EHVoTNDxfxA/how-not-to-withstand-a-fireballing.html" />
<title type="text/plain">How Not to Withstand a Fireballing</title>

<issued>2012-04-04T03:34:00Z</issued>
<modified>2012-04-04T03:34:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I have more to say on the topic of iPad magazines, but I'm using the meager tuits I have to first make some infrastructural changes.</p><p><a href="http://justatheory.com/computers/blog/how-not-to-withstand-a-fireballing.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/EHVoTNDxfxA" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/blog/how-not-to-withstand-a-fireballing.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/computers/apps/conde-nast-ipad</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/XkBOHIOwImA/conde-nast-ipad.html" />
<title type="text/plain">Condé Nast on the iPad</title>

<issued>2012-03-28T04:46:00Z</issued>
<modified>2012-03-28T04:46:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I <em>really</em> want to enjoy reading <em>The New Yorker</em> on my iPad. But for a rather large number of reasons, it's just unpleasant. Here's why.</p><p><a href="http://justatheory.com/computers/apps/conde-nast-ipad.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/XkBOHIOwImA" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/apps/conde-nast-ipad.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/computers/databases/sql-change-management-sans-redundancy</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/TloDXCSP52M/sql-change-management-sans-redundancy.html" />
<title type="text/plain">SQL Change Management Sans Duplication</title>

<issued>2012-01-30T16:00:00Z</issued>
<modified>2012-01-30T16:00:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="text/html" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="escaped">
&lt;p&gt;In the &lt;a href="/computers/databases/vcs-sql-change-management.html"&gt;previous episode&lt;/a&gt; in this series, I had one issue with regard to SQL change management that I wanted to resolve: duplication of code between deploy and revert scripts sucks. Worse still is the duplication of code to change just one line of a procedure. Here&amp;rsquo;s how I propose to eliminate the dupes.&lt;/p&gt;&lt;p&gt;&lt;a href="http://justatheory.com/computers/databases/sql-change-management-sans-redundancy.html"&gt;Read More »&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/TloDXCSP52M" height="1" width="1"/&gt;</content>
<feedburner:origLink>http://justatheory.com/computers/databases/sql-change-management-sans-redundancy.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/computers/databases/vcs-sql-change-management</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/QTYAuGwQ6yE/vcs-sql-change-management.html" />
<title type="text/plain">VCS-Enabled SQL Change Management</title>

<issued>2012-01-27T07:32:00Z</issued>
<modified>2012-01-27T07:32:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>In my <a href="/computers/databases/simple-sql-change-management.html">previous post</a>, I outlined the basics of a configuration-file and dependency-tracking SQL deployment architecture. But I left it off wanting to eliminate the need for such a file and still have it all work. This post outlines just how to do that by relying on VCS history to determine what changes need to be deployed or reverted.</p><p><a href="http://justatheory.com/computers/databases/vcs-sql-change-management.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/QTYAuGwQ6yE" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/databases/vcs-sql-change-management.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2012:/computers/databases/simple-sql-change-management</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/LytHP6uuIHk/simple-sql-change-management.html" />
<title type="text/plain">Simple SQL Change Management</title>

<issued>2012-01-26T05:00:00Z</issued>
<modified>2012-01-26T05:00:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I've been thinking a lot about SQL change management. I've <a href="/computers/databases/change-management.html">written about this before</a>, implemented a <a href="https://metacpan.org/module/Module::Build::DB">dubious implementation of SQL migrations</a>, and used a <a href="http://www.depesz.com/index.php/2010/08/22/versioning/">dependency-tracking solution</a> with its own set of challenges. Nothing has satisfied me. But I think I may finally have cracked this thing wide open.</p><p><a href="http://justatheory.com/computers/databases/simple-sql-change-management.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/LytHP6uuIHk" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/databases/simple-sql-change-management.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2011:/computers/programming/perl/perl-advent</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/_EnUR3msWfs/perl-advent.html" />
<title type="text/plain">Today on the Perl Advent Calendar</title>

<issued>2011-12-22T18:10:00Z</issued>
<modified>2011-12-22T18:10:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Hey look everybody, I wrote today's Perl Advent Calendar post, <a href="http://perladvent.org/2011/2011-12-22.html">Less Tedium, More Transactions</a>. Go read it!</p><p><a href="http://justatheory.com/computers/programming/perl/perl-advent.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/_EnUR3msWfs" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/programming/perl/perl-advent.html</feedburner:origLink></entry>

<entry>
<id>tag:justatheory.com,2011:/computers/os/ios/integrate-testflight-sdk</id>
<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/justatheory/atomsum/~3/xM-DskpE8rQ/integrate-testflight-sdk.html" />
<title type="text/plain">How to Integrate the TestFlight SDK into an iOS Project</title>

<issued>2011-12-18T07:11:00Z</issued>
<modified>2011-12-18T07:11:00Z</modified>
<author>
  <name>David E. Wheeler</name>
</author>
<content type="application/xhtml+xml" xml:base="http://justatheory.com" xml:lang="en-us" xml:space="preserve" mode="xml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I've started using <a href="http://testflightapp.com/">TestFlight</a> to release <a href="http://www.designsceneapp.com/">DesignScene</a> betas to testers. The documentation is thin, so I had to futz a bit, but fortunately it's a pretty simple app, so once I figured out that I just needed to stick to one "Team", I was off and running. And let me tell you, TestFlight is a <em>far</em> easier way to distribute betas than the convoluted methods suggested by Apple. Much more beta user-friendly.</p><p><a href="http://justatheory.com/computers/os/ios/integrate-testflight-sdk.html">Read More »</a></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/justatheory/atomsum/~4/xM-DskpE8rQ" height="1" width="1" /></div></content>
<feedburner:origLink>http://justatheory.com/computers/os/ios/integrate-testflight-sdk.html</feedburner:origLink></entry>


</feed>

