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

<channel>
	<title>mihai.ibanescu.net</title>
	<atom:link href="http://mihai.ibanescu.net/feed" rel="self" type="application/rss+xml" />
	<link>http://mihai.ibanescu.net</link>
	<description>Mihai&#039;s few cents</description>
	<lastBuildDate>Mon, 15 Feb 2010 22:47:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Canonul cel mare al Sf. Andrei Criteanul</title>
		<link>http://mihai.ibanescu.net/canonul-cel-mare-al-sf-andrei-criteanul</link>
		<comments>http://mihai.ibanescu.net/canonul-cel-mare-al-sf-andrei-criteanul#comments</comments>
		<pubDate>Mon, 15 Feb 2010 22:47:54 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Orthodoxy]]></category>

		<guid isPermaLink="false">http://mihai.ibanescu.net/?p=126</guid>
		<description><![CDATA[Puteţi asculta Canonul cel Mare aici.
(if you cannot read above this line: it&#8217;s a link to the Great Canon of St. Andrew of Crete, officiated during the first week of the Great Lent).
]]></description>
			<content:encoded><![CDATA[<p>Puteţi asculta Canonul cel Mare <a href="http://www.seminarulsfandrei.ro/index.php?option=com_content&amp;view=article&amp;id=52:canonul-cel-mare-al-sfantului-andrei-criteanul">aici</a>.</p>
<p>(if you cannot read above this line: it&#8217;s a link to the Great Canon of St. Andrew of Crete, officiated during the first week of the Great Lent).</p>
]]></content:encoded>
			<wfw:commentRss>http://mihai.ibanescu.net/canonul-cel-mare-al-sf-andrei-criteanul/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sycamore Scramble</title>
		<link>http://mihai.ibanescu.net/sycamore-scramble</link>
		<comments>http://mihai.ibanescu.net/sycamore-scramble#comments</comments>
		<pubDate>Sun, 07 Feb 2010 00:41:48 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Orienteering]]></category>
		<category><![CDATA[Sports]]></category>

		<guid isPermaLink="false">http://mihai.ibanescu.net/?p=123</guid>
		<description><![CDATA[Orienteering, software and printers, oh my!]]></description>
			<content:encoded><![CDATA[<p>The local orienteering club, <a href="http://backwoodsok.org">BOK</a>, is organizing an <a href="http://backwoodsok.org/sycamore-scramble">A-meet</a> (i.e. a national event), February 20-21. I&#8217;ve signed up to be one of the setter/vetters.</p>
<p>It&#8217;s very interesting how we decided to make sure we minimize the risk for mistakes when setting up controls, and in a way it&#8217;s an <a href="http://en.wikipedia.org/wiki/OCD">OCD</a>-er&#8217;s dream. There are at least three setters that will go out and hang ribbons where the controls are placed. Then, two other persons (the vetters) have to go and vet (approve) the location chosen by the setter. Setters have the liberty to move the control from where the course designer suggested the location to be, for example if a feature is missing or is too dangerous to get to; vetters should try hard not to move controls, unless they were set wrong.</p>
<p>This gives you triple accountability for a control&#8217;s location, not to mention that some of the club members will have a practice run of the courses the week prior to the meet (which happens to be next weekend).</p>
<p>Today I spent more than 4 hours vetting. Now I am barely moving. Probably getting into the warm house after all that time in the balmy 34-36°F (1-2°C) did not help much. However, this is exactly what I need, hopefully the small injuries I&#8217;ve been accumulating over the past couple of months will eventually go away to let me go back to running on a more regular schedule.</p>
<p>I&#8217;ve also worked on a solution to download data from an Sportident box on a Linux computer (it might work on Windows too, since it&#8217;s written in python, and I believe <a href="http://pyserial.sourceforge.net/">pyserial</a> does work on Windows. It has sound to alert users if their download was unsuccessful (more about that in a future post), and generates a PDF for the splits and total time; I think the printing part is going to be the one that will cause most of the problems, I seem to have bad luck with printers in general. (The printing part would definitely not work on Windows). At some point I will publish the code, maybe someone else has a use for it.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihai.ibanescu.net/sycamore-scramble/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>20 years later&#8230; (or: the ends justify the means)</title>
		<link>http://mihai.ibanescu.net/20-years-later-or-the-ends-justify-the-means</link>
		<comments>http://mihai.ibanescu.net/20-years-later-or-the-ends-justify-the-means#comments</comments>
		<pubDate>Tue, 22 Dec 2009 16:14:20 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://mihai.ibanescu.net/?p=121</guid>
		<description><![CDATA[Thoughts about politics, 20 years after the fall of communism in Romania.]]></description>
			<content:encoded><![CDATA[<p>20 years ago, on this day, Romania&#8217;s president at the time, <a href="http://en.wikipedia.org/wiki/Ceausescu">Nicolae Ceauşescu</a>, fled under pressure from the large popular uprise which we call The Revolution.</p>
<p>Three days later, they were executed, after something that pretended to be a trial. Over the past days, a <a href="http://adevarul.ro">Romanian newspaper</a> ran <a href="http://adevarul.ro/sfarsitul_ceausestilor/Drumul_spre_moarte_masoara_62_de_metri_0_174583036.html">the timeline</a> of the events, tracking the movements of Ceauşescu and his wife. The trial was filmed, and it exposed the truth about &#8220;revolutions&#8221;: in order to gain legitimacy, both for the Romanian people and for the foreign governments, they needed to show there was a trial. They also needed the former president executed, partly as an attempt to stop the attacks from terrorists (special forces allegedly trained by the former president as elite units that would protect him) against the population and the military forces.</p>
<p>20 years later, said terrorists are still nowhere to be found. The attacks were just various branches of the military not knowing what to do, and pulling the trigger against each other.</p>
<p>20 years later, the goal of the trial is ever more obvious: the new political class (which was really not that new to begin with) needed no roadblocks from the old president; they wanted the president eliminated, and they came up with a plan that would help their recognition from the rest of the world as a legitimate government.</p>
<p>The accusations against Ceauşescu were not sustainable in a real court. 20 years tend to erase some of the bad memories from the terrible times of his reign, so I may be missing a lot of the details about how bad it used to be (and, believe me, communist Romania was bad). But the new political class decided that the ends justify the means.</p>
<p>In the end, I personally believe that people give the institution of presidency too much credit. (And this applies not just to Romania, pre or post December 1989). I believe Ceauşescu was being presented with a very rosy picture about Romania, by the people around him, some of them who eventually were the ones to kill him. He was an old man, some argue he was senile, and the powers behind the curtain liked the status quo, until it became non-profitable. He was merely a symbol &#8211; the symbol of the extreme-left communism, in a Europe that was trying to get rid of the East-West separation. He probably truly believed in his ideas, completely oblivious to the real economic and social facts. His ignorance could be blamed on his age or medical conditions, but I would much rather blame it on his entourage that handled the smoke and mirrors.</p>
<p>December 22, 1989 &#8211; I remember that my parents were coming back from a visit from my grandparents, and I was home, alone, vacuuming and cleaning up for Christmas. And, for some unknown reason, I turned on the TV. This makes very little sense now for me, just like it probably does not make any sense for you &#8211; but we were only having 2 hours of TV per day, and most of it was just news anyway. There usually was nothing (as in no signal) on a Friday morning. And yet, there he was, talking about something I did not pay attention to. And then the audience (which was normally cheerful and would acclaim him after each sentence) started booing him. That was unheard of! An hour or so later, when my parents came home, they would not believe me.</p>
<p>And from that point on, Romania was glued to the TV &#8211; the same thing we all ignored for the most part until that day.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihai.ibanescu.net/20-years-later-or-the-ends-justify-the-means/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A new low in spelling</title>
		<link>http://mihai.ibanescu.net/a-new-low-in-spelling</link>
		<comments>http://mihai.ibanescu.net/a-new-low-in-spelling#comments</comments>
		<pubDate>Fri, 18 Dec 2009 16:44:57 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Babbling]]></category>

		<guid isPermaLink="false">http://mihai.ibanescu.net/?p=119</guid>
		<description><![CDATA[Saw this last night on one of the local TV stations: &#8220;Happy Holiday&#8217;s!&#8221;
I&#8217;m sorry, I meant, on one of the local TV station&#8217;s. Because noun&#8217;s should have apostrophe&#8217;s.
]]></description>
			<content:encoded><![CDATA[<p>Saw this last night on one of the local TV stations: &#8220;Happy Holiday&#8217;s!&#8221;</p>
<p>I&#8217;m sorry, I meant, on one of the local TV station&#8217;s. Because noun&#8217;s should have apostrophe&#8217;s.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihai.ibanescu.net/a-new-low-in-spelling/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fall activities</title>
		<link>http://mihai.ibanescu.net/fall-activities</link>
		<comments>http://mihai.ibanescu.net/fall-activities#comments</comments>
		<pubDate>Thu, 15 Oct 2009 16:01:09 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Babbling]]></category>
		<category><![CDATA[Orienteering]]></category>
		<category><![CDATA[Running]]></category>

		<guid isPermaLink="false">http://mihai.ibanescu.net/?p=117</guid>
		<description><![CDATA[A quick update on my non-work related activities.
A lot of orienteering lately:

 Quick white course at Lake Bond with my daughter a few weeks ago.
A very eventful Birkhead Wilderness run. You can read the report in the comments &#8211; I don&#8217;t think there was one single participant to get all the controls right. I messed [...]]]></description>
			<content:encoded><![CDATA[<p>A quick update on my non-work related activities.</p>
<p>A lot of orienteering lately:</p>
<ul>
<li> Quick white course at Lake Bond with my daughter a few weeks ago.</li>
<li>A very eventful <a href="http://backwoodsok.org/birkhead-wilderness-9272009-advanced-event-results">Birkhead Wilderness</a> run. You can read the report in the comments &#8211; I don&#8217;t think there was one single participant to get all the controls right. I messed up the first two and had a relatively clean run after that, especially after I started to pace count.</li>
<li>A quick <a href="http://backwoodsok.org/sprint-event-at-lake-crabtree-park-on-october-11">Bond Park sprint</a>. I kind of had the home field advantage, and I was still slower than the fast runners.</li>
</ul>
<p>I ran for the first time with the <a href="http://www.raleightrailrunners.org/">Raleigh Trail Runners</a>. I knew I signed up for pain, and pain it was. 2.5 miles at a slow speed, 6 uphill sprints on the Graveyard Hill at Umstead (off of Old Reedy Creek), and back 2.5 miles; last 2 miles were 7:50 and 6:50 minutes respectively. Maybe we were trying to make it back before it got too dark. As I said to the other (3) runners, it&#8217;s no surprise so few people sign up for hill sprints.</p>
<p>My daughter started to take piano lessons, so a piano had to be acquired. We got a <a href="http://www.casio-europe.com/euro/emi/digitalpianos/ap200/">digital piano</a> which seemed like a good compromise of quality vs. price.</p>
<p>Between fixing stuff up around the house I&#8217;d like to get back to some recreational programming (picking up Flex would be nice).</p>
]]></content:encoded>
			<wfw:commentRss>http://mihai.ibanescu.net/fall-activities/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prize for trash</title>
		<link>http://mihai.ibanescu.net/prize-for-trash</link>
		<comments>http://mihai.ibanescu.net/prize-for-trash#comments</comments>
		<pubDate>Wed, 02 Sep 2009 02:02:40 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Sports]]></category>

		<guid isPermaLink="false">http://mihai.ibanescu.net/?p=115</guid>
		<description><![CDATA[One of the novel ideas (at least for me) for the Gleneagles Challenge Adventure Racing was a prize for the most unusual piece of trash one can collect from the course. I think it was a great way to encourage us to clean up the courses, but even more so to become painfully aware of [...]]]></description>
			<content:encoded><![CDATA[<p>One of the novel ideas (at least for me) for the <a href="http://adventureracing.meetup.com/17/calendar/10663214/">Gleneagles Challenge Adventure Racing</a> was a prize for the most unusual piece of trash one can collect from the course. I think it was a great way to encourage us to clean up the courses, but even more so to become painfully aware of the price of littering.</p>
<p>It is not fun running with a wheelbarrow <img src='http://mihai.ibanescu.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  I kept seeing it in a ditch at Lake Bond for the past couple of weeks, and was wondering who&#8217;s going to pick up; my teammates decided to break it in two pieces (the cup and the handles &#8211; there was no wheel), and we took turns carrying the parts. That was enough to earn us the prize <img src='http://mihai.ibanescu.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://mihai.ibanescu.net/prize-for-trash/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My First Adventure Race</title>
		<link>http://mihai.ibanescu.net/my-first-adventure-race</link>
		<comments>http://mihai.ibanescu.net/my-first-adventure-race#comments</comments>
		<pubDate>Sun, 30 Aug 2009 03:58:36 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Orienteering]]></category>
		<category><![CDATA[Running]]></category>
		<category><![CDATA[Sports]]></category>

		<guid isPermaLink="false">http://mihai.ibanescu.net/?p=113</guid>
		<description><![CDATA[Today I participated in the Gleneagles Challenge. I must say it was a lot more fun than I expected from an event that takes 4.5 hours and requires you to be constantly on the move.
About 20 minutes of running, 30 minutes in the kayak, an orienteering course and a lot of bike riding. The bike&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Today I participated in the <a href="http://adventureracing.meetup.com/17/calendar/10663214/">Gleneagles Challenge</a>. I must say it was a lot more fun than I expected from an event that takes 4.5 hours and requires you to be constantly on the move.</p>
<p>About 20 minutes of running, 30 minutes in the kayak, an orienteering course and a lot of bike riding. The bike&#8217;s odometer showed 19.33 miles when I got back home (that included about 3 miles to get to Lake Bond and back).</p>
<p>Thanks to Bryan, Rob and Justin for letting me join them. Overall I think we did pretty well, second place when we only aimed to finish the race in one piece.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihai.ibanescu.net/my-first-adventure-race/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>keyutils, python and you</title>
		<link>http://mihai.ibanescu.net/keyutils-python-and-you</link>
		<comments>http://mihai.ibanescu.net/keyutils-python-and-you#comments</comments>
		<pubDate>Fri, 31 Jul 2009 02:37:32 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://mihai.ibanescu.net/?p=110</guid>
		<description><![CDATA[Over the weekend I wrote  Python bindings for keyutils. So this blog announces python-keyutils.
If you are not familiar with keyutils, it is a library that allows you to securely store sensitive information, directly inside the Linux kernel. You have a reasonable guarantee that the information cannot be retrieved from the memory or swap.
keyutils comes [...]]]></description>
			<content:encoded><![CDATA[<p>Over the weekend I wrote  Python bindings for <a href="http://people.redhat.com/~dhowells/keyutils/">keyutils</a>. So this blog announces <a href="http://bitbucket.org/rpathsync/python-keyutils/overview/">python-keyutils</a>.</p>
<p>If you are not familiar with keyutils, it is a library that allows you to securely store sensitive information, directly inside the Linux kernel. You have a reasonable guarantee that the information cannot be retrieved from the memory or swap.</p>
<p>keyutils comes with a binary, <a href="http://linux.die.net/man/1/keyctl">keyctl</a><a href="http://linux.die.net/man/1/keyctl">(1)</a>, that gives you access to the kernel&#8217;s key management facilities. The man page describes the types of available keyrings. The ones the most interesting to the use case I had in mind were the per-thread, per-process and per-session keyrings.</p>
<p>The need for python bindings came when we realized that our release process requires typing the passphrase for signing packages way too many times, so there was a real need for a key agent of some sort. Searching for gpg-agent protocol specifications (or seahorse) returned some information, but nothing I could readily use (I may not have found the proper examples for speaking assuan; the end result was that I could not get anywhere in this direction).</p>
<p>Future versions of <a href="http://wiki.rpath.com/wiki/Conary">Conary</a> will have the ability to read passphrases from the session keyring, if python-keyutils is installed. You can get python-keyutils from either contrib.rpath.org@rpl:2 or foresight.rpath.org@fl:2-devel (depending on whether you need the python 2.4 or python 2.6 version).</p>
<p>Keep in mind that I only implemented the bare minimum I needed for being able to set and get key information. There are other functions the library provides, that could be useful to have. If you find the need for one, let me know; as usual, patches will be cheerfully accepted.</p>
<p>The code is hosted on <a href="http://bitbucket.org/rpathsync/python-keyutils/overview/">bitbucket</a> and can be checked out with <a href="http://mercurial.selenic.com/wiki/">Mercurial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihai.ibanescu.net/keyutils-python-and-you/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vote for Cary as the best place to play tennis</title>
		<link>http://mihai.ibanescu.net/vote-for-cary-as-best-tennis-tow</link>
		<comments>http://mihai.ibanescu.net/vote-for-cary-as-best-tennis-tow#comments</comments>
		<pubDate>Tue, 21 Jul 2009 14:39:59 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Sports]]></category>

		<guid isPermaLink="false">http://mihai.ibanescu.net/?p=108</guid>
		<description><![CDATA[Please vote for Cary!
The winner of the 2009 Best Tennis Town award will take home $100,000 to be used for community wide programming or facility enhancements that the winning entrant endorses, and the community will be recognized during the 2009 U.S. Open.
According to the town of Cary:
To support tennis, the Town of Cary constructed the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.besttennistown.com/ ">Please vote for Cary!</a></p>
<blockquote><p><span style="font-family: sans-serif; font-size: x-small;">The winner of the 2009 Best Tennis Town award will take home $100,000 to be used for community wide programming or facility enhancements that the winning entrant endorses, and the community will be recognized during the 2009 U.S. Open.</span></p></blockquote>
<p>According to the town of Cary:</p>
<blockquote><p><span style="font-family: sans-serif; font-size: x-small;">To support tennis, the Town of Cary constructed the Cary Tennis Park with 30 championship lighted courts, later converting one court to four permanent 36-foot QuickStart courts, making the Tennis Park the largest in North Carolina and one of the largest in the Southeast.  The Town also boasts 25 other tennis courts at four parks &#8212; Annie L. Jones Park, Harold S. Dunham Park, Robert V. Godbold Park, and Middle Creek School Park.   Furthermore, the Town has assembled top notch staff charged with operating the tennis program with a team based philosophy. </span></p>
<p><span style="font-family: sans-serif; font-size: x-small;">In addition to the Town’s tennis facilities, there are more than 200 tennis courts in Cary including public courts, private clubs, schools, businesses, and HOA facilities.  There are more than 20,317 people participating in organized tennis activities in Cary including Town programs, Western Wake Tennis Association tournaments and leagues, private club programs, corporate leagues and adult social leagues.  Many of these organizations work together to provide adult league play, junior league play, charitable organization fundraiser events, QuickStart tennis programs with local elementary school PE classes, Bridge II Sport’s wheelchair tennis program and local public and private high school teams. </span></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://mihai.ibanescu.net/vote-for-cary-as-best-tennis-tow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>python: the dangers of assert</title>
		<link>http://mihai.ibanescu.net/python-the-dangers-of-assert</link>
		<comments>http://mihai.ibanescu.net/python-the-dangers-of-assert#comments</comments>
		<pubDate>Wed, 01 Jul 2009 19:50:58 +0000</pubDate>
		<dc:creator>misa</dc:creator>
				<category><![CDATA[Babbling]]></category>

		<guid isPermaLink="false">http://mihai.ibanescu.net/?p=100</guid>
		<description><![CDATA[I ran into a piece of code that looked like this:

import threading

class A(threading.Thread):
    def run(self):
        self.foo()

    def foo(self):
        assert(threading.currentThread() != self, "Blah?")
        print threading.currentThread() == self

a = A()
a.start()
a.foo()
a.join()

In [...]]]></description>
			<content:encoded><![CDATA[<p>I ran into a piece of code that looked like this:</p>
<blockquote>
<pre>import threading

class A(threading.Thread):
    def run(self):
        self.foo()

    def foo(self):
        assert(threading.currentThread() != self, "Blah?")
        print threading.currentThread() == self

a = A()
a.start()
a.foo()
a.join()</pre>
</blockquote>
<p>In the original code, there was no a.foo() invocation, because that would have triggered the assertion. Or so it was thought. I added it for my own edification.</p>
<p>The intention was for the foo() method to be callable only from within the running thread. In my quick test above, a.foo() should have failed.</p>
<p>There were two problems with that piece of code. First, it was not failing. Second, in python 2.6 you get a warning whenever you use assert with paranthesis. This is very deliberate, since assert is not a function. Using paranthesis will simply pass a tuple to the assert construct, and the tuple will always evaluate to True.</p>
<p>Very dutifully, I removed the paranthesis, and moved on to do some other things (and I even forgot I did it). A few days later, a coworker reported problems with the code.</p>
<p>As it turned out, the assert was hiding a very old bug &#8211; the condition should have checked for equality, not inequality. But since the condition _and_ the error message were paranthesized, the code passed no matter what you did. Removing the warning uncovered the problem, probably 3 years later.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihai.ibanescu.net/python-the-dangers-of-assert/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
