<?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"
	>

<channel>
	<title>blog.s11n.net &#187; General</title>
	<atom:link href="http://blog.s11n.net/?feed=rss2&#038;cat=1" rel="self" type="application/rss+xml" />
	<link>http://blog.s11n.net</link>
	<description>blog for s11n.net</description>
	<pubDate>Thu, 23 Aug 2012 15:51:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Forewarning: s11n.net is going offline</title>
		<link>http://blog.s11n.net/?p=106</link>
		<comments>http://blog.s11n.net/?p=106#comments</comments>
		<pubDate>Thu, 23 Aug 2012 15:51:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[goodbye]]></category>

		<guid isPermaLink="false">http://blog.s11n.net/?p=106</guid>
		<description><![CDATA[Hi, all!
After having been online for about 9 years now, i am being forced to take s11n.net offline. I.T. salaries in Europe have stayed flat since over 10 years while the cost of living increases practically weekly, and i can no longer afford to shell out some 300 Euros/year for hosting (my effective salary is probably [...]]]></description>
			<content:encoded><![CDATA[<p>Hi, all!</p>
<p>After having been online for about 9 years now, i am being forced to take s11n.net offline. I.T. salaries in Europe have stayed flat since over 10 years while the cost of living increases practically weekly, and i can no longer afford to shell out some 300 Euros/year for hosting (my effective salary is probably half of what i made 10 years ago, despite having increased my skills/effectiveness by over 10x). i will TRY to get the blog ported over the wanderinghorse.net (my (MUCH cheaper) primary hoster) but i seem to have been shut out of shell access at this account and am too old and tired to deal with it, so it might just get deleted.</p>
<p>i cannot yet say WHEN it will go offline. i will cancel the contract in the next week or two but things like this take time in Germany, and it might take anywhere from 2 weeks to 3 months or more before it goes dark.</p>
<p>It&#8217;s been fun, but it has gotten too expensive to justify. If you do in fact follow this blog or my other works, please continue to do so over on <a title="android.wanderinghorse.net" href="http://android.wanderinghorse.net" target="_blank">android.wanderinghorse.net</a>, which is my current blog. The other <a href="http://wanderinghorse.net" target="_blank">wanderinghorse.net</a> domains still house my various projects, and s11n will eventually move over there (where hosting costs less than 1/6th of what i pay at 1&amp;1), but the domain itself will probably not (because 1&amp;1 intentionally makes it really painful to get out from under their thumb).</p>
<p><strong><em>Happy Hacking!</em></strong></p>
<p>&#8212;&#8211; stephan beal</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.s11n.net/?feed=rss2&amp;p=106</wfw:commentRss>
		</item>
		<item>
		<title>New, Android-centric Blog</title>
		<link>http://blog.s11n.net/?p=105</link>
		<comments>http://blog.s11n.net/?p=105#comments</comments>
		<pubDate>Sun, 17 Jun 2012 14:21:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://blog.s11n.net/?p=105</guid>
		<description><![CDATA[Hi, all!
As i begin my semi-official migration away from abusing the s11n.net domain for anything and everything, i have started another blog centered around software development on the Android platform: http://android.wanderinghorse.net
Unlike blog.s11n.net, the new one uses a modern WordPress which allows people to log in via social networks and has other cool features. (i have [...]]]></description>
			<content:encoded><![CDATA[<p>Hi, all!</p>
<p>As i begin my semi-official migration away from abusing the s11n.net domain for anything and everything, i have started another blog centered around software development on the Android platform: <a href="http://android.wanderinghorse.net" target="_self">http://android.wanderinghorse.net</a></p>
<p>Unlike blog.s11n.net, the new one uses a modern WordPress which allows people to log in via social networks and has other cool features. (i have not upgraded this site because of the risks of losing 7 years of posts.)</p>
<p>If you are at all interested in Android development, <a title="android.wanderinghorse.net" href="http://android.wanderinghorse.net">stop on by</a>.</p>
<p>In related news: sometime around September i will be moving s11n.net to a new hoster. The domain will be kept (because i can do so cheaply), but there might be some down-time while i port. (And i hope to Gawd that i don&#8217;t lose all the old posts when porting the blog&#8230;)</p>
<p><strong><em>Happy Hacking!</em></strong></p>
<p>&#8212;&#8211; stephan beal</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.s11n.net/?feed=rss2&amp;p=105</wfw:commentRss>
		</item>
		<item>
		<title>Goodbye, Ubuntu!</title>
		<link>http://blog.s11n.net/?p=101</link>
		<comments>http://blog.s11n.net/?p=101#comments</comments>
		<pubDate>Tue, 18 Oct 2011 18:16:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.s11n.net/?p=101</guid>
		<description><![CDATA[Achtung: this is one of those bad-mood posts i prefer to avoid writing, but the Ubuntu project needs a bit of a verbal thrashing&#8230;
i&#8217;ve been a happy, dedicated Ubuntu user since i left Kubuntu when they switched from KDE 3 to KDE 4 (which was, and still is, utterly useless as a work environment). i [...]]]></description>
			<content:encoded><![CDATA[<p>Achtung: this is one of those bad-mood posts i prefer to avoid writing, but the Ubuntu project needs a bit of a verbal thrashing&#8230;</p>
<p>i&#8217;ve been a happy, dedicated Ubuntu user since i left Kubuntu when they switched from KDE 3 to KDE 4 (which was, and still is, utterly useless as a work environment). i had been a happy, dedicated Kubuntu user since switching from Suse. i had been a happy, dedicated Suse user since the summer of 1998, shortly after i moved to Germany, and only left them because their package management tools simply got atrociously bad (i&#8217;m sure they have since gotten better, but once you&#8217;ve used apt-get and friends you can&#8217;t ever go back to an RPM-based system). Before Suse i would use various distros and had no real favourite (i started using Linux in 1994). i think i was using Slackware most of the time back then.</p>
<p>When Ubuntu 11.04 came out i diligently upgraded. &#8220;Upgrade,&#8221; he says! Upgrade!!! Right! <em><strong>It was supposed to be an upgrade!</strong></em> But the Ubuntu project went with some eye-candy desktop environment with the same core properties as KDE4: it looks beautiful but is absolutely useless as a work environment. i need a WORKstation, not a PLAYstation (that&#8217;s what my GameBoy is for). So i back-revved (upgraded!) 11.04 to 10.10 and was once a happy, dedicated Ubuntu user.</p>
<p>And then came 11.10, and i felt compelled to try it out. BAD IDEA! Not only does it have that same goddamned Mac-like user interface, they&#8217;ve moved the app menu to the top of the screen. <em><strong>Steve Jobs isn&#8217;t dead - he went to work for Ubuntu.</strong></em></p>
<p><em><strong>I HATE HAVING THE MENU ON THE TOP OF MY SCREEN.</strong></em> After reading several blog posts about how to remove it, nothing worked. So i installed the LXDE desktop on it, which is actually quite nice but has the fatal flaw that it cannot properly do multi-head (or it has no tool for setting it up like Ubuntu and friends have). My netbook (my only PC) gets continually moved between two different external monitors and i need a work environment which can do that. Ubuntu handled that beautifully, without any restarting or other Windows/Firefox-like behaviour. So LXDE is ruled out.</p>
<p>At this very moment i&#8217;m running the LiveCD version of Mint Linux, and it&#8217;s installing as i&#8217;m writing this (try doing that in Windows or Mac!).</p>
<p><em><strong>GOODBYE, UBUNTU!</strong></em> i once loved you, but this betrayal is too much. i cannot live with a menu stuck at the top of my screen and a desktop with which i cannot work. Even in &#8220;Gnome Classic&#8221; mode that goddamned menu sits at the top of my screen, continually taunting me. i can&#8217;t have my PC taunting me, so off you go, back to the toybox where your Unity desktop belongs.</p>
<p>The installer is finished now, so it&#8217;s now time to go get all my packages installed and whatnot. What a waste of time. This type of thing was fun 10 or 12 years ago, but i&#8217;m too old for that - i want a system which just works and keeps working. Kinda like Ubuntu did up until version 11.04.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.s11n.net/?feed=rss2&amp;p=101</wfw:commentRss>
		</item>
		<item>
		<title>whiki: a &#8220;different sort&#8221; of Wiki back-end</title>
		<link>http://blog.s11n.net/?p=99</link>
		<comments>http://blog.s11n.net/?p=99#comments</comments>
		<pubDate>Tue, 17 May 2011 20:26:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">http://blog.s11n.net/?p=99</guid>
		<description><![CDATA[Hi, all!
Despite the fact that the world has tons of wiki managers/back-ends, i felt compelled hack one of my own together. The initial inspiration for this came from the Fossil, an SCM which integrates source control, a wiki, and bug-tracking into a single application binary which can be used from the command line, a standalone web [...]]]></description>
			<content:encoded><![CDATA[<p>Hi, all!</p>
<p>Despite the fact that the world has tons of wiki managers/back-ends, i felt compelled hack one of my own together. The initial inspiration for this came from the <a href="http://www.fossil-scm.org" target="_blank">Fossil</a>, an SCM which integrates source control, a wiki, and bug-tracking into a single application binary which can be used from the command line, a standalone web server, or as a CGI on an arbitrary web hoster. (i host many of my own projects using Fossil CGI over on <a href="http://fossil.wanderinghorse.net" target="_blank">fossil.wanderinghorse.net</a>.) Through my use of fossil, i&#8217;ve come accustomed to maintaining non-API project documentation in a wiki, and love the ease-of-documentation this gives me (i&#8217;m a documentation maniac). Despite my love for fossil, however, i always felt that i was betraying the only wiki syntax i really like - the one used by <a href="http://code.google.com" target="_blank">Google Code</a>. Since fossil doesn&#8217;t provide the features i need to replace its wiki handler with one of my own&#8230; you guessed it (or read it in the first line of this post)&#8230; i wrote a new wiki back-end.</p>
<p>In April i started work on <a href="http://fossil.wanderinghorse.net/repos/whiki/" target="_blank">whiki</a> (the <a href="http://www.wanderinghorse.net" target="_blank">WanderingHorse.net</a> Wiki), a &#8220;different sort&#8221; of wiki back-end, and it is now in a functional state (hosting three live wikis as of 17 May 2011). Like most wiki back-ends, it uses a database (sqlite3 or MySQLv5) to store its pages. What differentiates whiki from other wiki back-ends is:</p>
<ul>
<li>It is implemented in C and runs as a CGI application (or, to some degree, from the command line). i&#8217;m not personally aware of any other wiki manager/back-end implemented in C.</li>
<li>It consumes and produces <em>only</em> JSON data. Requests are sent in the form of simple HTTP GET or (for more complex requests) POST requests (with JSON payload data) and responses are in the form of a JSON object tree.</li>
<li>It has no &#8220;native&#8221; wiki format. Instead it tags each wiki page with a &#8220;content type&#8221; label (e.g. &#8220;text/plain&#8221; or &#8220;wiki/googlecode&#8221;), and applications can use that hint to determine how they should render a given page. Client applications can, with little effort, support multiple content types in the same logical wiki (e.g. plain text, source code (to be syntax-highlighted by the renderer), HTML, or even multiple wiki formats).</li>
<li>It has no &#8220;native&#8221; user interface. UIs can be written using client-side languages like JavaScript, Java, or PHP, which interact with the whiki back-end via JSON messages. The <a href="http://fossil.wanderinghorse.net/repos/whiki/" target="_blank">main whiki website</a> is implemented entirely in JavaScript, CSS, and HTML, and primarily uses the <a href="http://code.google.com/p/wikiwym/" target="_blank">wikiwym GoogleCode-syntax wiki parser</a> for rendering its pages (but it also supports several other content types).</li>
<li>It allows clients to attach arbitrary JSON data to each page. This can be used for any number of things, e.g. implementing &#8220;tags&#8221;, marking certain pages as &#8220;featured&#8221; or &#8220;important&#8221;, defining intra-page relationships (e.g. for rendering a hierarchical menu), or flagging a certain page as the &#8220;home page.&#8221;</li>
</ul>
<p>whiki is not, and will never, be an industrial-strength back-end like the one used to power Wikipedia (or any number of other large wikis). It is intended to supplant my fossil-based wikis (meaning anywhere from 5 to 20 pages or so). It is also missing some features which would certainly be of critical importance to many potential users. e.g. it has no search functionality, only two access levels (all or nothing), and has no support for storing historical versions of each page. (With another contributor or three we could fix those shortcomings, but i personally have relatively little need of them.)</p>
<p>If the following applies to you:</p>
<ul>
<li>You&#8217;re an eccentric C hacker who wants to host his own small wiki but doesn&#8217;t want to use PHP or&#8230;</li>
<li>You&#8217;re a lone hacker who wants to an easy way to host wiki-style documentation for one of his pet projects or&#8230;</li>
<li>You currently use Fossil but aren&#8217;t quite satisfied with its wiki</li>
</ul>
<p>&#8230; and you have the ability to compile and run C applications on your web hoster&#8230;</p>
<p><em>Then</em> whiki just <em>might</em> be slightly interesting for you:</p>
<p style="text-align: center;"><a href="http://whiki.wanderinghorse.net">http://whiki.wanderinghorse.net</a></p>
<p><strong><em>Happy Hacking!</em></strong></p>
<p>&#8212;&#8211; stephan beal</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.s11n.net/?feed=rss2&amp;p=99</wfw:commentRss>
		</item>
		<item>
		<title>New Project: v8::convert</title>
		<link>http://blog.s11n.net/?p=94</link>
		<comments>http://blog.s11n.net/?p=94#comments</comments>
		<pubDate>Sun, 23 Jan 2011 14:48:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[software-dev]]></category>

		<category><![CDATA[c]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[v8]]></category>

		<guid isPermaLink="false">http://blog.s11n.net/?p=94</guid>
		<description><![CDATA[Hello, fellow v8 hackers,
(If you have no idea what a &#8220;v8 hacker&#8221; is then this post will mean nothing to you.)
i would like to announce a new v8-based project&#8230;
 v8::convert is a header-only utility library for Google v8 with a very small focus:

Converting between v8 and native values, including client-defined types.
Converting C/C++ functions/methods to v8::InvocationCallback implementations.

With  [...]]]></description>
			<content:encoded><![CDATA[<p>Hello, fellow v8 hackers,</p>
<p>(If you have no idea what a &#8220;v8 hacker&#8221; is then this post will mean nothing to you.)</p>
<p>i would like to announce a new <a title="Google v8 home page" href="http://code.google.com/p/v8">v8-based</a> project&#8230;</p>
<p><a href="http://code.google.com/p/v8-juice/wiki/V8Convert"> v8::convert</a> is a header-only utility library for <a title="Google v8 home page" href="http://code.google.com/p/v8">Google v8</a> with a very small focus:</p>
<ul>
<li>Converting between v8 and native values, including client-defined types.</li>
<li>Converting C/C++ functions/methods to v8::InvocationCallback implementations.</li>
</ul>
<p>With  those two features we have almost everything we need for most  class-binding purposes. The the ability to convert functions to have  v8::InvocationCallback signatures has proven especially useful, and  allows us to plug in in many C-standard or 3rd-party APIs with ease.  Conversions are compile-time typesafe where possible and runtime  conversion failures fail gracefully (e.g. by throwing a JS-side  exception).</p>
<p>The core components are in no way project-specific, and can be used in  conjunction with arbitrary other function/class binding mechanisms.  Since the implementation is header-only, it&#8217;s particularly easy to  include into other projects.</p>
<p>The API is trivial to use. The client API contains a good number of  classes and functions, but most client code needs only one or m/ore of  the 5 main function templates: CastToJS(), CastFromJS(),  FunctionToInvocationCallback(), MethodToInvocationCallback(), and  ConstMethodToInvocationCallback().</p>
<p>The missing parts are:</p>
<p>- Binding JS accessors to native values/functions. i have the code in v8-juice but need to port it to this API&#8217;s conventions.<br />
- A class binding mechanism which takes care of the WeakPointer bits.  There is such a mechanism in v8::convert, but it is not considered a  core component because hackers tend to each have their own favourite  class binding mechanism.</p>
<p>The code is largely a spin-off of the core-most <a title="v8-juice home page" href="http://code.google.com/p/v8-juice/">v8-juice</a> components,  but the function-binding parts were re-implemented from scratch so that  we can use function-pointer-style template parameters (which, IMO, are  more readable than the v8-juice&#8217;s approach). Additionally, instead of  inheriting v8-juice&#8217;s huge collection of weirdly-named function-binding  templates, clients now need only 3 templates to bind functions (one each  for free functions, const- and non-const member functions).</p>
<p>The idea of doing a header-only spin-off has been brewing for some  time, but i was recently inspired to finally do the work by two other  <a title="v8-users" href="http://groups.google.com/group/v8-users">v8-users list</a> members:</p>
<p>- James Pike: when i saw how <a title="vu8 home page" href="https://github.com/tsa/vu8">vu8</a> takes advantage of  function-pointer-style template parameters, i just <em>had</em> to have that  feature for myself.</p>
<p>- Fuzzy Spoon: the separation of const- and non-const member handling  was prompted by Fuzzy&#8217;s report about MSVC not being able to select the  proper template specializations when the the member functions differ  only in constness.</p>
<p>v8::convert is only about 3 nights old, but already has at least as much API documentation as v8 itself.  There is an overview and example code here:</p>
<p><a href="http://code.google.com/p/v8-juice/wiki/V8Convert" target="_blank">http://code.google.com/p/v8-juice/wiki/V8Convert</a></p>
<p>The source code is at:</p>
<p><a href="http://code.google.com/p/v8-juice/source/browse/#svn/convert" target="_blank">http://code.google.com/p/v8-juice/source/browse/#svn/convert</a></p>
<p>It includes a standalone demo application and a demo v8-juice plugin.</p>
<p><strong><em>Happy Hacking!</em></strong><br />
&#8212;&#8211; stephan beal</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.s11n.net/?feed=rss2&amp;p=94</wfw:commentRss>
		</item>
		<item>
		<title>New project: cson JSON API for C</title>
		<link>http://blog.s11n.net/?p=93</link>
		<comments>http://blog.s11n.net/?p=93#comments</comments>
		<pubDate>Sat, 15 Jan 2011 11:40:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[c]]></category>

		<category><![CDATA[json]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.s11n.net/?p=93</guid>
		<description><![CDATA[Hello, fellow C hackers! (Everyone else can stop reading now.)
i couldn&#8217;t resist the urge: i had to try my hand at writing a JSON library for C:
http://fossil.wanderinghorse.net/repos/cson/
cson (pronounced &#8220;season&#8221;) is my first JSON API for C. Its design is based largely on that of its &#8220;genetic stepbrother&#8221;, libnosjob (C++ JSON library).
It&#8217;s brand new and &#8220;might&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Hello, fellow C hackers! (Everyone else can stop reading now.)</p>
<p>i couldn&#8217;t resist the urge: i had to try my hand at writing a JSON library for C:</p>
<p><a href="http://fossil.wanderinghorse.net/repos/cson/">http://fossil.wanderinghorse.net/repos/cson/</a></p>
<p>cson (pronounced &#8220;season&#8221;) is my first JSON API for C. Its design is based largely on that of its &#8220;genetic stepbrother&#8221;, <a title="nosjob home page" href="http://fossil.wanderinghorse.net/repos/nosjob">libnosjob</a> (C++ JSON library).</p>
<p>It&#8217;s brand new and &#8220;might&#8221; still have a few bugs. It uses more memory than it really should when reading JSON, but i hope to eventually rectify that. Its main claim is that it can read JSON from damned near anywhere and write it to damned near anywhere. I/O implementations are provided from reading/write JSON from/to C-standard FILE handles and strings, and adding support for new i/o types (e.g. C++ strings or other custom stream types) is <em>really</em> easy.</p>
<p>If you&#8217;re (still) looking for a reasonably nice C API for consuming and generating JSON data, cson might be interesting for you.</p>
<p><strong><em>Happy Hacking!</em></strong></p>
<p>&#8212;&#8211; stephan beal</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.s11n.net/?feed=rss2&amp;p=93</wfw:commentRss>
		</item>
		<item>
		<title>New Article: Doing OO in C</title>
		<link>http://blog.s11n.net/?p=91</link>
		<comments>http://blog.s11n.net/?p=91#comments</comments>
		<pubDate>Fri, 10 Dec 2010 18:09:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[StrangerThanFiction]]></category>

		<category><![CDATA[software-dev]]></category>

		<category><![CDATA[c]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.s11n.net/?p=91</guid>
		<description><![CDATA[Good evening, fellow hackers!
While i tend to write absurd amounts of technical documentation,  mostly in the form of API docs and other code documentation, it&#8217;s been  several years since i&#8217;ve published a technical article.
For those 5 or 6 remaining aspiring C programmers in the world, i&#8217;ve  got a new article which demonstrates [...]]]></description>
			<content:encoded><![CDATA[<p>Good evening, fellow hackers!</p>
<p>While i tend to write absurd amounts of technical documentation,  mostly in the form of API docs and other code documentation, it&#8217;s been  several years since i&#8217;ve published a technical <em>article</em>.</p>
<p>For those 5 or 6 remaining aspiring C programmers in the world, i&#8217;ve  got a new article which demonstrates a useful 999(shit, my left shift  key just quit working&#8230;)&#8230; ahem&#8230; demonstrates a useful (in my  opinion) model for implementing object-oriented data structures and APIs  in C. DAMMIT, AND NOW MY ENTER KEY BROKE!</p>
<p>(thank god for the numeric pad&#8217;s enter key&#8230;)</p>
<p>Since my keyboard just died, i&#8217;ll keep this short&#8230; the article is here:</p>
<p><a title="Doing OO in C" href="http://wanderinghorse.net/computing/papers/#oo_c">http://wanderinghorse.net/computing/papers/</a></p>
<p><em><strong>happy hacking1</strong></em></p>
<p>9you never truly appreciate the left shift key until it&#8217;s gone&#8230;0</p>
<p>&#8212;&#8211; stephan beal</p>
<p>Update:</p>
<p>LOL! (i&#8217;ve now got my backup keyboard&#8230;) At the very same time my keyboard broke i began being affected by this new Google Chrome bug:</p>
<p><a href="http://code.google.com/p/chromium/issues/detail?id=66071">http://code.google.com/p/chromium/issues/detail?id=66071</a></p>
<p>(Short version: mouse wheel cannot scroll up, but can scroll down.)</p>
<p>i thought, because my keyboard and mouse (in Chrome, anyway) weren&#8217;t working, that maybe my USB bus was dying.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.s11n.net/?feed=rss2&amp;p=91</wfw:commentRss>
		</item>
		<item>
		<title>Evangelism: utfcpp</title>
		<link>http://blog.s11n.net/?p=87</link>
		<comments>http://blog.s11n.net/?p=87#comments</comments>
		<pubDate>Tue, 09 Nov 2010 19:30:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[software-dev]]></category>

		<guid isPermaLink="false">http://blog.s11n.net/?p=87</guid>
		<description><![CDATA[Hello, fellow hackers!
i just wanted to take a moment to point out an extremely useful little library for handling UTF8 and UTF16 in C++: Nemanja Trifunovic&#8217;s utfcpp (http://utfcpp.sourceforge.net/)
utfcpp follows the STL&#8217;s iterator model, and this model allows one to decode and encode UTF8 and UTF16 from and to damned near anywhere using a really simple [...]]]></description>
			<content:encoded><![CDATA[<p>Hello, fellow hackers!</p>
<p>i just wanted to take a moment to point out an extremely useful little library for handling UTF8 and UTF16 in C++: Nemanja Trifunovic&#8217;s utfcpp (<a href="http://utfcpp.sourceforge.net/">http://utfcpp.sourceforge.net/</a>)</p>
<p>utfcpp follows the STL&#8217;s iterator model, and this model allows one to decode and encode UTF8 and UTF16 from and to damned near anywhere using a <em>really simple</em> API.</p>
<p>If you have to deal with UTF encoding/decoding in your C++ applications, i can heartily recommend utfcpp. It&#8217;s trivial to use, it has a header-only implementation with no external dependencies (except the STL), and it has very liberal licensing conditions (basically &#8220;do what you want, but keep this copyright notice intact&#8221;).</p>
<p>Happy hacking!</p>
<p>&#8212;&#8211; stephan beal</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.s11n.net/?feed=rss2&amp;p=87</wfw:commentRss>
		</item>
		<item>
		<title>Achtung Ubuntu 10.4 users: data loss</title>
		<link>http://blog.s11n.net/?p=86</link>
		<comments>http://blog.s11n.net/?p=86#comments</comments>
		<pubDate>Fri, 30 Apr 2010 00:38:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.s11n.net/?p=86</guid>
		<description><![CDATA[i&#8217;m just so frigging sick to my stomach at the moment because Ubuntu 10.4 ate my home directory, and i wanted to take a moment to warn other Ubuntu upgraders about a data-loss scenario.
Full details are in the bug report:
https://bugs.launchpad.net/ubuntu/+bug/571958
If you&#8217;re going to use Ubuntu 10.4, make damned sure your shell scripts do not depend [...]]]></description>
			<content:encoded><![CDATA[<p>i&#8217;m just so frigging sick to my stomach at the moment because Ubuntu 10.4 ate my home directory, and i wanted to take a moment to warn other Ubuntu upgraders about a data-loss scenario.</p>
<p>Full details are in the bug report:</p>
<p><a href="https://bugs.launchpad.net/ubuntu/+bug/571958">https://bugs.launchpad.net/ubuntu/+bug/571958</a></p>
<p>If you&#8217;re going to use Ubuntu 10.4, make damned sure your shell scripts do not depend on case-sensitive shell expansion!</p>
<p>(Yes, i have backups, but i&#8217;ve got to pull them from 20 different source repos and a 15GB Dropbox, and the whole point of the exercise which revealed the bug was to avoid having to pull down 30GB of data from the net.)</p>
<p>&gt;:-(</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.s11n.net/?feed=rss2&amp;p=86</wfw:commentRss>
		</item>
		<item>
		<title>A live previewer/editor for Google Code Wiki</title>
		<link>http://blog.s11n.net/?p=85</link>
		<comments>http://blog.s11n.net/?p=85#comments</comments>
		<pubDate>Thu, 22 Apr 2010 12:54:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.s11n.net/?p=85</guid>
		<description><![CDATA[Hi, all!
And how for something very different&#8230;
A couple of days ago i was looking for JavaScript code which can parse the Google Code wiki syntax reasonably well. i stumbled upon (via a link in a bug report) some code by Fabien Ménager which did most of the work. After coming across a few too many [...]]]></description>
			<content:encoded><![CDATA[<div>Hi, all!</p>
<p>And how for something very different&#8230;</p>
<p>A couple of days ago i was looking for JavaScript code which can parse the Google Code wiki syntax reasonably well. i stumbled upon (via a link in a bug report) some code by Fabien Ménager which did most of the work. After coming across a few too many corner cases, i sat down to re-implement the parser using a char-by-char scan, rather than regexes, for most of the work.</p>
<p>It&#8217;s now about 20 hours after that work started, i haven&#8217;t slept in 26 hours, and Fabien and i now have:</p>
<ul>
<li>A reasonable parser (only missing a few markup features): <a title="http://code.google.com/p/wikiwym/" href="http://code.google.com/p/wikiwym/" target="_blank">http://code.google.com/p/wikiwym/</a></li>
<li>An application to demo it: <a title="http://wikiwym.googlecode.com/svn/trunk/index.html" href="http://wikiwym.googlecode.com/svn/trunk/index.html" target="_blank">http://wikiwym.googlecode.com/svn/trunk/index.html</a></li>
<li>And another application which allows the user to load arbitrary wiki pages from arbitrary Google Code-hosted projects and preview them in raw and HTML modes. That code can then be pasted back into the Google Code wiki editor when editing is finished: <a title="http://fossil.wanderinghorse.net/demos/wikiwym/" href="http://fossil.wanderinghorse.net/demos/wikiwym/" target="_blank">http://fossil.wanderinghorse.net/demos/wikiwym/</a></li>
</ul>
<p>Basically, that last app provides an editor environment for people who edit wiki pages of arbitrary Google Code projects. The app cannot save the data back to Google Code for you, but it provides a relatively effective interface for editing wiki markup. If you make a mistake while typing in the editor, for example forgetting to close an inlined markup tag (bold, italics, etc.), the preview mode will prominently mark the error so you know where to fix it (and what to fix).</p>
<p>If you&#8217;re looking for a wiki parser implementation in JavaScript, this one might just suit you. If you&#8217;re a parser guru and would like to help us improve the parser, then please get in touch!</p>
<p><strong><em>Happy hacking!</em></strong></p>
<p>&#8212;&#8211; stephan beal</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.s11n.net/?feed=rss2&amp;p=85</wfw:commentRss>
		</item>
	</channel>
</rss>
