You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pollen/pollen/scribblings/pollen/Why_I_made_Pollen.html

2 lines
10 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><title>4&nbsp;Why I made Pollen</title><link rel="stylesheet" type="text/css" href="scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="racket.css" title="default"/><link rel="stylesheet" type="text/css" href="manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="manual-racket.css" title="default"/><script type="text/javascript" src="scribble-common.js"></script><!--[if IE 6]><style type="text/css">.SIEHidden { overflow: hidden; }</style><![endif]--></head><body id="scribble-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_0&quot;);">&#9660;</a></td><td></td><td><a href="index.html" class="tocviewlink" data-pltdoc="x">Pollen:<span class="mywbr"> &nbsp;</span> the book is a program</a></td></tr></table></div><div class="tocviewsublisttop" style="display: block;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1&nbsp;</td><td><a href="Installation.html" class="tocviewlink" data-pltdoc="x">Installation</a></td></tr><tr><td align="right">2&nbsp;</td><td><a href="Acknowledgments.html" class="tocviewlink" data-pltdoc="x">Acknowledgments</a></td></tr><tr><td align="right">3&nbsp;</td><td><a href="Quick_start.html" class="tocviewlink" data-pltdoc="x">Quick start</a></td></tr><tr><td align="right">4&nbsp;</td><td><a href="Why_I_made_Pollen.html" class="tocviewselflink" data-pltdoc="x">Why I made Pollen</a></td></tr><tr><td align="right">5&nbsp;</td><td><a href="Source_formats.html" class="tocviewlink" data-pltdoc="x">Source formats</a></td></tr><tr><td align="right">6&nbsp;</td><td><a href="reader.html" class="tocviewlink" data-pltdoc="x">&#9674; command overview</a></td></tr><tr><td align="right">7&nbsp;</td><td><a href="Module_reference.html" class="tocviewlink" data-pltdoc="x">Module reference</a></td></tr><tr><td align="right">8&nbsp;</td><td><a href="License___source_code.html" class="tocviewlink" data-pltdoc="x">License &amp; source code</a></td></tr></table></div></div><div class="tocviewlist"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_1&quot;);">&#9658;</a></td><td>4&nbsp;</td><td><a href="Why_I_made_Pollen.html" class="tocviewselflink" data-pltdoc="x">Why I made Pollen</a></td></tr></table><div class="tocviewsublistbottom" style="display: none;" id="tocview_1"><table cellspacing="0" cellpadding="0"><tr><td align="right">4.1&nbsp;</td><td><a href="Why_I_made_Pollen.html#%28part._.The_web-development_problem%29" class="tocviewlink" data-pltdoc="x">The web-<wbr></wbr>development problem</a></td></tr></table></div></div></div><div class="tocsub"><div class="tocsubtitle">On this page:</div><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber">4.1<tt>&nbsp;</tt></span><a href="#%28part._.The_web-development_problem%29" class="tocsubseclink" data-pltdoc="x">The web-<wbr></wbr>development problem</a></td></tr><tr><td><span class="tocsublinknumber">4.1.1<tt>&nbsp;</tt></span><a href="#%28part._.Why_not_a_content_management_system__like_.Word.Press_%29" class="tocsubseclink" data-pltdoc="x">Why not a content management system, like Word<span class="mywbr"> &nbsp;</span>Press?</a></td></tr><tr><td><span class="tocsublinknumber">4.1.2<tt>&nbsp;</tt></span><a href="#%28part._.Why_not_a_.C.S.S_preprocessor__like_.Sass_or_.L.E.S.S_%29" class="tocsubseclink" data-pltdoc="x">Why not a CSS preprocessor, like Sass or LESS?</a></td></tr><tr><td><span class="tocsublinknumber">4.1.3<tt>&nbsp;</tt></span><a href="#%28part._.Why_not_a_static_blog_generator__like_.Jekyll_or_.Pelican_%29" class="tocsubseclink" data-pltdoc="x">Why not a static blog generator, like Jekyll or Pelican?</a></td></tr><tr><td><span class="tocsublinknumber">4.1.4<tt>&nbsp;</tt></span><a href="#%28part._.Why_not_a_dynamic_templating_system__like_.Bottle_%29" class="tocsubseclink" data-pltdoc="x">Why not a dynamic templating system, like Bottle?</a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="versionbox"><span class="version">6.0.0.5</span></div><div class="navsettop"><span class="navleft">&nbsp;&nbsp;</span><span class="navright">&nbsp;&nbsp;<a href="Quick_start.html" title="backward to &quot;3 Quick start&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="index.html" title="up to &quot;Pollen: the book is a program&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="Source_formats.html" title="forward to &quot;5 Source formats&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div><h3>4<tt>&nbsp;</tt><a name="(part._.Why_.I_made_.Pollen)"></a>Why I made Pollen</h3><p>The nerds have already raced ahead to the quick tutorial. That&rsquo;s okay. Because software isn&rsquo;t just data structures and functions. It&rsquo;s ideas, and choices, and policies. It&rsquo;s design.</p><p>I created Pollen to overcome certain tool limitations that surfaced repeatedly in my work. If you agree with my characterization of those problems, then you&rsquo;ll probably like the solution that Pollen offers.</p><p>If not, you probably won&rsquo;t.</p><h4>4.1<tt>&nbsp;</tt><a name="(part._.The_web-development_problem)"></a>The web-development problem</h4><p>I made my first web page in 1994, shortly after the web was invented. I opened my text editor (at the time, <a href="http://www.barebones.com/products/bbedit/">BBEdit</a>) and pecked out <span class="RktSym">&lt;html&gt;&lt;body&gt;Hello</span><span class="RktMeta"></span><span class="hspace">&nbsp;</span><span class="RktMeta"></span><span class="RktSym">world&lt;/body&gt;&lt;/html&gt;</span><span class="RktMeta"></span>, then loaded it in <a href="http://en.wikipedia.org/wiki/Mosaic_(web_browser)">Mosaic</a>. So did a million others.</p><p>If you weren&rsquo;t around then, you didn&rsquo;t miss much. Everything about the web was horrible: the web browsers, the computers running the browsers, the dial-up connections feeding the browsers, and of course HTML itself. At that point, the desktop-software experience was already slick and refined. By comparison, using the web felt like banging rocks together.</p><p>That&rsquo;s no longer true. The web is now 20 years old. During that time, most parts of the web have improved dramatically &#8212; the connections are faster, the browsers are more sophisticated, the screens have more pixels.</p><p>But one part has not: the way we make web pages. Over the years, tools promising to simplify HTML development have come and mostly gone &#8212;&#160;from PageMill to Dreamweaver. Meanwhile, true web jocks have remained loyal to the original HTML power tool: the humble text editor.</p><p>In one way, this makes sense. Web pages are mostly made of text &#8212;&#160;HTML, CSS, JavaScript, and so on &#8212;&#160;and thus the simplest way to mainpulate them is with a text editor. While HTML and CSS are not programming languages, they lend themselves to semantic and logical structure that&rsquo;s most easily expressed by editing them as text. Text-based editing also makes debugging and performance improvements easier.</p><p>But text-based editing is also limited. Though the underlying description of a web page is notionally human-readable, it&rsquo;s largely optimized to be readable by other software (namely, web browsers). HTML markup in particular is verbose and easily mistyped. And isn&rsquo;t it fatally dull to manage all the boilerplate, like surrounding every paragraph with <span class="RktSym">&lt;p&gt;...&lt;/p&gt;</span><span class="RktMeta"></span>? Yes, it is.</p><p>For these reasons, much of web development should lend itself to automation. But in practice, tools that enable this automation have been slow to arrive, and most come hobbled with unacceptable deficiencies.</p><h5>4.1.1<tt>&nbsp;</tt><a name="(part._.Why_not_a_content_management_system__like_.Word.Press_)"></a>Why not a content management system, like WordPress?</h5><p>I used WordPress to make the original version of <a href="http://typographyforlawyers.com/">Typography for Lawyers</a> (the precursor to Butterick&rsquo;s Practical Typography). Even WordPress founder Matt Mullenweg <a href="http://ma.tt/2010/04/typography-for-lawyers/">thought</a> it was &#8220;a cool use of WordPress for a mini-book.&#8221; Thanks, Matt. At the time, WordPress was the best tool for the job.</p><p>But at the risk of having my <a href="http://gravatar.com">Gravatar</a> revoked, I&rsquo;ll tell you I became disenchanted with WordPress because:</p><p>It&rsquo;s a resource hog.</p><p>Performance is questionable.</p><p>There&rsquo;s always a new security problem.</p><p>No source control.</p><p>PHP.</p><h5>4.1.2<tt>&nbsp;</tt><a name="(part._.Why_not_a_.C.S.S_preprocessor__like_.Sass_or_.L.E.S.S_)"></a>Why not a CSS preprocessor, like Sass or LESS?</h5><p>A CSS preprocessor automates the generation of CSS data. These preprocessors do save time &amp; effort, so using one is better than not using one. My objection is that they ask you to incur much of the overhead of learning a programming language but without delivering the benefits. Because unlike a general-purpose programming language, Sass and LESS can only manipulate CSS. Better to learn a programming language that can manipulate anything.</p><h5>4.1.3<tt>&nbsp;</tt><a name="(part._.Why_not_a_static_blog_generator__like_.Jekyll_or_.Pelican_)"></a>Why not a static blog generator, like Jekyll or Pelican?</h5><h5>4.1.4<tt>&nbsp;</tt><a name="(part._.Why_not_a_dynamic_templating_system__like_.Bottle_)"></a>Why not a dynamic templating system, like Bottle?</h5><div class="navsetbottom"><span class="navleft">&nbsp;&nbsp;</span><span class="navright">&nbsp;&nbsp;<a href="Quick_start.html" title="backward to &quot;3 Quick start&quot;" data-pltdoc="x">&larr; prev</a>&nbsp;&nbsp;<a href="index.html" title="up to &quot;Pollen: the book is a program&quot;" data-pltdoc="x">up</a>&nbsp;&nbsp;<a href="Source_formats.html" title="forward to &quot;5 Source formats&quot;" data-pltdoc="x">next &rarr;</a></span>&nbsp;</div></div></div><div id="contextindicator">&nbsp;</div></body></html>