<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://nanoblogger.sourceforge.net/styles/feed.css"?>
<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Filed under: developer-notes | NanoBlogger</title>
<atom:link href="http://nanoblogger.sourceforge.net/archives/developer-notes/index-rss.xml" rel="self" type="application/rss+xml" />
<link>http://nanoblogger.sourceforge.net</link>
<description>small weblog engine for the UNIX command line</description>
<dc:language>en-us</dc:language>
<dc:creator>n1xt3r</dc:creator>
<dc:date>2009-10-07T14:22:44-04:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />
<item>
<link>http://nanoblogger.sourceforge.net/archives/2008/12/26/priority_shift/</link>
<guid isPermaLink="true">http://nanoblogger.sourceforge.net/archives/2008/12/26/priority_shift/</guid>
<title>Priority Shift</title>
<dc:date>2008-12-26T17:46:46-04:00</dc:date>
<dc:creator>n1xt3r</dc:creator>
<dc:subject>developer-notes</dc:subject>
<description>
<![CDATA[<p>Lately I've been busy with my new job! So, I had to push back the release of
   3.4. With the exception of a couple language updates, I've yet to even look at,
   I think it's ready for consumption. Other than that I'm still questioning the
   wisdom in keeping the new preview feature in 3.4 or holding it for a later
   release. On the other hand, I wonder how any of you have lived without it for so
   long.
</p>
<p>Thanks to everyone who has expressed in an interest in seeing this release
   happen. It's been encouraging. Hopefully I'll find a weekend soon where I
   actually have time to roll it out. Now, If you'll excuse me, I have bigger fish
   to fry.  <img src="http://nanoblogger.sourceforge.net/moods/biggrin.gif" alt=":D" />
</p>
<p>Happy Holidays everyone!
</p>]]>
</description>
</item>
<item>
<link>http://nanoblogger.sourceforge.net/archives/2008/07/25/interface_flow_of_the_syntax/</link>
<guid isPermaLink="true">http://nanoblogger.sourceforge.net/archives/2008/07/25/interface_flow_of_the_syntax/</guid>
<title>Interface: Flow of The Syntax</title>
<dc:date>2008-07-25T16:34:17-04:00</dc:date>
<dc:creator>n1xt3r</dc:creator>
<dc:subject>developer-notes</dc:subject>
<description>
<![CDATA[<p>The transformation is complete.
</p>
<p>My last post demonstrated some of the major changes to expect in syntax between
   now and the second release candidate of NanoBlogger 3.4. In many cases these
   transformations might appear similar to the behavior exhibited in versions 3.3
   and before. In other cases they will be radically different, but in any case,
   I'm confident that most people will view these changes as a welcome improvement
   over 3.4 RC1.
</p>
<p>Just to reiterate, the following changes, while primarily focused on changes
   from the previous release, are still relevant when compared to earlier versions.
</p>
<p>List of Syntax Enhancements &amp; Changes:
</p>
<p><strong>synopsis</strong>: nb [<em>options</em>] &lt;<em>action</em>&gt; [<em>keyword</em> (<em>variable</em>)]
</p>
<p><strong>add</strong> action:
</p>
<p>The <em>add</em> action has been reworked to accept one of multiple keywords.
   Keywords include: article, entry, tag and weblog.
</p>
<pre><code>example 1: nb add entry
example 2: nb add tag
</code></pre><p><strong>list</strong> action:
</p>
<p>The <em>list</em> action, while not much different than 3.3's "--list" option, has
   been enhanced to accept a second argument as input for a tag's ID number.
   Eliminating the need to use the "--tag" option to list entries by tag.
</p>
<pre><code>example 1: nb list tags
example 2: nb list main
example 3: nb list tag 3
</code></pre><p><strong>edit</strong> action:
</p>
<p>The <em>edit</em> action has been enhanced to accept one of multiple keywords.
   Keywords, "tag" and "entry", should be followed by an ID number. Where the
   keyword "file" expects a filename. The edit action in 3.4 RC 1 had no keywords.
</p>
<pre><code>example 1: nb edit entry 5
example 2: nb --title example2 edit tag 2
example 3: nb edit file somefile.txt
</code></pre><p><strong>delete</strong> action:
</p>
<p>The <em>delete</em> action has been enhanced much the same way the edit action
   has been. The only difference is that it's intentionally missing the
   keyword, "file". The delete action in 3.4 RC 1 had no keywords.
</p>
<pre><code>example 1: nb delete entry 5
example 2: nb delete tag 2
</code></pre><p><strong>update</strong> action:
</p>
<p>The <em>update</em> action, while no different than 3.3's "--update" option, no longer
   requires the "query" action for manipulation like it did in 3.4 RC1.
</p>
<pre><code>example: nb update main
</code></pre><p><strong>import</strong> action:
</p>
<p>The <em>import</em> action replaces the so called, "file" action and accepts
   one of multiple keywords followed by a preexisting file. Keywords
   include: article and entry.
</p>
<pre><code>example: nb import entry somefile.txt
</code></pre><p>Additional notes:
</p>
<ul>
 <li><p>The previous actions, formerly known as "query" and "tag" have been
     regulated to their equivalent long options, "--query" and "--tag". The
     "--tag" long option must be used when you need to manipulate entries
     belonging to a specific tag. The "--query" long option is useful for
     narrowing the scope of entries to be managed.
</p>

 </li>

 <li><p>Every action has always included a default query, In 3.3 this was changed to
     return a limited amount of results. As pointed out on the <a href="http://groups.yahoo.com/groups/nanoblogger/">mailing list</a>,
     this could be point of confusion, so it has been changed back to pre-3.3
     behavior of not defaulting to a limited query. The default query can be
     changed through the configuration or overridden from the command line.
</p>

 </li>

 <li><p>Short options are also provided for many of the actions and long options. 
</p>

 </li>
</ul>]]>
</description>
</item>
<item>
<link>http://nanoblogger.sourceforge.net/archives/2008/06/28/interface_visual_cues_to_the_rescue/</link>
<guid isPermaLink="true">http://nanoblogger.sourceforge.net/archives/2008/06/28/interface_visual_cues_to_the_rescue/</guid>
<title>Interface: Visual Cues To The Rescue</title>
<dc:date>2008-06-28T17:51:05-04:00</dc:date>
<dc:creator>n1xt3r</dc:creator>
<dc:subject>developer-notes</dc:subject>
<description>
<![CDATA[<p>Having received next to zero feedback from the first release candidate of 3.4,
   I've taken the liberty as lead developer and decided to fix what I perceive to
   be, vague and confusing "add", "edit" and "delete" commands.
</p>
<p>Somewhere in the transition from a dash-based only command line interface to a
   more flexible action-based one, some clarity has been lost. Having narrowed it
   down to the "add", "edit" and "delete" commands, I found the obvious solution
   was to clarify the subject of the action. Basically, employing strong visual
   cues which help provide the necessary distinction.
</p>
<p>I think the results speak for themselves:
</p>
<p>Now instead of:
</p>
<pre><code>nb edit n
</code></pre><p>or more confusing vagaries such as:
</p>
<pre><code>nb tag n delete n
</code></pre><p>We have nicely clarified commands, such as:
</p>
<pre><code>nb edit entry n
</code></pre><p>nice separation between what's a tag and what's an entry:
</p>
<pre><code>nb tag n delete entry n
</code></pre><p>in some cases we see an elimination of redundancy:
</p>
<pre><code>nb delete tag n
</code></pre><p>where before it was:
</p>
<pre><code>nb tag n delete tag
</code></pre><p>and in other cases we see an elimination of complexity:
</p>
<pre><code>nb --title example add tag
</code></pre><p>where before it was:
</p>
<pre><code>nb --title example add tag new
</code></pre><p>For the translators this will only require minor changes to the syntax of the
   effected commands.
</p>
<p>I'd like to get the final release out before September or sooner, but also
   believe such a change warrants a second release candidate, so expect a second
   one soon.
</p>]]>
</description>
</item>
<item>
<link>http://nanoblogger.sourceforge.net/archives/2008/05/23/announcing_3_4_rc-1_feature_freeze/</link>
<guid isPermaLink="true">http://nanoblogger.sourceforge.net/archives/2008/05/23/announcing_3_4_rc-1_feature_freeze/</guid>
<title>Announcing 3.4 RC-1 Feature Freeze</title>
<dc:date>2008-05-23T20:24:28-04:00</dc:date>
<dc:creator>n1xt3r</dc:creator>
<dc:subject>developer-notes</dc:subject>
<description>
<![CDATA[<p>I'm imposing a feature freeze on NanoBlogger, effective immediately.
   Mainly for the benefit of the translators and as a reminder to myself to
   stop tweaking and tinkering the code. The freeze will remain in effect
   until June 13.
</p>
<p>As is often the case, once I start focusing on fixing one bug or one
   feature it often leads to several other seemingly unrelated changes.
   For example, I'll notice some neglected code or documentation and feel
   compelled to tweak and tinker even more. And that's indeed what has
   happened since. So, translators will especially want to take advantage
   of this code freeze to synchronize their translations with the changes I
   made up until this freeze. I should note, if it wasn't for the advice of
   one Denis Bernard, I probably would've been satisfied with just making a
   release candidate or two. Also, I should note that, the Spanish
   translation is still in dire need of an update.
</p>
<p><em>Usted hablo Espanol?</em>  <img src="http://nanoblogger.sourceforge.net/moods/wink.gif" alt=";)" /> 
</p>
<p>We'll see how 3.4 RC-1 goes to determine whether the need exists for
   another future release candidate before making the final release. And if
   all goes well, hopefully NanoBlogger 3.4 RC-1 will be released around
   mid-June.
</p>]]>
</description>
</item>
<item>
<link>http://nanoblogger.sourceforge.net/archives/2008/01/12/switched_version_control_systems/</link>
<guid isPermaLink="true">http://nanoblogger.sourceforge.net/archives/2008/01/12/switched_version_control_systems/</guid>
<title>Switched Version Control Systems</title>
<dc:date>2008-01-12T17:02:13-04:00</dc:date>
<dc:creator>n1xt3r</dc:creator>
<dc:subject>developer-notes</dc:subject>
<description>
<![CDATA[<p>Hi folks!
</p>
<p>I finally made the switch to Subversion. With instructions provided by
   <a href="http://www.sourceforge.net">SF.net</a>, I exported my CVS repository and converted
   it to an SVN dump suitable for import. Since I saw no errors and was careful to
   remove CVSROOT, I made the error in assuming that the import would go without a
   hitch. After about a few days of waiting on tech support they gave me the
   information I needed to hear. The problem was on my end. Of course that
   "problem" was with all my CVS tags. Not surprising, seeing how they mention that
   as one of the most common problems that arises when switching from CVS to
   Subversion. So, I took the road most traveled and left those tags behind.
</p>
<p>All of this time spent around my code, lead me to tinkering, which lead to some
   changes. It's still fun to work on, even if I really should be working on more
   important things. So, if you're feeling frisky check out the new code! I'm
   running a Subversion shop now, baby!  <img src="http://nanoblogger.sourceforge.net/moods/devil.gif" alt=":devilish:" />
</p>]]>
</description>
</item>
<item>
<link>http://nanoblogger.sourceforge.net/archives/2007/06/21/project_status/</link>
<guid isPermaLink="true">http://nanoblogger.sourceforge.net/archives/2007/06/21/project_status/</guid>
<title>Project Status</title>
<dc:date>2007-06-21T17:03:36-04:00</dc:date>
<dc:creator>n1xt3r</dc:creator>
<dc:subject>developer-notes</dc:subject>
<description>
<![CDATA[<p>Thanks for all the nice comments in support of the project. After reading
   through some of the comments, I realize that I have not explained myself
   all that well. I've been very busy pursuing career goals of late and
   have not been able to respond to every comment or email, but please
   don't think that NB is subject to bit rot. Perhaps, instead, I should
   have said that I'm putting the project on hold for an indefinite time,
   but at the <a href="http://nanoblogger.sourceforge.net/archives/2007/04/19/not_so_nano_anymore/">time</a>,
   I was feeling rather envious of vee's simplicity. I'd agree now that my
   comparison was unfair in light of all the time and work that I and others
   have put into this project. NB for the most part has remained modular
   in terms of functionality. So, if someone wanted to they could strip the
   code down to it's bare essentials and still have a simple weblogging tool.
</p>
<p>If and when I have time, I will be working on rewriting CSS, redesigning
   the layout, and dealing with bug reports. Seeing how these tasks are
   currently low priority for me, I was thinking now might be a good time
   for anyone that wants to join the project to get involved and keep it
   moving forward. Just drop me a line if you're interested and I'll be
   happy to set you up.
</p>
<p>Best Regards!
</p>]]>
</description>
</item>
<item>
<link>http://nanoblogger.sourceforge.net/archives/2007/04/19/not_so_nano_anymore/</link>
<guid isPermaLink="true">http://nanoblogger.sourceforge.net/archives/2007/04/19/not_so_nano_anymore/</guid>
<title>Not So Nano Anymore</title>
<dc:date>2007-04-19T23:35:08-04:00</dc:date>
<dc:creator>n1xt3r</dc:creator>
<dc:subject>developer-notes</dc:subject>
<description>
<![CDATA[<p>Recently I came across this little gem, <a href="http://www.0x743.com/vee/">vii</a>,
   it's a simple command line blog tool written in bourne shell. It reminded
   me of MicroBlogger, which inspired me to write NanoBlogger. It also
   reminded me of why I named my project the way I did, but NanoBlogger's
   not so nano anymore. With a great project like vii in development I'm
   tempted to abandon development of NB. As vii matures, my itch for a
   better command line blog tool may be finally alleviated. From now on,
   I think I'll just focus on bug fixes.
</p>
<p><strong>update</strong>: I even found an
   <a href="http://www.0x743.com/.vee/1173710350.2007-03-12T10:39:10.html">article</a>
   from the developer of vii that shares my sentiment about NB.
</p>
<p><strong>update</strong>: vii has been renamed to vee.
</p>]]>
</description>
</item>
<item>
<link>http://nanoblogger.sourceforge.net/archives/2007/01/23/strange_logic/</link>
<guid isPermaLink="true">http://nanoblogger.sourceforge.net/archives/2007/01/23/strange_logic/</guid>
<title>Strange Logic</title>
<dc:date>2007-01-23T01:17:02-04:00</dc:date>
<dc:creator>n1xt3r</dc:creator>
<dc:subject>developer-notes</dc:subject>
<description>
<![CDATA[<p><strong>The problem:</strong> In 3.3 a new flat-file database was created with the
   simple objective of tracking an entry's assigned categories, which was
   essentially tacked on as an afterthought and poorly implemented. It's
   worth noting, that the categories themselves have always used a
   flat-file database, but already had code to manage them. Unfortunately
   the code for managing these flat-file databases in a more unified way
   has never been fully realized.
</p>
<p><strong>The solution:</strong> The databases must be easily maintained and be able to
   grow without negative impact to overall performance. So, update_db,
   update_maindb, delete_db, resort_db, and resort_catdb were created
   as new library functions that provide a unified approach to managing
   flat-file databases. The last two are probably the most involved,
   running the sort command on the database, but still far more efficient
   than globbing through a for loop.
</p>
<p>So far, I'm satisfied with the results and the obvious gain in speed.
   Although, I imagine anything would beat having to regenerate a database
   of a thousand entries or more everytime you want to change a weblog
   entry. I also had the joy of discovering some strange logic behind the
   build_weblog, paginate and delete functions.
</p>]]>
</description>
</item>
<item>
<link>http://nanoblogger.sourceforge.net/archives/2006/01/01/new_category_archiving_options_give_significant_speed_gains/</link>
<guid isPermaLink="true">http://nanoblogger.sourceforge.net/archives/2006/01/01/new_category_archiving_options_give_significant_speed_gains/</guid>
<title>New Category Archiving Options Give Significant Speed Gains</title>
<dc:date>2006-01-01T14:18:24-04:00</dc:date>
<dc:creator>n1xt3r</dc:creator>
<dc:subject>developer-notes</dc:subject>
<description>
<![CDATA[<p>In response to a
   <a href="http://groups.yahoo.com/group/nanoblogger/message/655">
   recent thread</a> on the
   <a href="http://groups.yahoo.com/group/nanoblogger/">mailing list</a>, I
   was able to identify three key areas in the code that could be optimized
   for efficiency.
</p>
<ol>
 <li>
     slow database acquisition (especially for categories)
 </li>

 <li>
     slow acquirement of related categories for each entry
 </li>

 <li>
     poor correlation of data loaded for category archives and entry
        templates
 </li>
</ol>
<p>The following solutions were conjured up as a result:
</p>
<ol>
 <li>
     created master database reference file which also stores related
        categories for each entry
 </li>

 <li>
     configurable data loaded for category archives allows for better
        correlation with entry templates
 </li>
</ol>
<p>Because of these changes, category archives can now be configured to
   acquire a minimal set of entry metadata reducing a significant amount
   of time wasted. Total time to process a full update of my weblog with a
   total of 87 entries and two categories was reduced by about three
   minutes!
</p>]]>
</description>
</item>
<item>
<link>http://nanoblogger.sourceforge.net/archives/2005/05/15/migrating_to_xhtml_1_1/</link>
<guid isPermaLink="true">http://nanoblogger.sourceforge.net/archives/2005/05/15/migrating_to_xhtml_1_1/</guid>
<title>Migrating to XHTML 1.1</title>
<dc:date>2005-05-15T00:02:04-04:00</dc:date>
<dc:creator>n1xt3r</dc:creator>
<dc:subject>developer-notes</dc:subject>
<description>
<![CDATA[<p>
<strong>Updated</strong>: Sun May 15 20:31:09 EDT 2005
</p><p>
With some help, I've managed to get the templates converted to XHTML 1.1.
Serving XHTML 1.1 involves some work with the server configuration. For apache
I've added <code>"AddType application/xhtml+xml .html"</code> to my .htaccess
file. In the process, I've added a new variable, BLOG_MIMETYPE, to set the
<code>content</code> meta data in the header of the templates. A special thanks
goes out to <a href="http://www.amake.us">amake</a> for contributing
the necessary <a
href="http://www.amake.us/archives/2005-05.php#e2005-05-02T16_44_15.txt">
changes</a> to the default templates.
</p><p>
In the process of this migration I've managed to encounter many bugs. However I
don't believe these bugs are from the previous version, but were rather created
during my experimentation's. To name a few, I fixed a bug in the moods plugin
that would skip every other smiley on a single line. Another potential bug was
discovered in the tidy plugin, where files wouldn't be modified if the
<code>-m</code> option wasn't set in TIDY_ARGS.
</p><p>
After discovering that tidy wasn't working at all, because I've changed my own
TIDY_ARGS to exclude the modify input option, I was a little frustrated. So, I
spent some time improving the tidy plugin and I feel I've greatly enhanced
the tidy plugin by adding a function to report tidy's exit code and adding
a log file, so that errors can be easily reviewed and corrected. Can you tell
I've been grokking tidy's documentation lately?  <img src="http://nanoblogger.sourceforge.net/moods/veryhappy.gif" alt=":)" /> 
</p>]]>
</description>
</item>
</channel>
</rss>
