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

<channel>
	<title>Musings of an Anonymous Geek &#187; Django</title>
	<atom:link href="http://www.protocolostomy.com/category/python/django/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.protocolostomy.com</link>
	<description>Made with only the finest 1's and 0's</description>
	<lastBuildDate>Thu, 03 Nov 2011 04:08:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Tornado&#8217;s Big Feature is Not &#8216;Async&#8217;</title>
		<link>http://www.protocolostomy.com/2010/04/04/tornados-big-feature-is-not-async/</link>
		<comments>http://www.protocolostomy.com/2010/04/04/tornados-big-feature-is-not-async/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 02:43:47 +0000</pubDate>
		<dc:creator>bkjones</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.protocolostomy.com/?p=748</guid>
		<description><![CDATA[I&#8217;ve been working with the Tornado web server pretty much since its release by the Facebook people several months ago. If you&#8217;ve never heard of it, it&#8217;s a sort of hybrid Python web framework and web server. On the framework side of the equation, Tornado has almost nothing. It&#8217;s completely bare bones when compared to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working with the <a href="http://tornadoweb.org">Tornado</a> web server pretty much since its release by the Facebook people several months ago. If you&#8217;ve never heard of it, it&#8217;s a sort of hybrid Python web framework and web server. On the framework side of the equation, Tornado has almost nothing. It&#8217;s completely bare bones when compared to something like Django. On the web server side, it is also pretty bare bones in terms of hardcore features like Apache&#8217;s ability to be a proxy and set up virtual hosts and all of that stuff. It does have some good performance numbers though, and the feature that seems to drive people to Tornado seems to be that it&#8217;s asynchronous, and pretty fast.</p>
<p>I think some people come away from their initial experiences with Tornado a little disheartened because only upon trying to benchmark their first real app do they come face to face with the reality of &#8220;asynchronous&#8221;: Tornado can be the best async framework out there, but the minute you need to talk to a resource for which there is no async driver, guess what? No async.</p>
<p>Some people might even leave the ring at this point, and that&#8217;s a shame, because to me the async features in Tornado aren&#8217;t what attract me to it at all.</p>
<h3>Why Tornado, if Not For Async?</h3>
<p>For me, there&#8217;s an enormous win in going with Tornado (or other things like it), and to get this benefit I&#8217;m willing to deal with some of Tornado&#8217;s warts and quirks. I&#8217;m willing to deal with the fact that the framework provides almost nothing I&#8217;m used to having after being completely spoiled by Django. What&#8217;s this magical feature you ask? It&#8217;s simply the knowledge that, in Tornado-land, there&#8217;s no such thing as mod_wsgi. And no mod_python either. There&#8217;s no mod_anything.</p>
<p>This means I don&#8217;t have to think about sys.path, relative vs. absolute paths, whether to use daemon or embedded mode, &#8220;Cannot be loaded as Python module&#8221; errors, &#8220;No such module&#8221; errors, permissions issues, subtle differences between Django&#8217;s dev server and Apache/mod_wsgi, reconciling all of these things when using/not using virtualenv, etc. It means I don&#8217;t have to metascript my way into a working application. I write the app. I run the app.</p>
<p>Wanna see how to create a Tornado app? Here&#8217;s one right here:</p>
<pre class="brush: python; title: ; notranslate">
import tornado.httpserver
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write(&quot;This is a Tornado app&quot;)

application = tornado.web.Application([
    (r&quot;/&quot;, MainHandler),
])

if __name__ == &quot;__main__&quot;:
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
</pre>
<p>Save this to whatever file you want, run it, and do &#8216;curl http://localhost:8888&#8242; and you&#8217;ll see &#8216;This is a Tornado app&#8217; on your console.</p>
<p>Simplistic? Yes, absolutely. But when you can just run this script, put it behind nginx, and have it working in under five minutes, you dig a little deeper and see what else you can do with this thing. Turns out, you can do quite a bit.</p>
<h3>Can I Do Real Work With This?</h3>
<p>I&#8217;ve actually been involved in a production launch of a non-trivial service running on Tornado, and it was mind-numbingly easy. It was several thousand lines of Python, all of which was written by two people, and the prototype was up and running inside of a month. Moving from prototype to production was a breeze, and the site has been solid since its launch a few months ago.</p>
<h3>Do You Miss Django?</h3>
<p>I miss *lots* of things about Django, sure. Most of all I miss Django&#8217;s documentation, but Tornado is *so* small that you actually can find what you need in the source code in 2 minutes or less, and since there aren&#8217;t a ton of moving parts, when you find what you&#8217;re looking for, you just read a few lines and you&#8217;re done: you&#8217;re not going to be backtracking across a bunch of files to figure out the process flow.</p>
<p>I also miss a lot of what I call Django&#8217;s &#8216;magic&#8217;. It sure does a lot to abstract away a lot of work. In place of that work, though, you&#8217;re forced to take on a learning curve that is steeper than most. I think it&#8217;s worth getting to know Django if you&#8217;re a web developer who hasn&#8217;t seen it before, because you&#8217;ll learn a lot about Python and how to architect a framework by digging in and getting your hands dirty. I&#8217;ve read seemingly most books about Django, and have done some development work in Django as well. I love it, but not for the ease of deployment.</p>
<p>I spent more time learning how to do really simple things with Django than it took to:</p>
<ol>
<li>Discover Tornado</li>
<li>Download/install and run &#8216;hello world&#8217;</li>
<li>Get a non-trivial, commercial application production-ready and launch it.</li>
</ol>
<p>Deadlines, indeed!</p>
<h3>Will You Still Work With (Django/Mingus/Pinax/Coltrane/Satchmo/etc)?</h3>
<p>Sure. I&#8217;d rather not host it, but if I have to I&#8217;ll get by. These applications are all important, and I do like <em>developing</em> with them. It&#8217;s mainly <em>deployment</em> that I have issues with.</p>
<p>That&#8217;s not to say I wouldn&#8217;t like to see a more mature framework made available for Tornado either. I&#8217;ve worked on <a href="http://github.com/gmr/Tinman">one</a>, though it&#8217;s not really beyond the &#8220;app template&#8221; phase at this point. Once the app template is able to get out of its own way, I think more features will start to be added more quickly&#8230; but I digress.</p>
<p>In the end, the astute reader will note that my issue isn&#8217;t so much with Django-like frameworks (though I&#8217;ll note that they don&#8217;t suit every purpose), but rather with the current trend of using mod_wsgi for deployment. I&#8217;ll stop short of bashing mod_wsgi, because it too is an important project that has done wonders for the state of Python in web development. It really does *not* fit my brain at all, though, and I find when I step into a project that&#8217;s using it and it has mod_wsgi-related problems, identifying and fixing those problems is typically not a simple and straightforward affair.</p>
<p>So, if you&#8217;re like me and really want to develop on the web with Python, but mod_wsgi eludes you or just doesn&#8217;t fit your brain, I can recommend Tornado. It&#8217;s not perfect, and it doesn&#8217;t provide the breadth of features that Django does, but you can probably get most of your work done with it in the time it took you to get a mod_wsgi &#8220;Hello World!&#8221; app to <em>not</em> return a 500 error.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.protocolostomy.com/2010/04/04/tornados-big-feature-is-not-async/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Released django-taxonomy on github</title>
		<link>http://www.protocolostomy.com/2010/02/14/released-django-taxonomy-on-github/</link>
		<comments>http://www.protocolostomy.com/2010/02/14/released-django-taxonomy-on-github/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 01:43:50 +0000</pubDate>
		<dc:creator>bkjones</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.protocolostomy.com/?p=718</guid>
		<description><![CDATA[Hi all, I did a post several months ago about creating a generic taxonomy app for Django that was loosely coupled, unintrusive, and could evolve with an app that needed categories today, but then tags later, or labels later, or some other classification mechanism later. I wanted one app to just be generic enough to [...]]]></description>
			<content:encoded><![CDATA[<p>Hi all,</p>
<p>I did a <a href="http://www.protocolostomy.com/2009/08/21/lessons-learned-while-creating-a-generic-taxonomy-app-for-django/">post several months ago</a> about creating a generic taxonomy app for Django that was loosely coupled, unintrusive, and could evolve with an app that needed categories today, but then tags later, or labels later, or some other classification mechanism later. I wanted one app to just be generic enough to deal with it, so I created django-taxonomy&#8230;. and then did nothing with it.</p>
<p>Well, *I* did stuff with it, but I never put it anywhere where anyone else could do anything with it. So now I have: <a href="http://github.com/bkjones/django-taxonomy">django-taxonomy is up on github</a>. Please fork it and send me merge requests, because this app is not super high on my priority list, which is why I&#8217;m releasing it: it&#8217;ll get further and be more useful to you with the help of the community <img src='http://www.protocolostomy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.protocolostomy.com/2010/02/14/released-django-taxonomy-on-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Job, Car, Baby, and Other News</title>
		<link>http://www.protocolostomy.com/2009/10/22/new-job-car-baby-and-other-news/</link>
		<comments>http://www.protocolostomy.com/2009/10/22/new-job-car-baby-and-other-news/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 02:02:48 +0000</pubDate>
		<dc:creator>bkjones</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[LinuxLaboratory]]></category>
		<category><![CDATA[Other Cool Blogs]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.protocolostomy.com/?p=631</guid>
		<description><![CDATA[New Baby! I know this is my geek blog, but geeks have kids too, so first I want to announce the birth of our second daughter, Sadie, who was born on September 15th. She&#8217;s now over a month old. This is the first time I&#8217;ve stayed up late enough to blog about her. Everyone is [...]]]></description>
			<content:encoded><![CDATA[<h3>New Baby!</h3>
<p>I know this is my geek blog, but geeks have kids too, so first I want to announce the birth of our second daughter, Sadie, who was born on September 15th. She&#8217;s now over a month old. This is the first time I&#8217;ve stayed up late enough to blog about her. Everyone is healthy, if slightly sleep-deprived <img src='http://www.protocolostomy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>New Job!</h3>
<p>The day before Sadie&#8217;s birth, I got a call with an offer for a job. A *full-time* job, as a Senior Operations Developer for <a href="http://myyearbook.com">MyYearbook.com</a>. After learning about the cool and very geeky things going on at MyYearbook during the interview process, I couldn&#8217;t turn it down. I started on October 5, and it&#8217;s been a blast digging into all of the cool stuff going on there. While I&#8217;m certainly doing my fair share of PHP code review, maintenance, and general coding, I&#8217;m also getting plenty of hours in working out the Python side of my brain. I&#8217;m finding that while it&#8217;s easier switching gears than I had anticipated, I do make some really funny minor syntax errors, like using dot notation to access object attributes in PHP ;-P</p>
<p>What I find super exciting is something that might turn some peoples&#8217; stomachs: at the end of my first week, I sat back and looked at my monitors to find roughly 15 tabs in Firefox open to pages explaining various tools I&#8217;d never gotten to use, protocols I&#8217;ve never heard of, etc. I had my laptop and desktop both configured with 2 virtual machines for testing and playing with new stuff. I had something north of 25 terminal windows open, and 8 files open in Komodo Edit.</p>
<p>Now THAT, THAT is FUN!</p>
<p>The projects I&#8217;m working on run the gamut from code cleanups that nobody else has had time to do (a good tool for getting my brain wrapped around various parts of the code base), to working on scalability solutions and new offerings involving my background in coding *and* system administration. It&#8217;s like someone cherry-picked a Bay Area startup and dropped it randomly 30 minutes from my house.</p>
<p>My own business is officially &#8220;not taking new clients&#8221;. I have some regular clients that I still do work for, so my &#8220;regulars&#8221; are still being served, but they&#8217;ve all been put on notice that I&#8217;m unavailable until the new year.</p>
<h3>New Car!</h3>
<p>I&#8217;m less excited about the new car, really. I used to drive a Jeep Liberty, and I loved it. However, in early September, before Sadie&#8217;s arrival, it became clear to me that putting two car seats in that beast wasn&#8217;t going to happen. The Jeep is great for drivers, and it has some cargo space. It&#8217;s not a great vehicle for passengers, though.</p>
<p>At the same time, I was running a business (this was before the job offer came along), and I was finding myself slightly uncomfortable delivering rather serious business proposals in a well-used 2003 Jeep. So, I needed something that could fit my young family (my oldest is 2 yrs), and that was presentable to clients. So, I got a Lexus ES350.</p>
<p>I like most things about the car, except for the audio system. It seems schizophrenic to me to have like 6 sound &#8216;zones&#8217; to isolate the audio to certain sets of speakers, but then controls like bass and treble only go from 0 to 5. Huh? And the sound always sounds like it&#8217;s lying on the floor for some reason. It&#8217;s not at all immersive. The sound system on my Jeep completely kicked ass. I miss it. A lot.</p>
<h3>Other News</h3>
<p>I&#8217;ve submitted an article to <a href="http://pythonmagazine.com">Python Magazine</a> about my (relatively) recent work with Django and my (temporarily stalled) overhaul of <a href="http://linuxlaboratory.org">LinuxLaboratory.org</a>, and my experiences with various learning resources related to Django. If you&#8217;re looking to get into Django, it&#8217;s probably a good read.</p>
<p>I&#8217;ve been getting into some areas of Python that were previously dark, dusty corners, so hopefully I&#8217;ll be writing more about Python here, because writing about something helps me to solidify things in my own brain. Short of that, it serves as a future reference point in case it didn&#8217;t get solidified enough <img src='http://www.protocolostomy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>My sister launched<a href="http://thedancejones.com/blog"> The Dance Jones</a>, a blog where she talks about fitness, balance, dance, and stuff I should probably pay much more attention to (I&#8217;m close to declaring war on my gut). Also, if you ever wanted to know how to <a href="http://thedancejones.com/blog/2009/10/19/how-to-shoulder-shimmy/">shoulder shimmy</a> (and who hasn&#8217;t wanted to do that?), you should check it out <img src='http://www.protocolostomy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.protocolostomy.com/2009/10/22/new-job-car-baby-and-other-news/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Sys/DB Admin and Coder Seeks Others To Build Web &#8220;A-Team&#8221;</title>
		<link>http://www.protocolostomy.com/2009/09/09/sysdb-admin-and-coder-seeks-others-to-build-web-a-team/</link>
		<comments>http://www.protocolostomy.com/2009/09/09/sysdb-admin-and-coder-seeks-others-to-build-web-a-team/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 15:20:22 +0000</pubDate>
		<dc:creator>bkjones</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Freelancing]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.protocolostomy.com/?p=627</guid>
		<description><![CDATA[UPDATE: There&#8217;s no location requirement. I kind of assume that I&#8217;m not going to find the best people by geographically limiting my search for potential partners. Me: Live in Princeton, NJ area. Over 10 years experience with UNIX/Linux administration, databases and data modeling, and PHP/Perl. About 3 years experience using Python for back-end scripting and [...]]]></description>
			<content:encoded><![CDATA[<p>UPDATE: There&#8217;s no location requirement. I kind of assume that I&#8217;m not going to find the best people by geographically limiting my search for potential partners. <img src='http://www.protocolostomy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Me: Live in Princeton, NJ area. Over 10 years experience with UNIX/Linux administration, databases and data modeling, and PHP/Perl. About 3 years experience using Python for back-end scripting and system automation, and less than a year of Django experience. Former Director of Technology for AddThis.com (it was bought out), Infrastructure Architect at cs.princeton.edu, and systems consultant/trainer. Creator of Python Magazine, former Editor in Chief of both php|architect *and* Python Magazine, and co-author of &#8220;Linux Server Hacks, volume 2&#8243; (O&#8217;Reilly).</p>
<p>You are one of these:</p>
<ul>
<li>Web graphic designer who has worked on several web-based projects for clients in various industries, understands current best practices and standards, has the tools and experience necessary to create custom graphics, and has some familiarity (secondarily) with PHP and/or Python, Javascript and Ajax. If you regularly make use of table-based web designs or ActiveX controls, this isn&#8217;t you.</li>
<li>Hardcore web developer with at least 6 years experience doing nothing but web-based projects using Javascript and (at some point) *both* PHP and Python, and has worked with or has an interest in Django, Cake, and other frameworks, and understands that client needs often don&#8217;t coincide with the religion of fanboyism. Knowledge of Javascript, Ajax, web standards and security is essential here. If your last &#8220;big project&#8221; was volunteer work to build a website for your kid&#8217;s soccer team, this isn&#8217;t you.</li>
<li>A generalist webmaster (sysadmin/db admin/scripter) with at least 6 years experience working in production *nix environments with good familiarity in the areas of high availability, web servers (specifically Apache), proxy servers and monitoring, and has worked with/supported users like the ones mentioned above on web-based projects. If you have to look at the documentation to figure out how to implement a 301 redirect, this probably isn&#8217;t you.</li>
</ul>
<p>Experience working on a team in larger projects with multiple people would be good. Note that I&#8217;m looking for people to partner with on projects, I&#8217;m not hiring full time employees. Future partnership in a proper business is certainly a possibility, but&#8230; baby steps! I do have a couple of domains that would be great for use with this kind of project if it ever progresses that far <img src='http://www.protocolostomy.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I know that other people are out there looking for people to partner with on projects, but there doesn&#8217;t appear to be a common place for them to interact. Maybe that can be a project we undertake together <img src='http://www.protocolostomy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   &#8212; if there *is* a place where people meet up for this kind of thing, let me know!</p>
<p>Let&#8217;s have fun, and take over the world! Shoot me an email at &#8220;bkjones&#8221; @ Google&#8217;s mail domain.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.protocolostomy.com/2009/09/09/sysdb-admin-and-coder-seeks-others-to-build-web-a-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>If You Code, You Should Write</title>
		<link>http://www.protocolostomy.com/2009/09/09/if-you-code-you-should-write/</link>
		<comments>http://www.protocolostomy.com/2009/09/09/if-you-code-you-should-write/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 14:14:54 +0000</pubDate>
		<dc:creator>bkjones</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.protocolostomy.com/?p=624</guid>
		<description><![CDATA[The Practice of Programming Programmers are, in essence, problem solvers. They live to solve problems. When they identify a problem that needs solving, they cannot resist the temptation to study it, poke and prod it, and get to know it intimately. They then start considering solutions. At this point, the programmer is not often thinking [...]]]></description>
			<content:encoded><![CDATA[<h3>The Practice of Programming</h3>
<p>Programmers are, in essence, problem solvers. They live to solve problems. When<br />
they identify a problem that needs solving, they cannot resist the temptation<br />
to study it, poke and prod it, and get to know it intimately. They then start<br />
considering solutions. At this point, the programmer is not often thinking in<br />
code &#8212; they&#8217;re thinking about the problem using high-level concepts and terms<br />
that most non-programmers would understand.</p>
<p>Consider the problem of how to post a news story to a website. The programmer<br />
might think about the solution this way:</p>
<ul>
<li>Log in</li>
<li>Go to &#8216;new story&#8217; page</li>
<li>Enter title and text</li>
<li>Press &#8216;submit&#8217;</li>
</ul>
<p>Of course, there are a million details in between those points, and after them<br />
as well. The programmer knows this, but defers thinking about details until the<br />
higher-level solution makes sense and seems reasonable/plausible. Later in the<br />
process they&#8217;ll think about things like the site&#8217;s security model, WYSIWYG<br />
editors, tags and categories, icons, avatars, database queries and storage, and<br />
the like.</p>
<p>Once they&#8217;ve reached a point where they&#8217;re satisfied that their solution will<br />
work and is thoughtful of the major points to be considered in the solution,<br />
they open an editor, and begin to type things that make no sense to their<br />
immediate family. Programmers express their solutions in code, of course, but<br />
they express them nonetheless, and this is not a trivial point.</p>
<h3>The Parallels Between Programming and Writing</h3>
<p>Writers often take the exact same course as do programmers. Programmers and<br />
writers alike are often given assignments. Assignments take the form of a<br />
problem that needs solving. For a programmer it&#8217;s a function or method or class<br />
that needs implementing to perform a certain task. For a writer it&#8217;s an article<br />
or column or speech that covers a particular topic. So in these cases, the<br />
problem identification is done for you (not that more discovery can&#8217;t be done<br />
&#8211; in both cases).</p>
<p>Next is the conception of the solution. Programmers puzzle over the problem,<br />
its context in the larger application or system, its scope, and its complexity.<br />
Writers puzzle over their topic space, its breadth and depth, and its context<br />
in the bigger picture of what their publication tries to accomplish. In both<br />
cases, writer and programmer alike take some time and probably kill some trees<br />
as they attempt to organize their thoughts.</p>
<p>At some point, for both writer and programmer, the time comes to use some tool<br />
to express their thoughts using some language. For a writer, they open a text<br />
editor or word processor and write in whatever language the publication<br />
publishes in. For the programmer, they open an IDE or editor and write using the<br />
standard language for their company, or perhaps their favorite language, or (in<br />
rare cases), the best language for accomplishing the task.</p>
<p>In neither case is this the end of the story. Programmers debug, tweak, and<br />
reorganize their code all the time. Writers do the exact same thing with their<br />
articles (assuming they&#8217;re of any length). Both bounce ideas off of their<br />
colleagues, and both still have work to do after their first take is through.<br />
Both will go at it again, both with (hopefully) a passion that exists not<br />
necessarily for the particular problem they&#8217;re solving, but for the sheer act<br />
of solving a problem (or covering a topic), whatever it may be.</p>
<p>Finally, once things are reviewed, and all parts have been carefully<br />
considered, the writer submits his piece to an editor for review, and the<br />
programmer submits to a version control system which may also be attached to an<br />
automated build system. Both may have more work to do.</p>
<h3>Starting Out</h3>
<p>The process is essentially the same. If you&#8217;re a new programmer, you can expect<br />
to have more than your fair share of bugs. If you&#8217;re a new writer, you can<br />
likewise expect your piece to look a bit different in final form than it did<br />
when you submitted it to the editor.</p>
<p>Just like programming, writing isn&#8217;t something you do perfectly from day one.<br />
It&#8217;s something that takes practice. At first it seems like an arduous process,<br />
but you get through it. As time passes, you start to realize that you&#8217;re going<br />
faster, and stumbling less often. Eventually you get to a point where you can<br />
crank out 1500-2000 words on your lunch hour without needing too much heavy<br />
revising.</p>
<h3>You Should Write</h3>
<p>So, I say &#8220;you should write&#8221;. As someone who owes his career to books and<br />
articles (not to mention friendly people far more experienced than myself), I<br />
consider it giving back to the medium that launched my career, and helping<br />
others like others helped me. I hope I can make the technological landscape<br />
better in some small way. If we all did that, we&#8217;d be able to collectively<br />
raise the bar and improve things together.</p>
<p>If altruism isn&#8217;t your bag, or you&#8217;re just hurting from the recent economic<br />
crisis, know that it&#8217;s also possible to make money writing as well. It&#8217;s not<br />
likely to become your sole occupation unless you happen to live in a VW Bus, or<br />
you do absolutely nothing else but write full time, all the time. However, it<br />
can be a nice supplement to a monthly salary, and if done regularly over the<br />
course of a year is more than enough to take care of your holiday shopping<br />
needs.</p>
<p>I&#8217;ve had good experiences writing for editors at php|architect and Python<br />
Magazine (I *was* an editor at both magazines, but you don&#8217;t edit your own<br />
work!), O&#8217;Reilly (oreillynet.com and a book as well), Linux.com (when it was<br />
under the auspices of the OSTG), TUX and Linux Magazine (both now defunct), and<br />
others. I encourage you to go check out the &#8220;write for us&#8221; links on the sites<br />
of your favorite publications, where you&#8217;ll find helpful information about<br />
interacting with that publications editors.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.protocolostomy.com/2009/09/09/if-you-code-you-should-write/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

