<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">

  <id>tag:ttm.appspot.com,2008-07-12:/blog/</id>
  <title>Hugo's Blog</title>
  <updated>2009-11-11T22:30:18Z</updated>
  
  <link rel="alternate" href="http://ttm.appspot.com/blog/" />

  <link rel="self" href="http://feeds.feedburner.com/ttm_appspot" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
    <id>tag:ttm.appspot.com,2009-11-11:/blog/2009/11/11/survival-technique-1-quick-bounce-back/</id>
    <title type="html">Survival Technique #1: Quick Bounce-Back!</title>
    <updated>2009-11-11T22:30:18Z</updated>
    <author>
      <name>Hugo</name>
    </author>
    <content type="html">&lt;p&gt;Whole new continent, whole new culture, whole new community, whole new phase in life (first full-time job)...&lt;/p&gt;
&lt;p&gt;One of the most influential things I learned in helping my survival here, is to &lt;em&gt;bounce back quickly&lt;/em&gt;. Obviously there are times that are rough. I think I experienced the first rough bits just under a year ago. Ugly rough is when those rough bits last multiple days: a week of struggles with myself in my new context. Rough patches still happen, but the thing that makes the biggest difference is that they no longer last longer than a day!&lt;/p&gt;
&lt;p&gt;It took some work, I recall consciously trying to swing my mindset back into positive, and feeling success every time I succeeded. &lt;em&gt;Faith restored!&lt;/em&gt; When another rough patch hits? When doubt plagues again? Another opportunity to learn to swing back to positive. Victory was recovering in only a couple of days.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Now&lt;/em&gt; victory is &lt;em&gt;always&lt;/em&gt; recovering with sleep.&lt;/p&gt;
&lt;p&gt;It feels like I can now wake up fresh and rejuvenated &lt;em&gt;every&lt;/em&gt; morning — no matter how insecure and down I felt the previous day. A good night's rest, or even a not-so-good-night's-rest, permits me to forget the woes of the previous day and positively recommit to the second year's work (for now I'm thinking no more than a year ahead).&lt;/p&gt;
&lt;p&gt;Somewhat recently (could have been September?) I recall two days' roughness back-to-back, but those were still two independent days, not one big &lt;em&gt;blah&lt;/em&gt;. Yesterday (Tuesday) was extraordinarily rough as well, but today was wonderful again. (Even if I didn't feel productive enough.)&lt;/p&gt;
&lt;hr class="docutils" /&gt;
&lt;p&gt;So there, the first navel-gazing post. There might be more of these, for example on the topics of which are the things that cause these rough patches, and on the flip side, what things makes me happy (and they might not be imported). Now you know what kind of post I was talking about in the &lt;a class="reference" href="http://ttm.appspot.com/blog/2009/11/10/self-centred-egocentric-navel-gazing/"&gt;previous&lt;/a&gt; post. (I have not yet stopped pushing them to Facebook, but I will. At the very least, I'll be selective.)&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ttm_appspot/~4/Fm-c8hgrFvs" height="1" width="1"/&gt;</content>
    
    <link rel="alternate" href="http://feedproxy.google.com/~r/ttm_appspot/~3/Fm-c8hgrFvs/" />
    <published>2009-11-11T22:30:18Z</published>
  <feedburner:origLink>http://ttm.appspot.com/blog/2009/11/11/survival-technique-1-quick-bounce-back/</feedburner:origLink></entry>

  <entry>
    <id>tag:ttm.appspot.com,2009-11-10:/blog/2009/11/10/self-centred-egocentric-navel-gazing/</id>
    <title type="html">Self-centred Egocentric Navel-Gazing</title>
    <updated>2009-11-10T21:48:03Z</updated>
    <author>
      <name>Hugo</name>
    </author>
    <content type="html">&lt;p&gt;Suggest some more tautology to add to the words in the title! ;-)&lt;/p&gt;
&lt;p&gt;Since I'm drifting in that direction with this 'lil blog, I'm going to stop pushing posts to Facebook and elsewhere. Friends that are crazy enough to be interested in my silly navel-gazing posts are surely already subscribed to the atom feed? Or off-their-rocker enough to actually visit the site on some sort of regular basis. Yikes.&lt;/p&gt;
&lt;p&gt;If anyone else is reading this and thinking &amp;quot;I still want to see those silly and absurd posts!&amp;quot;, please let me know. (Leave a comment, whatever.)&lt;/p&gt;
&lt;p&gt;&amp;quot;Pull is better than push&amp;quot;, my general philosophy with regards to blogging and status updates.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ttm_appspot/~4/z5Cj05vogr0" height="1" width="1"/&gt;</content>
    
    <link rel="alternate" href="http://feedproxy.google.com/~r/ttm_appspot/~3/z5Cj05vogr0/" />
    <published>2009-11-10T21:48:03Z</published>
  <feedburner:origLink>http://ttm.appspot.com/blog/2009/11/10/self-centred-egocentric-navel-gazing/</feedburner:origLink></entry>

  <entry>
    <id>tag:ttm.appspot.com,2009-11-09:/blog/2009/11/9/another-on-call-week/</id>
    <title type="html">Another On-call Week</title>
    <updated>2009-11-09T22:20:59Z</updated>
    <author>
      <name>Hugo</name>
    </author>
    <content type="html">&lt;p&gt;Time for some more news updates? A quick pair of paragraphs to break the ice that's been forming...&lt;/p&gt;
&lt;p&gt;My job has me on two different on-call rotations. One rotation is more hectic/serious but not as often, while the other is every three weeks. This week I'm on-call for both, meaning it will be another one of those weeks in which I don't go anywhere during the weekend. And I will possibly fall back into the bad habit of spending more than 12 hours a day in the office, on more than one day this week. (I'm at one already, today: Monday.) No worries though, I'm not actually working solidly for 12 hours, I also do some relaxing at the office! It's just find it more convenient to stick around.&lt;/p&gt;
&lt;p&gt;Anyway, that bad habit is unhealthy and has to be fixed, at least for other weeks. If I can limit it to only about twice a quarter, that should be good.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ttm_appspot/~4/KDZy6RYRK98" height="1" width="1"/&gt;</content>
    
    <link rel="alternate" href="http://feedproxy.google.com/~r/ttm_appspot/~3/KDZy6RYRK98/" />
    <published>2009-11-09T22:20:59Z</published>
  <feedburner:origLink>http://ttm.appspot.com/blog/2009/11/9/another-on-call-week/</feedburner:origLink></entry>

  <entry>
    <id>tag:ttm.appspot.com,2009-10-03:/blog/2009/10/3/one-year-and-counting/</id>
    <title type="html">One Year and Counting</title>
    <updated>2009-10-03T13:39:45Z</updated>
    <author>
      <name>Hugo</name>
    </author>
    <content type="html">&lt;p&gt;It's been just over 13 months, or 57 weeks, since I relocated. Kinda scary to think back of it like that, especially if you let your thoughts drift in the direction of &amp;quot;life's short&amp;quot;! ;-)&lt;/p&gt;
&lt;p&gt;I thought I'll write some more personal updates here. I'm curious who reads these and what they're after: if there's a subset of this stream you would like to read, let me know. I will probably branch out other blogs or something for more focused topics.&lt;/p&gt;
&lt;p&gt;This one will become my &amp;quot;I don't care what I write here&amp;quot; outlet again, in terms of having no particularly focused topic anyway. First up, I'll probably write some &amp;quot;life in Europe&amp;quot; updates. Requests and feedback welcome.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ttm_appspot/~4/DuGRB3uq1qs" height="1" width="1"/&gt;</content>
    
    <link rel="alternate" href="http://feedproxy.google.com/~r/ttm_appspot/~3/DuGRB3uq1qs/" />
    <published>2009-10-03T13:39:45Z</published>
  <feedburner:origLink>http://ttm.appspot.com/blog/2009/10/3/one-year-and-counting/</feedburner:origLink></entry>

  <entry>
    <id>tag:ttm.appspot.com,2009-08-09:/blog/2009/8/9/niks-recent-/</id>
    <title type="html">Nik's Recent &lt;em&gt;Zurich in a Weekend&lt;/em&gt; Posts</title>
    <updated>2009-08-09T14:43:00Z</updated>
    <author>
      <name>Hugo</name>
    </author>
    <content type="html">&lt;p&gt;A colleague of mine wrote four &amp;quot;Visiting Zurich&amp;quot; blog posts about what he did with friends that visited him in Zürich for a weekend. The posts are:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference" href="http://try-dot-ch.blogspot.com/2009/07/visiting-zurich-day-one.html"&gt;Day One&lt;/a&gt; (Friday from mid-afternoon)&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://try-dot-ch.blogspot.com/2009/07/visiting-zurich-day-two-pt-1.html"&gt;Day Two (pt 1)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://try-dot-ch.blogspot.com/2009/07/visiting-zurich-day-two-pt-2.html"&gt;Day Two (pt 2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://try-dot-ch.blogspot.com/2009/07/visiting-zurich-day-three.html"&gt;Day Three&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I thought these may be useful and couldn't find a nice index to the four, hence creating my own here.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ttm_appspot/~4/3Xx7lx-53SI" height="1" width="1"/&gt;</content>
    
    <link rel="alternate" href="http://feedproxy.google.com/~r/ttm_appspot/~3/3Xx7lx-53SI/" />
    <published>2009-08-09T14:43:00Z</published>
  <feedburner:origLink>http://ttm.appspot.com/blog/2009/8/9/niks-recent-/</feedburner:origLink></entry>

  <entry>
    <id>tag:ttm.appspot.com,2009-05-10:/blog/2009/5/10/the-future-of-my-voting-system/</id>
    <title type="html">The Future of my Voting System</title>
    <updated>2009-05-10T11:52:52Z</updated>
    <author>
      <name>Hugo</name>
    </author>
    <content type="html">&lt;p&gt;A few years ago I developed a voting system for use in the residence I was staying at. It evolved a bit over time, but each implementation or partial rewrite was a rushed job (one, maybe two weekends). The goal was to get something robust and reliable and &lt;em&gt;easy to use&lt;/em&gt;, a later iteration supporting ranked ballots and &lt;a class="reference" href="http://en.wikipedia.org/wiki/Ranked_Pairs"&gt;Maximum Majority Voting&lt;/a&gt;. Making it &lt;em&gt;easy to set up&lt;/em&gt; was not something I had had time for. Consequently, you need an experienced Linux geek to do that part.&lt;/p&gt;
&lt;p&gt;In the years after I left, I was still in town. So I could go help them set it up when the time comes each year. 2006, 2007... and then the fateful 2008. I recently accepted a job in Europe, so I was packing up. Didn't have the time for the rewrite, as I had since realised it would take quite a bit of effort. But I could still set it up, shortly before I fly. And do the rewrite for 2009.&lt;/p&gt;
&lt;p&gt;That's where we learn reliability lessons, lessons that we all already know, but brought into sharp focus the hard way: &lt;em&gt;you need a failover system&lt;/em&gt;. A few days after the election, I found out the computer I set it up on had died, and they didn't stand a chance getting it running again on another, so they went back to a &lt;em&gt;paper election&lt;/em&gt;. &amp;lt;cringe&amp;gt;&lt;/p&gt;
&lt;p id="more"&gt;Anyway, to cut a long story short, the time has come for the rewrite. The election usually takes place around August. I heard rumours they may use a different system (rumours of another system being developed). If they do, I don't blame them. If they do that, it would probably mean bye-bye to the Condorcet voting method? :-( But all of that is out of my hands. I'm rewriting my voting system anyway. It unfortunately spells delays for Other Important Personal Pet Projects (TM), as I'm setting an end-of-June deadline for this rewrite. (Optimism: I should be done by mid-June? At least with Part One of the rewrite plans.)&lt;/p&gt;
&lt;p&gt;The rewrite will have two phases: the first is an implementation running on a local machine, to mimic the way we used it in the past. Setup needs to be &amp;quot;download and run&amp;quot;. Secondary goal, if it proves easy, which I hope it does: support any operating system for which Python is available.&lt;/p&gt;
&lt;p&gt;Second phase: implement it on Google AppEngine, then it will be available for everyone, everywhere. Which will not be diversely useful until I implement a more online way of handing out ballots, the original system is meant for real-world elections, people are ticked off on a list and given a ballot identified by a random number. An online vote has some other considerations to take care of.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Technical Details&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The old (current) system had a crazy set of dependencies ­­— implemented on what I knew well at the time, rather than what would be easy to get up and running. Since I was there to run it. Dependencies:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference" href="http://www.python.org/"&gt;Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; — I used database constraints for pretty much all of the error checking. The Python code merely catches the exceptions and reports the errors.&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://pypi.python.org/pypi/psycopg/1.1.21"&gt;psycopg&lt;/a&gt; for the python adapter to connect to the database&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://people.csail.mit.edu/jrennie/python/numeric/"&gt;python-numeric&lt;/a&gt; for the 2D array class to tally the vote&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://www.mems-exchange.org/software/quixote/"&gt;Quixote&lt;/a&gt; (first version 1, later version 2) as the web &amp;quot;framework&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://www.mems-exchange.org/software/scgi/"&gt;python-scgi&lt;/a&gt; for the server side of the scgi protocol&lt;/li&gt;
&lt;li&gt;&lt;a class="reference" href="http://www.apache.org/"&gt;Apache&lt;/a&gt; for the actual webserver — and I used Apache's authentication to do access control&lt;/li&gt;
&lt;li&gt;libapache-mod-scgi for connecting to the voting system via the scgi protocol&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Installing all of these is pretty simple using a good Linux distribution. If you're already a Linux user and know your way around the packaging system. Though installing it yesterday on my Ubuntu laptop, I had to manually enable libapache-mod-scgi.&lt;/p&gt;
&lt;p&gt;Thus, setting it up requires:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Create the database, create the database user, set the user's password.&lt;/li&gt;
&lt;li&gt;Configure postgres to allow passworded logins from localhost.&lt;/li&gt;
&lt;li&gt;Run the createtables.sql script to create the tables needed.&lt;/li&gt;
&lt;li&gt;Configure Apache to serve the relevant URLs via SCGI&lt;/li&gt;
&lt;li&gt;Create two users and two groups for Apache's authentication&lt;/li&gt;
&lt;li&gt;Edit common.py to configure the database (username, password, database name)&lt;/li&gt;
&lt;li&gt;Install the vote system, and run it so that Apache can talk to it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is all documented in the README, but written at a level that an &amp;quot;expert&amp;quot; Linux user (rather, a system administrator) can easily follow. (I mean, I could easily follow it year after year. :-P) But how many expert Linux users / SA's are there in a student res with 200 people? And this isn't the one known as the &amp;quot;nerd res&amp;quot; on campus? ;-)&lt;/p&gt;
&lt;p&gt;Phase One of the rewrite will do the following:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Chuck out Apache, chuck out Quixote. Use &lt;a class="reference" href="http://www.cherrypy.org/"&gt;CherryPy&lt;/a&gt; instead, let CherryPy be both the framework and the web server. Who needs Apache, on such a small scale?&lt;/li&gt;
&lt;li&gt;Implement authentication in the Python code, we don't have Apache anymore.&lt;/li&gt;
&lt;li&gt;Chuck out PostgreSQL in favour of SQLite. Or anything else for that matter? Something that handles multiple threads or processes well enough though. I'll have to research this a little bit. (Any tips from any geeks that happen to be reading this? ;-) ) SQLite is included in Python these days, so it isn't an external dependency.&lt;/li&gt;
&lt;li&gt;Implement error checking in the Python code, since SQLite doesn't do database constraints and thus can't do my error checking for me.&lt;/li&gt;
&lt;li&gt;Without Apache or PostgreSQL, we don't need psycopg or scgi either.&lt;/li&gt;
&lt;li&gt;Chuck out python-numeric. NumPy is the way of the future / present / recent past, but I'll even go so far as to give standard Python datastructures a go first. Not that dependencies matter, if I'll be doing the next point as well:&lt;/li&gt;
&lt;li&gt;Try py2exe to make a self-sufficient executable for running in Windows. Otherwise, I may try to create a nice graphical installer. I have done that before.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Consequently, getting the voting system up and serving (as a website) should be as easy as &amp;quot;install it, run it&amp;quot;. The rest of the configuration should happen via a web browser. It's going to be a lot more work than I've put into it in the past.&lt;/p&gt;
&lt;p&gt;Phase Two drops SQLite and CherryPy in favour of Google AppEngine.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ttm_appspot/~4/vr3ubsWBaYI" height="1" width="1"/&gt;</content>
    <summary type="html">&lt;p&gt;A few years ago I developed a voting system for use in the residence I was staying at. It evolved a bit over time, but each implementation or partial rewrite was a rushed job (one, maybe two weekends). The goal was to get something robust and reliable and &lt;em&gt;easy to use&lt;/em&gt;, a later iteration supporting ranked ballots and &lt;a class="reference" href="http://en.wikipedia.org/wiki/Ranked_Pairs"&gt;Maximum Majority Voting&lt;/a&gt;. Making it &lt;em&gt;easy to set up&lt;/em&gt; was not something I had had time for. Consequently, you need an experienced Linux geek to do that part.&lt;/p&gt;
&lt;p&gt;In the years after I left, I was still in town. So I could go help them set it up when the time comes each year. 2006, 2007... and then the fateful 2008. I recently accepted a job in Europe, so I was packing up. Didn't have the time for the rewrite, as I had since realised it would take quite a bit of effort. But I could still set it up, shortly before I fly. And do the rewrite for 2009.&lt;/p&gt;
&lt;p&gt;That's where we learn reliability lessons, lessons that we all already know, but brought into sharp focus the hard way: &lt;em&gt;you need a failover system&lt;/em&gt;. A few days after the election, I found out the computer I set it up on had died, and they didn't stand a chance getting it running again on another, so they went back to a &lt;em&gt;paper election&lt;/em&gt;. &amp;lt;cringe&amp;gt;&lt;/p&gt;
</summary>
    <link rel="alternate" href="http://feedproxy.google.com/~r/ttm_appspot/~3/vr3ubsWBaYI/" />
    <published>2009-05-10T11:52:52Z</published>
  <feedburner:origLink>http://ttm.appspot.com/blog/2009/5/10/the-future-of-my-voting-system/</feedburner:origLink></entry>

  <entry>
    <id>tag:ttm.appspot.com,2009-03-23:/blog/2009/3/23/some-cycling-pictures-from-jan/</id>
    <title type="html">Some Cycling Pictures from Jan</title>
    <updated>2009-03-23T23:01:26Z</updated>
    <author>
      <name>Hugo</name>
    </author>
    <content type="html">&lt;p&gt;In the realm of personal updates, I've been quite silent. It's been hectic. This week even more so, following this past weekend's 3-days-of-skiing. (A big group of people from work went on something of a &amp;quot;self-paid company ski trip&amp;quot;.) So the things I should have sorted out on Friday or this weekend are plaguing me during a week that's full of other work already. Plus, it's quarter's end, which brings with it a couple of other important work-related things.&lt;/p&gt;
&lt;p&gt;Instead of a decent update thus, I'm pointing to photos I had meant to share a long time ago, with a blog post to go with it. No blog post / description / embedded photos I'm afraid, but most (if not all) of these have a description below, providing some narrative to the adventure. (Winter cycling!) Any misc-banter, comments or questions are welcome and will be answered as soon as I can get to it:&lt;/p&gt;
&lt;p&gt;&lt;a class="reference" href="http://www.flickr.com/photos/hugovdm/sets/72157614395281622/"&gt;Winter Mountain Biking, 25 January&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I intend to do the same trip soon, to the top this time, and take more pictures. It's spring now! I will also share more sets of the other weekend trips I was able to go on during the last three months or so.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ttm_appspot/~4/W1u8HPdO9Qo" height="1" width="1"/&gt;</content>
    
    <link rel="alternate" href="http://feedproxy.google.com/~r/ttm_appspot/~3/W1u8HPdO9Qo/" />
    <published>2009-03-23T23:01:26Z</published>
  <feedburner:origLink>http://ttm.appspot.com/blog/2009/3/23/some-cycling-pictures-from-jan/</feedburner:origLink></entry>

  <entry>
    <id>tag:ttm.appspot.com,2009-02-25:/blog/2009/2/25/south-africans-abroad-how-to-vote-youve-got-2-more-days/</id>
    <title type="html">South Africans Abroad: How To Vote (You've got 2 more days!)</title>
    <updated>2009-02-25T08:58:46Z</updated>
    <author>
      <name>Hugo</name>
    </author>
    <content type="html">&lt;p&gt;Two more days to fill in the necessary forms to be able to vote on election day. If any of you haven't joined the Facebook group, here's the most recent letter/message with voting details:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;quot;3 DAYS LEFT!!!!&amp;quot; - Message from the DA&lt;/strong&gt; — (24 February at 20:44)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Dear Friends,&lt;/p&gt;
&lt;p&gt;Time is running out.&lt;/p&gt;
&lt;p&gt;There are only three days left to submit your special vote applications to the IEC.&lt;/p&gt;
&lt;p&gt;All applications must be submitted by midnight on 27 February 2009.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote id="more"&gt;
&lt;p&gt;The DA is confident that our court application (&lt;a class="reference" href="http://www.da.org.za/docs/6450/Voting_Abroad-High_Court_Application.pdf"&gt;http://www.da.org.za/docs/6450/Voting_Abroad-High_Court_Application.pdf&lt;/a&gt;) will be successful on 4 March and that South Africans who are living abroad, and who are on the voters roll, will win back their right to vote in the upcoming elections.&lt;/p&gt;
&lt;p&gt;However, it is likely that the IEC will not grant another 15 day period to apply for a special vote after the Constitutional Court ruling on 4 March.&lt;/p&gt;
&lt;p&gt;It is therefore vital that you apply for a special vote before midnight on 27 February so that you be will able to cast your vote at your foreign mission on 15 April.&lt;/p&gt;
&lt;p&gt;If you have not applied for special vote yet we urge you to follow these quick and easy steps to apply:&lt;/p&gt;
&lt;p&gt;Visit the DA’s Contribute to Change Global blog which keeps all South Africans abroad informed of news that affects you and your right to vote by clicking here: &lt;a class="reference" href="http://contributetochangeglobal.wordpress.com/"&gt;http://contributetochangeglobal.wordpress.com/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Read the post by &amp;quot;How to apply for a special vote&amp;quot; (&lt;a class="reference" href="http://contributetochangeglobal.wordpress.com/2009/02/13/how-to-apply-for-a-special-vote-2/"&gt;http://contributetochangeglobal.wordpress.com/2009/02/13/how-to-apply-for-a-special-vote-2/&lt;/a&gt;) in order to find out how to apply and to download the VEC10 form which you will need to apply&lt;/p&gt;
&lt;p&gt;Read the post &amp;quot;Tips on how to fill in VEC10 form&amp;quot; (&lt;a class="reference" href="http://contributetochangeglobal.wordpress.com/2009/02/17/tips-on-how-to-fill-in-the-vec10-form/"&gt;http://contributetochangeglobal.wordpress.com/2009/02/17/tips-on-how-to-fill-in-the-vec10-form/&lt;/a&gt;) in order to find out how to fill in the form correctly&lt;/p&gt;
&lt;p&gt;Make sure you fax or post your form to the IEC before midnight on 27 February 2009 (fax and postal details are also on the DA’s C2C Global blog ).&lt;/p&gt;
&lt;p&gt;It’s as simple as that.&lt;/p&gt;
&lt;p&gt;The DA is committed to fighting for your right to the vote in the upcoming elections and we have therefore made it is as easy and convenient for you as possible to get your special vote application submitted before midnight on Friday.&lt;/p&gt;
&lt;p&gt;In addition to submitting your own special vote application, help us spread the word. Pass this newsletter on to all of your South African family, friends and contacts living abroad so as to ensure that they also apply for a special vote and cc &lt;a class="reference" href="mailto:global&amp;#64;da.org.za"&gt;global&amp;#64;da.org.za&lt;/a&gt; when doing this so that we can inform everyone of the outcome of our court case on 4 March.&lt;/p&gt;
&lt;p&gt;By taking a few minutes out of your day to forward this newsletter on to your South African family and friends living overseas, and to get your special vote application submitted, you will ensure that as many South Africans living temporarily abroad as possible will be able to exercise their constitutional right to vote in the 2009 upcoming elections in April.&lt;/p&gt;
&lt;p&gt;Apply for a special vote before midnight on 27 February so that you can have your say in the future government of our country.&lt;/p&gt;
&lt;p&gt;If you have any further queries regarding applying for a special vote or have problems sending your forms to the IEC please contact Tracé Venter, the DA’s overseas votes co-ordinator at cc &lt;a class="reference" href="mailto:global&amp;#64;da.org.za"&gt;global&amp;#64;da.org.za&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;We will be sure to notify you of the outcome of our Constitutional Court case on 4 March and will also keep you posted on any other news that affects your right to vote.&lt;/p&gt;
&lt;p&gt;Until then, all the best!&lt;/p&gt;
&lt;p&gt;Kind regards&lt;/p&gt;
&lt;p&gt;Helen Zille&lt;/p&gt;
&lt;/blockquote&gt;
&lt;img src="http://feeds.feedburner.com/~r/ttm_appspot/~4/GamqcmM9YpM" height="1" width="1"/&gt;</content>
    <summary type="html">&lt;p&gt;Two more days to fill in the necessary forms to be able to vote on election day. If any of you haven't joined the Facebook group, here's the most recent letter/message with voting details:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;quot;3 DAYS LEFT!!!!&amp;quot; - Message from the DA&lt;/strong&gt; — (24 February at 20:44)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Dear Friends,&lt;/p&gt;
&lt;p&gt;Time is running out.&lt;/p&gt;
&lt;p&gt;There are only three days left to submit your special vote applications to the IEC.&lt;/p&gt;
&lt;p&gt;All applications must be submitted by midnight on 27 February 2009.&lt;/p&gt;
&lt;/blockquote&gt;
</summary>
    <link rel="alternate" href="http://feedproxy.google.com/~r/ttm_appspot/~3/GamqcmM9YpM/" />
    <published>2009-02-25T08:58:46Z</published>
  <feedburner:origLink>http://ttm.appspot.com/blog/2009/2/25/south-africans-abroad-how-to-vote-youve-got-2-more-days/</feedburner:origLink></entry>

  <entry>
    <id>tag:ttm.appspot.com,2009-01-29:/blog/2009/1/29/mengelmoes-semi-open-conversations/</id>
    <title type="html">Mengelmoes: Semi-Open Conversations</title>
    <updated>2009-01-29T21:51:43Z</updated>
    <author>
      <name>Hugo</name>
    </author>
    <content type="html">&lt;p&gt;&lt;em&gt;Another description of the vapourware currently in my head.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The typical way commenting works on the internet is a free-for-all. Absolutely anyone can comment on a YouTube video, &amp;quot;all comments are created equal&amp;quot;. This is quite a huge difference from real-world conversations, where you start a conversation with a couple of people, and anyone barging in on a private conversation uninvited is considered rude.&lt;/p&gt;
&lt;p&gt;This feature is simultaneously a great strength, and a weakness. It ensures everyone has a voice, just like democracy, but also like democracy, it means the weakest comments can bulldoze a thoughtful and carefully considered conversation by sheer quantity. Democracy requires an educated voters to function really well, comments on an open internet require politeness in order to develop a good conversation.&lt;/p&gt;
&lt;p id="more"&gt;Of course this is a very common problem, &amp;quot;abusive comments&amp;quot;, so it is a problem that has been solved many times over. There exists many different moderation systems whereby the participants vote on the quality of comments.&lt;/p&gt;
&lt;p&gt;One of the most intricate I'm aware of would be Slashdot's. Slashdot contributors are periodically given moderation points by which they can rate the quality of a comment. In order to fight moderation abuse, meta-moderation is used, moderating the moderators, thereby determining who gets to moderate most often. For more, see the &lt;a class="reference" href="http://en.wikipedia.org/wiki/Slashdot#Moderation"&gt;Slashdot Moderation section on Wikipedia&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Other systems have a thumbs-up and a thumbs-down icon that any logged-in user can click. (Even YouTube has this.) Amazon book reviews has this as well. I should probably also look into forum software. From what I've heard, some of them have intricate reputation-based or participation-based systems which go so far as to determine how many times a day someone's allowed to post a message. These kinds of things work well for large communities with many participants.&lt;/p&gt;
&lt;p&gt;But what about small communities? What about &lt;em&gt;really&lt;/em&gt; small communities?&lt;/p&gt;
&lt;p&gt;I'm sure I suffer from some amount of the &lt;a class="reference" href="http://en.wikipedia.org/wiki/Not_Invented_Here"&gt;Not Invented Here syndrome&lt;/a&gt;, but I rationalise it in a number of ways. Firstly, I want something tuned to exactly my needs, which is different to everything I've seen so far. Secondly, I want something in Python, that runs in my framework (which I call mengelmoes).&lt;/p&gt;
&lt;p&gt;My requirements are as follows:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;I want to &lt;em&gt;encourage uninterrupted conversations&lt;/em&gt; between a particular set of people. It may be a one-on-one conversation, it may be a conversation containing more participants, it matters not. I want to encourage the meeting of particular minds keen on discussing/duelling each other, without the interruption of rude passers-by chipping in just because they want to have their voice heard. This differs from most sites and software I've seen, like slashdot for example, which has a &amp;quot;tree&amp;quot; of comments, with the highest-rated ones defining the conversation, irrespective of who made the comments.&lt;/li&gt;
&lt;li&gt;At the same time, &lt;em&gt;I still want to enable anyone to drop a comment&lt;/em&gt;, to maintain that particular strength of the internet: the very fact that everyone has a voice and an opportunity to be heard.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the second reason I avoid moderating comments myself, dictatorially, deciding which comments may stay and which are not acceptable. Some feeble attempts at encouraging people to be friendly and adhere to some guidelines have demonstrated the futility of a social-engineering approach on the internet. In a closed tribe with chosen and well-socialised members, tribal culture can go far. But with the millions on the internet... Foolishness.&lt;/p&gt;
&lt;p&gt;So... some ideas I hope to build into the mengelmoes solution to the problem.&lt;/p&gt;
&lt;dl class="docutils"&gt;
&lt;dt&gt;Data collection: conversational structure, &lt;em&gt;reply graph&lt;/em&gt;&lt;/dt&gt;
&lt;dd&gt;One of the primary ways of understanding the conversational structure in mengelmoes will be to store detailed information on who is replying to what. This is quite common with regards to a reply to a single/particular comment. In a conversation, however, one person often responds to multiple comments. I'll be experimenting with letting people specify the multiple comments they are responding to, to build a complete &lt;a class="reference" href="http://en.wikipedia.org/wiki/Graph_(mathematics)"&gt;graph&lt;/a&gt; of who is responding to what.&lt;/dd&gt;
&lt;dt&gt;Explicit conversations and hecklers&lt;/dt&gt;
&lt;dd&gt;People should be able to start a &amp;quot;closed&amp;quot; conversation with a particular set of people. This will be an extra layer of information, independent of the &lt;em&gt;reply graph&lt;/em&gt;: i.e. people will still be able to comment on any comment within the conversation, but such commenters will be classified as hecklers and their comments will not be displayed in a conversational view.&lt;/dd&gt;
&lt;dt&gt;Freedom to choose: &lt;em&gt;emphasizing conversations&lt;/em&gt;&lt;/dt&gt;
&lt;dd&gt;Many views of the conversations should be possible. If someone wants to see all the comments, in order, as is usually displayed on a blog, &lt;em&gt;they can&lt;/em&gt;. If someone wants to see just the primary conversation, they can do that also. This means the system won't completely remove the temptation for people to read everything and be drawn in by trolling, but it should certainly help define which comments/conversations they care about. Effectively, the conversational support will be a way of emphasizing the conversations, rather than one of &amp;quot;censoring&amp;quot; or rejecting comments by hecklers.&lt;/dd&gt;
&lt;dt&gt;Inviting hecklers to join&lt;/dt&gt;
&lt;dd&gt;Those taking part in the conversation should be able to refer to hecklers' comments should they want to, thereby drawing that particular comment in the conversation. The heckler will still be a heckler though. Alternatively, hecklers can be invited to join in, allowing them full conversation-participation. How this invitation will work, I'm not yet certain. Numerous possibilities, maybe all can be supported: (a) anyone can invite anyone to join, so make sure you choose your participants carefully, (b) unanimous agreement: someone can only join if everyone in the conversation agrees to it, (c) some form of voting, maybe (a) but giving everyone veto rights?&lt;/dd&gt;
&lt;dt&gt;Friend and Group Support&lt;/dt&gt;
&lt;dd&gt;Groups can be defined to allow for easy invitation for a whole group. This can be used to define the &amp;quot;regulars&amp;quot; for example, or a circle of friends.&lt;/dd&gt;
&lt;dt&gt;Author-suggested topics&lt;/dt&gt;
&lt;dd&gt;An author of a blog post often knows what kind of conversations may be sparked by the post. (Duh!) The blog post author could create a couple of pre-defined conversational topics, thereby steering and encouraging certain conversations and keeping &amp;quot;off-topic interruptions&amp;quot; elsewhere.&lt;/dd&gt;
&lt;dt&gt;The Pub and the Back Alley&lt;/dt&gt;
&lt;dd&gt;Another way of splitting up conversations that I've been toying with: I don't want to discourage fist fights, but I don't want it to upset the jovial atmosphere inside the pub. When fist fights erupt, they can take it outside, to the back alley. Anyone else is welcome to head out as well and observe the fight, should they choose to. I don't know how this will work, but it is a way to help think about the freedom to choose point above, how classification/emphasis/de-emphasis of conversations should work, as well as how we might want &amp;quot;conversational branching&amp;quot; to work...&lt;/dd&gt;
&lt;dt&gt;Conversational branching&lt;/dt&gt;
&lt;dd&gt;When a topic changes, a new conversation is branched off. This is just the typical tree-like structure of threaded conversations on the internet and email, but explicit support means no-one needs worry about someone going &amp;quot;off-topic&amp;quot;: it just gets forked into another branch, enabling those that still care about the previous topic to continue the conversation.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;So far we've talked about &amp;quot;hard-line&amp;quot; approaches. Softer ways of implementing things will be more challenging on the programming side, but might ease the social/user side of things:&lt;/p&gt;
&lt;dl class="docutils"&gt;
&lt;dt&gt;Implicit conversations&lt;/dt&gt;
&lt;dd&gt;Based on the &lt;em&gt;reply graph&lt;/em&gt;, conversations can automatically be detected and &lt;em&gt;emphasized&lt;/em&gt; (as above). This way conversations can emerge based on people's natural behaviour, rather than defined in a hard-line fashion.&lt;/dd&gt;
&lt;dt&gt;Personal preferences&lt;/dt&gt;
&lt;dd&gt;In general, the problem with too many comments is information overload, and human inability to filter out the information not wanted, in favour of the information that is wanted. Based on defined or detected preferences, comments by people you care about can be emphasized, while those by hecklers and strangers and passers-by can be de-emphasized, on a &lt;em&gt;per person&lt;/em&gt; basis. Conversational views can also be customised per person, so that what I want to see and who I want to converse with need not influence what other people see and who they typically converse with.&lt;/dd&gt;
&lt;dt&gt;Friend-filtered view&lt;/dt&gt;
&lt;dd&gt;As my aim with writing is to encourage people to think more broadly, come across new and challenging ideas, the concept of having people see only what they want to see does rub me the wrong way. This is the same criticism that is sometimes levelled at &amp;quot;preference engines&amp;quot; (recommendation systems): they discourage the broadening of horizons, if they work perfectly. Which they don't, but I don't want to rely on that. Bearing in mind all systems are flawed, the question is just where you will place that flaw. As I'm big on relationships, I want to shift the kink in the system into the human realm. A friend-filtered view will let you see what your friends also recommend and like, rather than just what you like. The point is to encourage interaction with your friends around the points where your views differ. What remains is classical... um... &amp;quot;evangelism&amp;quot;, the way it should be: go and make interesting new friends that views the world differently, let relationships be the key to expanding horizons.&lt;/dd&gt;
&lt;dt&gt;Default author-defined view&lt;/dt&gt;
&lt;dd&gt;One of the things that drags me into conversations I'm not interested in, is the fact that all comments are readable by everyone viewing my blog post, that comments augment the post. My posts get judged by the comments and conversations they spark. That is again both good and bad. Thus, while any reader that logs in can have their personal preferences with regards to which comments and conversations are emphasized, for the newcomer coming to &amp;quot;Hugo's blog&amp;quot; for example, I can present &amp;quot;Hugo's default view&amp;quot;. All comments/conversations still accessible via other views, the default view is merely there to highlight the &amp;quot;best-of&amp;quot;. While I'm sure many will use a mengelmoes feature like this to filter things down to just what they accept, they already do that through moderation and by deleting comments. Like all tech, it can be used for good and evil. In my case, the good I'm aiming for is to promote/feature/emphasize thoughtful comments via a friend-filtered view, diversity guaranteed by having diverse friends.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Well, now that's all out there. My intention was to have already started with the conversation graph (i.e. allowing people to specify who they are replying to). Many of the other features build on top of that. But first I hope to complete WordPress importing features (or syncing? ...later maybe) and pingback support. What else should be high on the list?&lt;/p&gt;
&lt;p&gt;Oh yea, splitting by virtualhost. &lt;a class="reference" href="http://www.mengelmoes.org/"&gt;http://www.mengelmoes.org/&lt;/a&gt; and &lt;a class="reference" href="http://ttm.appspot.com/"&gt;http://ttm.appspot.com/&lt;/a&gt; should be able to display &lt;em&gt;different&lt;/em&gt; sites, even if served from the same app. I'll surely keep them interoperable. Expect redirects from one to the other, depending on which domain each page or post is eventually supposed to belong to. Until then, duplication is the order of the day.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ttm_appspot/~4/M2yMhORKJLU" height="1" width="1"/&gt;</content>
    <summary type="html">&lt;p&gt;&lt;em&gt;Another description of the vapourware currently in my head.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The typical way commenting works on the internet is a free-for-all. Absolutely anyone can comment on a YouTube video, &amp;quot;all comments are created equal&amp;quot;. This is quite a huge difference from real-world conversations, where you start a conversation with a couple of people, and anyone barging in on a private conversation uninvited is considered rude.&lt;/p&gt;
&lt;p&gt;This feature is simultaneously a great strength, and a weakness. It ensures everyone has a voice, just like democracy, but also like democracy, it means the weakest comments can bulldoze a thoughtful and carefully considered conversation by sheer quantity. Democracy requires an educated voters to function really well, comments on an open internet require politeness in order to develop a good conversation.&lt;/p&gt;
</summary>
    <link rel="alternate" href="http://feedproxy.google.com/~r/ttm_appspot/~3/M2yMhORKJLU/" />
    <published>2009-01-29T21:51:43Z</published>
  <feedburner:origLink>http://ttm.appspot.com/blog/2009/1/29/mengelmoes-semi-open-conversations/</feedburner:origLink></entry>

  <entry>
    <id>tag:ttm.appspot.com,2009-01-26:/blog/2009/1/26/should-i-get-an-slr/</id>
    <title type="html">Should I get an SLR?</title>
    <updated>2009-01-26T15:54:17Z</updated>
    <author>
      <name>Hugo</name>
    </author>
    <content type="html">&lt;p&gt;Go on, convince me!&lt;/p&gt;
&lt;p&gt;I'm in a new country with fantastic scenery, and I might just go touring a bit. My PowerShot S70 frustrates me most often in bad light, when I'm jealous of a good SLR's lower noise at 1600 ISO than my camera at 400.&lt;/p&gt;
&lt;p&gt;As always, the most prohibitive thing would be the bulk. Picture going on a cycle tour across Switzerland. Do you take your compact PowerShot, or your SLR? Or you go skiing... or you go for a casual walk by the side of the lake, not really intending to take pictures, but throw your camera in your bag (or over your shoulder) just in case? Or a social gathering or company holiday party... or or or...?&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ttm_appspot/~4/CMGEcM4j-MY" height="1" width="1"/&gt;</content>
    
    <link rel="alternate" href="http://feedproxy.google.com/~r/ttm_appspot/~3/CMGEcM4j-MY/" />
    <published>2009-01-26T15:54:17Z</published>
  <feedburner:origLink>http://ttm.appspot.com/blog/2009/1/26/should-i-get-an-slr/</feedburner:origLink></entry>


</feed>
