<?xml version="1.0"?>
<rss version="2.0">
<channel>
 <title>
  0xc0.de
 </title>
 <link>
  http://0xc0.de
 </link>
 <description>
  0xc0.de/trace
 </description>
 <language>
  en
 </language>
 <copyright>
  Copyright 2007-2011 Arne Harren
 </copyright>
 <managingEditor>
  ah@0xc0.de
 </managingEditor>
 <webMaster>
  ah@0xc0.de
 </webMaster>
 <pubDate>
  Sun, 30 Oct 2011 17:42:00
 </pubDate>
 <lastBuildDate>
  Sun, 30 Oct 2011 17:42:00
 </lastBuildDate>
 <item>
  <title>
   LibComponentLogging, Optionally ARCed
  </title>
  <pubDate>
   Sun, 30 Oct 2011 17:42:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2011-10-30
  </link>
  <description>
   <![CDATA[
   <p>
    The newest builds of <a href="/LibComponentLogging">LibComponentLogging</a> add support for Automatic Reference Counting (ARC).
   </p>
   <p>
    Library Core:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-Core">http://github.com/aharren/LibComponentLogging-Core</a>
   </p>
   <p>
    Logging Back-ends:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-LogFile">http://github.com/aharren/LibComponentLogging-LogFile</a>
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-SystemLog">http://github.com/aharren/LibComponentLogging-SystemLog</a>
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-NSLog">http://github.com/aharren/LibComponentLogging-NSLog</a>
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-NSLogger">http://github.com/aharren/LibComponentLogging-NSLogger</a>
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Card Decks 2.1.1, Configurable Card Decks in Your Bag
  </title>
  <pubDate>
   Wed, 14 Sep 2011 23:01:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2011-09-14
  </link>
  <description>
   <![CDATA[
   <p>
    <a href="/CardDecks">Card Decks</a> 2.1.1 is a universal build which adds a native iPad user interface:
   </p>
   <p class="blk" style="text-align:center">
<img src="/CardDecks_screen_pad_1.png" alt="" style="text-align:center;float:center;padding: 0px 10px 10px 0px" />
   </p>
   <p>
    In addition, it contains some small updates to the iPhone user interface.
   </p>
   <p>
    Build 2.1.1 requires iOS 4.0 or later and is available from the <a href="/CardDecks-2.1.1-bin">App Store</a>.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging, Maintenance Builds
  </title>
  <pubDate>
   Sun,  7 Aug 2011 12:12:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2011-08-07
  </link>
  <description>
   <![CDATA[
   <p>
    Build 1.1.4 of <a href="/LibComponentLogging">LibComponentLogging</a>'s Core fixes the definition of the main log macro which sometimes prevented it from being used as a natural replacement for logging functions:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-Core">http://github.com/aharren/LibComponentLogging-Core</a>
   </p>
   <p>
    Build 1.0.3 of qlog removes the trailing semicolons which were erroneously included in the macro definitions.
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-qlog">http://github.com/aharren/LibComponentLogging-qlog</a>
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Card Decks 2.0.3, Processing for App Store
  </title>
  <pubDate>
   Sat, 25 Jun 2011 17:05:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2011-06-25
  </link>
  <description>
   <![CDATA[
   <p>
    A small update to <a href="/CardDecks">Card Decks</a> is available in the <a href="/CardDecks-2.0.3-bin">App Store</a>.
   </p>
   <p>
    The new build adds an action menu to the cards view which can be activated by tapping on the top margin:
   </p>
   <p class="blk" style="text-align:center">
<img src="/CardDecks_play_2.png" alt="" style="text-align:center;float:center;padding: 0px 10px 10px 0px" />
   </p>
   <ul>
    <li>
     The actions menu contains buttons for shuffle and sort.
    </li>
    <li>
     The actions menu contains buttons for play, fast-play, and stop.
    </li>
    <li>
     When the deck is in play/fast-play mode, it will automatically switch to the next card after some time has passed.
    </li>
    <li>
     The position of the actions menu (left/right) can be configured in the main settings.
    </li>
   </ul>
   <p>
    The new build also fixes some user interface animation glitches.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging, Recent Updates
  </title>
  <pubDate>
   Fri, 24 Jun 2011 23:23:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2011-06-24
  </link>
  <description>
   <![CDATA[
   <p>
    An update to the Core files of <a href="/LibComponentLogging">LibComponentLogging</a> fixes a symbol visibility mismatch which may occur when the Core files are put into a static library. Build 1.1.3 is available from the Core repository at GitHub:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-Core">http://github.com/aharren/LibComponentLogging-Core</a>
   </p>
   <p>
    The following logging back-ends were also updated based on recent bug reports and feature requests:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-NSLog">http://github.com/aharren/LibComponentLogging-NSLog</a>
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-NSLogger">http://github.com/aharren/LibComponentLogging-NSLogger</a>
   </p>
   <p>
    Build 1.0.2 of qlog adds additional logging macros which also take the log component as an argument:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-qlog">http://github.com/aharren/LibComponentLogging-qlog</a>
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Card Decks 2.0.2, A Small Update for Your Card Decks
  </title>
  <pubDate>
   Sun,  5 Dec 2010 11:11:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2010-12-05
  </link>
  <description>
   <![CDATA[
   <p>
    An updated version of <a href="/CardDecks">Card Decks</a> is available in the <a href="/CardDecks-2.0.2-bin">App Store</a>.
   </p>
   <p>
    Card Decks 2.0.2 contains the following bug fixes and features:
   </p>
   <ul>
    <li>
     Card Decks 2.0.2 adds support for different shake actions: shuffle all cards or select a random card while keeping the cards' order. You can select the shake action on a per-deck basis in the deck's settings.
    </li>
    <li>
     Sometimes, when sending a card deck URL from within the application, some trailing characters in the URL got lost.
    </li>
    <li>
     The 'quick open' mode is now enabled by default (if you have not changed this setting). So, a card deck can be viewed with a single tap from the card decks list and edited by pressing the blue detail button.
    </li>
    <li>
     When a list view is put into edit mode (by pressing the button with the three bars), the red minus buttons for deleting a card or a card deck are now shown.
    </li>
    <li>
     Modal views are now dismissed when the application enters background.
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging, Logger Updates
  </title>
  <pubDate>
   Sun,  7 Nov 2010 17:55:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2010-11-07
  </link>
  <description>
   <![CDATA[
   <p>
    The GitHub repositories of the <a href="/LibComponentLogging">LibComponentLogging</a> logging back-ends have been updated to reflect the recent changes to the Core files. The logging back-ends do now use 'pretty function names' to provide better log messages for applications which make use of Objective-C++:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-SystemLog">http://github.com/aharren/LibComponentLogging-SystemLog</a>
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-LogFile">http://github.com/aharren/LibComponentLogging-LogFile</a>
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-LogFile-Example">http://github.com/aharren/LibComponentLogging-LogFile-Example</a>
   </p>
   <p>
    The 'devel' branches of the repositories have also been upgraded to the latest Core files.
   </p>
   <p>
    In addition, a new logging back-end has been added: The new NSLogger back-end integrates Florent Pillet's NSLogger logging client which supports remote logging for Mac OS X and iPhone OS / iOS devices:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-NSLogger">http://github.com/aharren/LibComponentLogging-NSLogger</a>
   </p>
   <p>
    See <a href="http://github.com/fpillet/NSLogger">http://github.com/fpillet/NSLogger</a> for more details about NSLogger.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging Core, Maintenance Build 1.1.2
  </title>
  <pubDate>
   Thu, 21 Oct 2010 22:42:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2010-10-21
  </link>
  <description>
   <![CDATA[
   <p>
    A small update to the Core files of <a href="/LibComponentLogging">LibComponentLogging</a> fixes compile and link errors which occured when using the library with Objective-C++. Build 1.1.2 is available from the <a href="http://github.com/aharren/LibComponentLogging-Core">repository</a> on GitHub.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Card Decks 2.0.1, A More Detailed List of the Changes
  </title>
  <pubDate>
   Sun, 29 Aug 2010 21:02:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2010-08-29
  </link>
  <description>
   <![CDATA[
   <p>
    <a href="/CardDecks">Card Decks 2.0.1</a> is now available in the <a href="/CardDecks-2.0.1-bin">App Store</a>. Here's a more detailed list of the changes since Card Decks 1.1:
   </p>
   <ul>
    <li>
     The card deck list and the card list are now always in edit mode, e.g. you can simply swipe to delete a card, or press the '+' button to add a new card. The toolbar button with the three bars can be used to show/hide the reorder controls.
    </li>
    <li>
     New card decks are now created as a copy of the 'DECK DEFAULTS' deck which can also be edited.
    </li>
    <li>
     New cards are created as a copy of the deck's 'CARD DEFAULTS' card.
    </li>
    <li>
     Some settings are now stored on a per-deck basis, e.g. auto-rotation settings, shuffle settings, the deck's appearance etc.
    </li>
    <li>
     The name of a card deck can be edited via the deck's settings.
    </li>
    <li>
     The cards of a card deck can be rendered with rounded or cornered corners.
    </li>
    <li>
     The index dots are now available in two styles: light and dark.
    </li>
    <li>
     The cards of a deck can be shown side-by-side or as a stack.
    </li>
    <li>
     If a card deck is shuffled, it will remember the shuffle ordering and show a large shuffle icon when opened again.
    </li>
    <li>
     The 'shake for random' feature was replaced by shuffling and jumping to the first card ('Shake Shuffle' in the deck's settings).
    </li>
    <li>
     The cards of a card deck are now rendered in full screen mode and the status bar is always hidden.
    </li>
    <li>
     The card editor allows to define a fixed font size for a card. If a card uses a fixed font size, the size will be adjusted when the card is auto-rotated.
    </li>
    <li>
     You can move up/down to the previous/next card in the card editor.
    </li>
    <li>
     The card editor previews the font size and text orientation.
    </li>
    <li>
     The card editor provides action buttons for copying color and text properties to/from the card defaults and to all cards of a deck.
    </li>
    <li>
     Card Decks 2 no longer has a section in the Settings application, all settings can be
configured inside the application.    
    </li>
    <li>
     Some parts of the user interface are now configurable via the settings, e.g. you can configure whether a single tap or a double tap is needed to close the card view.
    </li>
    <li>
     On iPhone 4, the cards, application icons and toolbar icons are rendered in high-resolution.
    </li>
    <li>
     Card Decks 2 uses a new format when sending/receiving card decks as URLs, but still accepts URLs from Card Decks 1.x.
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Card Decks 2.0.1, Processing for App Store
  </title>
  <pubDate>
   Wed, 25 Aug 2010 22:23:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2010-08-25
  </link>
  <description>
   <![CDATA[
   <p>
    <a href="/CardDecks">Card Decks 2.0.1</a> is right on its way to the <a href="/CardDecks-2.0.1-bin">App Store</a>.
   </p>
   <p>
    A short list of what has changed since Card Decks 1.1:
   </p>
   <ul>
    <li>
     New user interface.
    </li>
    <li>
     Support for iOS 4.
    </li>
    <li>
     High-resolution graphics.
    </li>
    <li>
     Cards with rounded corners.
    </li>
    <li>
     Different card deck styles, e.g. stacked or side-by-side.
    </li>
    <li>
     Per-deck settings.
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   qlog - quick logging macros
  </title>
  <pubDate>
   Sun, 20 Jun 2010 21:05:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2010-06-20
  </link>
  <description>
   <![CDATA[
   <p>
    qlog is a set of quick logging macros for LibComponentLogging.
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-qlog">http://github.com/aharren/LibComponentLogging-qlog</a>
   </p>
   <p>
    qlog provides a short macro for every log level of LibComponentLogging, e.g. qlerror() for error messages and qltrace() for trace messages. Additionally, all logging macros take the current log component from a preprocessor define which can be (re)defined in your application at a file-level, section-based, or global scope.
   </p>
   <p>
    To use qlog, simply add the <code>qlog.h</code> file to your project and define the preprocessor symbol <code>ql_component</code> at a global scope with your default log component, e.g.
   </p>
   <div class="codeblockouter">
    <div class="codeblock">
     <code class="wrap">
      #define ql_component lcl_cDefaultLogComponent
     </code>
    </div>
   </div>
   <p>
    Then, logging statements can be added to your application by using the qlog macros instead of LibComponentLogging's lcl_log macros, e.g.
   </p>
   <div class="codeblockouter">
    <div class="codeblock">
     <code class="wrap">
      qlinfo(@"initialized");
      <br />
      qlerror(@"file '%@' does not exist", file);
      <br />
      qltrace();
      <br />
     </code>
    </div>
   </div>
   <p>
    If you want to use a specific log component for all logging statements in a file, you can simply redefine ql_component to match this log component, e.g. by adding a <code>#undef</code> <code>#define</code> sequence at the top of the file:
   </p>
   <div class="codeblockouter">
    <div class="codeblock">
     <code class="wrap">
      #undef ql_component
      <br />
      #define ql_component lcl_cFileLevelComponent
      <br />
     </code>
    </div>
   </div>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging SystemLog, Feature Build 1.1.1
  </title>
  <pubDate>
   Fri,  2 Apr 2010 14:45:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2010-04-02
  </link>
  <description>
   <![CDATA[
   <p>
    A new release of the <a href="/LibComponentLogging">LibComponentLogging</a> SystemLog logger, which sends log messages to the Apple System Log facility (ASL), is available for download from the project's repository on GitHub:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-SystemLog">http://github.com/aharren/LibComponentLogging-SystemLog</a>
   </p>
   <p>
    Build 1.1.1 adds the following features:
   </p>
   <ul>
    <li>
     More log methods have been added to the SystemLog logger class: log with a single message, log with a format string and va_list var args, and log with a format string and ... var args. (issue 1)
    </li>
    <li>
     The SystemLog class no longer relies on types and definitions from the Core files of LibComponentLogging thus making the logger useable without the Core files. (issue 2)
    </li>
    <li>
     Support for thread-level ASL connections has been added. (issue 3)
    </li>
    <li>
     The packaged template files have been updated and integrated into the unit tests. (issue 4)
    </li>
    <li>
     Configuration options for enabling/disabling the inclusion of file names, line numbers, and function names in the ASL log messages have been added. (issue 5)
    </li>
    <li>
     A configuration option has been added which tells the SystemLog class to use only ASL priority levels up to a specific last level, e.g. Notice. All log messages with a higher level will be mapped to the configured last level. Thus, Debug log messages get stored in the ASL data store without a reconfiguration of syslogd. (issue 6)
    </li>
   </ul>
   <p>
    The SystemLog logger is compatible to LibComponentLogging Core 1.0 and 1.1, and can be used without LibComponentLogging Core.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging LogFile, Maintenance Build 1.1.2
  </title>
  <pubDate>
   Sun, 21 Feb 2010 23:07:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2010-02-21
  </link>
  <description>
   <![CDATA[
   <p>
    Build 1.1.2 of <a href="/LibComponentLogging">LibComponentLogging</a>'s LogFile logger fixes the following bug:
   </p>
   <ul>
    <li>
     The time_c variable, which holds the current time, was not initialized if the file handle of the log file was unset and mirroring to stderr was enabled. This situation may arise if the log file couldn't be created, e.g. because its path is invalid, and the LogFile class falls back to mirroring to stderr. (issue 10)
    </li>
   </ul>
   <p>
    The new build is available from the repository on GitHub:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-LogFile">http://github.com/aharren/LibComponentLogging-LogFile</a>
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   unifiedps 1.3.1
  </title>
  <pubDate>
   Sun, 14 Feb 2010 11:50:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/unifiedps#2010-02-14
  </link>
  <description>
   <![CDATA[
   <p>
    <a href="/unifiedps">Unifiedps</a> also moved to <a href="http://github.com/aharren/unifiedps">GitHub</a>. The initial build 1.3.1 removes some internal code which is no longer needed with the new repository, it also fixes some formatting issues in the source code and removes a warning with newer versions of Perl, e.g. on Mac OS X 10.6.
   </p>
   <p>
    Additionally, the packaged <code>.unifiedpsrc</code> template file includes a new <code>-AAx</code> user-defined option which tells unifiedps to display information about the processes (including all parent and child processes) of all users, even those which are not connected to a controlling terminal, but not those which belong to root, nobody, daemon, and those users starting with a '_'.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging LogFile, Feature Build 1.1.1
  </title>
  <pubDate>
   Wed, 10 Feb 2010 20:57:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2010-02-10
  </link>
  <description>
   <![CDATA[
   <p>
    The first stable build of the <a href="/LibComponentLogging">LibComponentLogging</a> LogFile logger 1.1 release is available from the project's repository on GitHub:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-LogFile">http://github.com/aharren/LibComponentLogging-LogFile</a>
   </p>
   <p>
    Build 1.1.1 adds the following features and bug fixes:
   </p>
   <ul>
    <li>
     Convenience methods for generating default log file names have been added. These methods generate (partial) log file names based on the application's Info.plist file, e.g. a generated file name will have the format "~/Library/Logs/main/this.log" where main is the name of the main bundle, and this is the name of the bundle to which the LogFile class belongs. If the LogFile class is used in a Mac OS X framework, the log file will be placed into a log folder which belongs to the application, but the log file will have the name of the framework. (issue 2)
    </li>
    <li>
     Line feed characters in multi-line log messages can be escaped in order to keep multi-line log messages on a single line in the log file. (issue 3)
    </li>
    <li>
     The handling of nil paths and unsupported paths for the log file has been fixed and the LogFile class falls back to mirroring to stderr in these situations. (issue 4)
    </li>
    <li>
     Configuration options for enabling/disabling the printing of file names, line numbers, and function names in the log file have been added. (issue 5)
    </li>
    <li>
     A configuration option for limiting the size of a log message has been added. (issue 6)
    </li>
    <li>
     The LogFile class no longer relies on types and definitions from the LibComponentLogging Core files thus making the logger useable without the Core files, e.g. in combination with some simple DebugLog macros which do not know about log components. (issue 7)
    </li>
    <li>
     The packaged template files have been updated and integrated into the library's unit tests. (issue 8)
    </li>
    <li>
     More log methods have been added: log with a single message, log with a format string and va_list var args, and log with a format string and ... var args. (issue 9)
    </li>
   </ul>
   <p>
    The LogFile logger can be used in combination with LibComponentLogging Core 1.0 and 1.1.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging UserDefaults, Build 1.0.1
  </title>
  <pubDate>
   Fri,  5 Feb 2010 17:31:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2010-02-05
  </link>
  <description>
   <![CDATA[
   <p>
    UserDefaults is a <a href="/LibComponentLogging">LibComponentLogging Core</a> extension which stores/restores settings to/from the user defaults. Currently, the extension can store/restore active log level settings.
   </p>
   <p>
    The UserDefaults extension is living in its own repository on GitHub:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-UserDefaults">http://github.com/aharren/LibComponentLogging-UserDefaults</a>
   </p>
   <p>
    The following code shows a simple usage pattern for the UserDefaults extension in your application's main.m file:
   </p>
   <div class="codeblockouter">
    <div class="codeblock">
     <code class="wrap">
      #include "lcl.h"
      <br />
      #include "LCLUserDefaults.h"
      <br />
       
      <br />
      int main(int argc, char *argv[]) {
      <br />
      &nbsp;&nbsp;// restore the log level settings from the standard user defaults
      <br />
      &nbsp;&nbsp;[LCLUserDefaults restoreLogLevelSettingsFromStandardUserDefaults];
      <br />
       
      <br />
      &nbsp;&nbsp;// start your application
      <br />
      &nbsp;&nbsp;...
      <br />
      }
     </code>
    </div>
   </div>
   <p>
    The UserDefaults extension uses the following format for storing log level settings in your application's domain:
   </p>
   <div class="codeblockouter">
    <div class="codeblock">
     <code class="wrap">
      &quot;logging:&lt;bundle identifier&gt;:&lt;log component name&gt;:level&quot; = &lt;integer&gt;
     </code>
    </div>
   </div>
   <p>
    Examples:
   </p>
   <div class="codeblockouter">
    <div class="codeblock">
     <code class="wrap">
      &quot;logging:com.yourcompany.YourApplication:Application/Component 1:level&quot; = 5
      <br />
      &quot;logging:com.yourcompany.YourApplication:Application/Component 2:level&quot; = 3
     </code>
    </div>
   </div>
   <p>
    You can simply change the log level settings from the command line by using the 'defaults' command, e.g.
   </p>
   <div class="codeblockouter">
    <div class="codeblock">
     <code class="wrap">
      defaults write &lt;application&gt;
      &quot;logging:com.yourcompany.YourApplication:Application/Component 1:level&quot; -int 2
     </code>
    </div>
   </div>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging Core, Feature Build 1.1.1
  </title>
  <pubDate>
   Wed,  3 Feb 2010 22:05:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2010-02-03
  </link>
  <description>
   <![CDATA[
   <p class="blk" style="text-align:center">
    <img style="text-align:center" alt="Core" src="/LibComponentLogging_core.png" />
   </p>
   <p>
    Build 1.1.1 of <a href="/LibComponentLogging">LibComponentLogging Core</a> is available on GitHub. It adds the following features:
   </p>
   <ul>
    <li>
     A new <code>lcl_config_extensions.h</code> file can be used for adding extensions for the library Core which are not loggers, e.g. a set of shorter log macros, file-level log macros, or other helper classes. (issue 5)
    </li>
    <li>
     Missing <code>configure_*</code> functions for identifiers and headers have been added. (issue 6)
    </li>
    <li>
     If an unsupported log level is passed to one of the <code>configure</code> functions, the highest available log level will be used.
    </li>
    <li>
     If the preprocessor symbol <code>_LCL_NO_LOGGING</code> is defined, the <code>lcl_log()</code> log macro will be defined to an empty effect which will effectively remove all logging calls from the application. (issue 7)
    </li>
    <li>
     The log components' identifiers are now available as string constants. (issue 8)
    </li>
    <li>
     The packaged template files have been updated and integrated into the library's unit tests. (issue 12)
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging LogFile, Example Xcode Project
  </title>
  <pubDate>
   Wed, 27 Jan 2010 21:45:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2010-01-27
  </link>
  <description>
   <![CDATA[
   <p>
    Just pushed an example Xcode project to <a href="http://github.com/aharren/LibComponentLogging-LogFile-Example">GitHub</a> which bundles the library Core and the LogFile logger of <a href="/LibComponentLogging">LibComponentLogging</a> with a small example application:
   </p>
   <p class="indent">
    <a href="http://github.com/aharren/LibComponentLogging-LogFile-Example">http://github.com/aharren/LibComponentLogging-LogFile-Example</a>
   </p>
   <p>
    The project contains the latest builds of LibComponentLogging Core (build 1.0.4) and the LogFile logger class (build 1.0.3).
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Card Decks, Maintenance Build 1.1.2
  </title>
  <pubDate>
   Thu, 24 Dec 2009 07:23:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2009-12-24
  </link>
  <description>
   <![CDATA[
   <p>
    A maintenance update of <a href="/CardDecks">Card Decks</a> is now available in the <a href="/CardDecks-1.1.2-bin">App Store</a>. Build 1.1.2 fixes the following bugs:
   </p>
   <ul>
    <li>
     Fixed bug in the card deck editor which didn't add the card deck to the list of card decks when editing was quit via the 'Back' button.
    </li>
    <li>
     Fixed crash when pressing the  'Edit' button while viewing an empty card deck.
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Introducing [a] Blank Space
  </title>
  <pubDate>
   Thu, 17 Dec 2009 23:20:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/BlankSpace#2009-12-17
  </link>
  <description>
   <![CDATA[
   <p>
    <a href="/BlankSpace">Blank Space</a> is a tiny web application which serves as a blank space between the application icons on your iPhone's home screen. That's it. There's nothing more.
   </p>
   <p class="blk" style="clear:none">
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   <p>
    
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Card Decks, Feature Build 1.1.1
  </title>
  <pubDate>
   Sat,  7 Nov 2009 07:55:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2009-11-07
  </link>
  <description>
   <![CDATA[
   <p>
    The first build of the 1.1 release of <a href="/CardDecks">Card Decks</a> is now available as an update in the <a href="/CardDecks-1.1.1-bin">App Store</a>.
   </p>
   <p class="ctr">
    <img style="text-align:center" alt="Card Decks" src="/CardDecks_logo.png" />
   </p>
   <p>
    Card Decks 1.1 contains the following new featues:
   </p>
   <ul>
    <li>
     Card Decks has now a section in the Settings application.
    </li>
    <li>
     The settings are also available in the card deck view for quick changes.
    </li>
    <li>
     The 'idle timer' which puts the device to sleep can be turned on/off via the settings.
    </li>
    <li>
     The 'status bar' can be turned on/off via the settings.
    </li>
    <li>
     The 'page control' (the small white dots at the bottom) can be turned on/off via the settings.
    </li>
    <li>
     If the page control is turned off, it flashes when a new card is selected.
    </li>
    <li>
     'Auto rotation' can be turned on/off via the settings.
    </li>
    <li>
     The 'shake for random' feature randomly selects a card from the current card deck when the application receives shake events.
    </li>
    <li>
     The 'shake for random' feature can be turned on/off via the settings.
    </li>
    <li>
     The 'shuffle' feature shuffles the cards of the current card deck.
    </li>
    <li>
     All editors show a 'Done' button which immediately quits editing and returns to the main view.
    </li>
    <li>
     The card deck view now contains an 'Edit' button for direct editing of the current card and the card deck.
    </li>
    <li>
     A new card editor provides a 'keyboard extension' for symbols (based on Unicode blocks) and for setting the text's orientation.
    </li>
    <li>
     Card Decks has a new logo.
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Using the Unicode Symbols Keyboard in Card Decks 1.1
  </title>
  <pubDate>
   Fri,  6 Nov 2009 23:59:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2009-11-06
  </link>
  <description>
   <![CDATA[
   <p>
    Release 1.1 of <a href="/CardDecks">Card Decks</a> adds a 'keyboard extension' for Unicode symbols which lets you select special characters from the font directly when editing a card. So, you don't have to use the trick of adding special characters via their UTF-8 encoding in Card Decks URLs anymore.
   </p>
   <p>
    The following screens show the list of Unicode symbol blocks in the keyboard, the first symbols of the 'Miscellaneous Symbols' block, and the snowman symbol. Just click on a symbol in the symbol list, and it will be inserted into your card's text.
   </p>
   <p class="blk" style="text-align:center">
<img src="/CardDecks_symbols_1.png" alt="" style="text-align:center;float:center;padding: 0px 10px 10px 0px" /><img src="/CardDecks_symbols_2.png" alt="" style="text-align:center;float:center;padding: 0px 10px 10px 0px" /><img src="/CardDecks_symbols_3.png" alt="" style="text-align:center;float:center;padding: 0px 10px 10px 0px" />
   </p>
   <p>
    By default, the symbols keyboard shows only a selected set of Unicode blocks and symbols. The 'full symbol table' can be enabled via the Settings application.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Card Decks, Maintenance Build 1.0.3
  </title>
  <pubDate>
   Mon, 19 Oct 2009 23:55:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2009-10-19
  </link>
  <description>
   <![CDATA[
   <p>
    Build 1.0.3 of <a href="/CardDecks">Card Decks</a> is now "Ready for Sale" in the <a href="/CardDecks-1.0.3-bin">App Store</a>. This update fixes the following bugs:
   </p>
   <ul>
    <li>
     Fixed layout bugs if the first or last line of a card's text was empty.
    </li>
    <li>
     Fixed bug with wrong initial state of the color chooser.
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Card Decks, Maintenance Build 1.0.2
  </title>
  <pubDate>
   Thu, 10 Sep 2009 18:01:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2009-09-10
  </link>
  <description>
   <![CDATA[
   <p>
    Maintenance build 1.0.2 of <a href="/CardDecks">Card Decks</a> is available in the <a href="/CardDecks-1.0.2-bin">App Store</a>. It contains the following improvements and bug fixes:
   </p>
   <ul>
    <li>
     Improved performance when opening a card deck.
    </li>
    <li>
     Fixed flickerings when scrolling/stepping through the cards of a deck.
    </li>
    <li>
     Fixed quick jumps to jump to the same cards, e.g. first card, card in the middle, last card.
    </li>
    <li>
     Fixed layout bugs with long text lines.
    </li>
    <li>
     Fixed missing escapes for some special characters when sending a card deck as an URL.
    </li>
    <li>
     Fixed wrong usage of default colors when importing a card deck from an URL.
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging Core, Maintenance Build 1.0.4
  </title>
  <pubDate>
   Sat, 25 Jul 2009 18:27:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2009-07-25
  </link>
  <description>
   <![CDATA[
   <p>
    Maintenance build 1.0.4 of <a href="/LibComponentLogging">LibComponentLogging Core</a> fixes an issue with the main logging macro <code>lcl_log</code> in the Core part of the library which prevented the definition of custom logging macros on top of <code>lcl_log</code>.
   </p>
   <p>
    With build 1.0.4, it is now possible to define simplified logging macros which draw the current log component from a file-level (or global) <code>#define</code>, e.g.
   </p>
   <div class="codeblockouter">
    <div class="codeblock">
     <code class="wrap">
      #define log_info(_format, ...) \
      <br />
      &nbsp;&nbsp;lcl_log(FileLevelLogComponent, lcl_vInfo, _format, ##__VA_ARGS__);
     </code>
    </div>
   </div>
   <div class="codeblockouter">
    <div class="codeblock">
     <code class="wrap">
      #define FileLevelLogComponent \
      <br />
      &nbsp;&nbsp;lcl_cUIC1
      <br />
      &hellip;
      <br />
      log_info(@"initialized");
     </code>
    </div>
   </div>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Using UTF-8 Encoded Characters in Card Decks URLs
  </title>
  <pubDate>
   Sat, 25 Jul 2009 16:01:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2009-07-25
  </link>
  <description>
   <![CDATA[
   <p>
    The font that is used by Card Decks contains a lot of special characters, e.g. the sun with rays symbol '&#x2600;', the cloud '&#x2601;', or the umbrella symbol '&#x2602;'. Unfortunately, the iPhone's keyboard is very limited with regard to the set of characters that can be selected, e.g. you cannot write the cloud symbol via the keyboard.
   </p>
   <p>
    Until a future version of the iPhone OS, or the Card Decks application, adds support for specifying a character's encoding directly when editing a card, e.g. using UTF-8, you can create a Card Decks URL which encodes a deck with your cards and then import that card deck into the application. Within a Card Decks URL, special characters can be used with their UTF-8 URL encoding, e.g. the sun symbol has the UTF-8 encoding 0xe2 0x98 0x80 which can be encoded in an URL as %e2%98%80. Accordingly, the cloud symbol can be encoded as %e2%98%81, and the umbrella symbol as %e2%98%82.
   </p>
   <p>
    A sample Card Decks URL which adds a new card deck named 'Weather' consisting of cards which show the sun, the cloud, and the umbrella symbol could look like this:
   </p>
   <p class="indent">
    <code class="wrap">
     <a href="carddecks:///add?Weather,ffffff,000000&%e2%98%80&%e2%98%81&%e2%98%82">carddecks:///add?Weather,ffffff,000000&%e2%98%80&%e2%98%81&%e2%98%82</a>
    </code>
   </p>
   <p>
    More information about the Card Decks URL scheme is available at the Card Decks project site at <a href="/CardDecks">/CardDecks</a>.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Card Decks 1.0.1 available in App Store
  </title>
  <pubDate>
   Thu, 16 Jul 2009 23:23:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/CardDecks#2009-07-16
  </link>
  <description>
   <![CDATA[
   <p>
    The first release of <a href="/CardDecks">Card Decks</a> is available in the <a href="/CardDecks-1.0.1-bin">App Store</a>. Card Decks is a small iPhone OS application which provides decks of simple, configurable, colored, multi-line text cards which can be used for voting, or to show your opinion, argument, or mood.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging LogFile, Feature Build 1.0.3
  </title>
  <pubDate>
   Sun,  7 Jun 2009 15:10:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2009-06-07
  </link>
  <description>
   <![CDATA[
   <p>
    Feature build 1.0.3 of <a href="/LibComponentLogging">LibComponentLogging LogFile</a> adds the ability to append to an existing log file instead of always creating a new log file on startup.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging Core, Maintenance Build 1.0.3
  </title>
  <pubDate>
   Sat, 30 May 2009 16:34:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2009-05-30
  </link>
  <description>
   <![CDATA[
   <p>
    Maintenance build 1.0.3 of <a href="/LibComponentLogging">LibComponentLogging Core</a> fixes some small issues in the Core part of the library:
   </p>
   <ul>
    <li>
     The <code>lcl_vOff</code>, symbol which represents the turned-off log level, is now a public symbol and can be used in calls to the <code>lcl_configure_*</code> functions.
    </li>
    <li>
     The name of the array of log levels in <code>lcl.m</code> is now consistent to the name in <code>lcl.h</code>.
    </li>
    <li>
     In order to please the compiler, the type for log levels is now split up into a wide type which is used in function signatures and a narrow type which is used for the array of log levels.
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   LibComponentLogging Core, Maintenance Build 1.0.2
  </title>
  <pubDate>
   Sun, 26 Apr 2009 22:32:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2009-04-26
  </link>
  <description>
   <![CDATA[
   <p>
    The maintenance build 1.0.2 of the Core part of <a href="/LibComponentLogging">LibComponentLogging</a> adds a missing import for the Foundation framework to the <code>lcl.h</code> main header file.
   </p>
   <p>
    Without this import, the compiler may complain about a bad definition of the type <code>_lcl_level_t</code> if <code>lcl.h</code> is imported without a preceding import of the Foundation framework, e.g. if <code>lcl.h</code> is imported as the first file in the prefix header file or if no prefix header is used.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Logging to a File or to the System Log
  </title>
  <pubDate>
   Sat, 21 Feb 2009 12:22:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2009-02-21
  </link>
  <description>
   <![CDATA[
   <p>
    Additional logger implementations are available for <a href="/LibComponentLogging">LibComponentLogging</a>:
   </p>
   <ul>
    <li>
<span>LogFile</span>:
     LogFile writes log messages to an application-specific log file. The application's log file is opened automatically when the first log message needs to be written to the log file. If the log file reaches a configured maximum size, it gets rotated and all previous messages will be moved to a backup log file. The backup log file is kept until the next rotation.
    </li>
    <li>
<span>SystemLog</span>:
     SystemLog is a logger implementation which sends log messages to the Apple System Log facility (ASL). With ASL, log messages are stored as structured messages in a data store and can be queried via the syslog utility or the Console application.
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   Component-based Logging for Objective-C Applications
  </title>
  <pubDate>
   Sun, 25 Jan 2009 23:15:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/LibComponentLogging#2009-01-25
  </link>
  <description>
   <![CDATA[
   <p>
    After working with Objective-C on Mac OS X and the iPhone OS for a while now, I've factored out some code for component-based logging for Objective-C applications into a small open source library named <a href="/LibComponentLogging">LibComponentLogging</a>.
   </p>
   <p>
    The library is designed ...
   </p>
   <ul>
    <li>
     to provide log levels for distinguishing between error messages, informational messages, and fine-grained trace messages for debugging,
    </li>
    <li>
     to provide log components for identifying different parts of an application,
    </li>
    <li>
     to provide an active log level for each log component in order to enable/disable logging for certain parts of an application, and
    </li>
    <li>
     to introduce only very low runtime-overhead when logging is disabled and to avoid evaluating log message arguments if the message is not going to be logged.
    </li>
   </ul>
   <p>
    LibComponentLogging is split up into a Core part, which provides the main logging concepts like log levels and log components, and Loggers, which implement concrete logging strategies, e.g. writing the log messages into a file. This separation makes LibComponentLogging deployable for different application scenarios, e.g. an application may write its log message to a file while another application may send them to the system log.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   unifiedps 1.2.46 available
  </title>
  <pubDate>
   Sun, 10 Feb 2008 16:58:00 +0100
  </pubDate>
  <link>
   http://0xc0.de/unifiedps#2008-02-10
  </link>
  <description>
   <![CDATA[
   <p>
    An updated version of unifiedps is available on its project site at <a href="/unifiedps">/unifiedps</a>.
   </p>
   <p>
    Changes since 1.2.31:
   </p>
   <ul>
    <li>
     add options for displaying/hiding the header line
    </li>
    <li>
     add options for changing the indentation of the pid and/or command field
    </li>
    <li>
     add options for selecting parent/child processes
    </li>
    <li>
     add new mark/restrict filters with matching operators (is, equals, contains, starts, ends, 
  and not-variants) and support for or-operation
    </li>
    <li>
     cleanup user-defined options in the included example ~/.unifiedpsrc file
    </li>
    <li>
     when displaying the help text, use the sorting order of user-defined options as defined in the user's ~/.unifiedpsrc file
    </li>
   </ul>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
 <item>
  <title>
   alias ps=&quot;~/bin/unifiedps&quot;
  </title>
  <pubDate>
   Thu, 13 Sep 2007 21:02:00 +0200
  </pubDate>
  <link>
   http://0xc0.de/unifiedps#2007-09-13
  </link>
  <description>
   <![CDATA[
   <code class="code">
    $&nbsp;ps
    <br />
    &nbsp;PID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPID&nbsp;&nbsp;USER&nbsp;&nbsp;TTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME&nbsp;COMMAND
    <br />
    &nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:39.30&nbsp;/sbin/launchd
    <br />
    :&nbsp;146&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ah&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1:07.48&nbsp;/sbin/launchd
    <br />
    :&nbsp;&nbsp;1787&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;146&nbsp;&nbsp;&nbsp;ah&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:00.51&nbsp;/Applications/Utilities/Terminal
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;1788&nbsp;&nbsp;&nbsp;&nbsp;1787&nbsp;&nbsp;root&nbsp;&nbsp;s000&nbsp;&nbsp;0:00.01&nbsp;login&nbsp;-pf&nbsp;ah
    <br />
    :&nbsp;&nbsp;&nbsp;&nbsp;1789&nbsp;&nbsp;&nbsp;1788&nbsp;&nbsp;ah&nbsp;&nbsp;&nbsp;&nbsp;s000&nbsp;&nbsp;0:00.02&nbsp;-bash
    <br />
    :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1819&nbsp;&nbsp;1789&nbsp;&nbsp;ah&nbsp;&nbsp;&nbsp;&nbsp;s000&nbsp;&nbsp;0:00.02&nbsp;unifiedps
    <br />
    &nbsp;
    <br />
   </code>
   <p>
    Finally I made it to rewrite some Perl code which was originally only intended to display the running processes on different Unix-like platforms in a tree-structured format. Actually, just to find the right parent process to 'kill'.
   </p>
   <p>
    The main component of this code was an abstraction of the different platforms' native 'ps' commands accompanied by a simple tree formatter. The supported platforms were AIX and i5/OS PASE, HP-UX, Linux, and Solaris.
   </p>
   <p>
    The rewritten code at <a href="/unifiedps">/unifiedps</a> has grown to a more convenient wrapper for the native 'ps' commands and adds functionality for restricting and marking the displayed processes, a small macro processor for defining user-defined options, and additional platform support.
   </p>
   <p>
    <a href="mailto:ah at 0xc0.de">ah</a>
   </p>
   ]]>
  </description>
 </item>
</channel>
</rss>

