<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>A multi-device presence agent</title>
	<atom:link href="http://presenceagent.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://presenceagent.wordpress.com</link>
	<description>devblog</description>
	<lastBuildDate>Wed, 01 Apr 2009 13:56:32 +0000</lastBuildDate>
	<language>nl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='presenceagent.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>A multi-device presence agent</title>
		<link>http://presenceagent.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://presenceagent.wordpress.com/osd.xml" title="A multi-device presence agent" />
	<atom:link rel='hub' href='http://presenceagent.wordpress.com/?pushpress=hub'/>
		<item>
		<title>SMS notifications</title>
		<link>http://presenceagent.wordpress.com/2009/04/01/sms-notifications/</link>
		<comments>http://presenceagent.wordpress.com/2009/04/01/sms-notifications/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 13:56:32 +0000</pubDate>
		<dc:creator>Bram Bonné</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://presenceagent.wordpress.com/?p=41</guid>
		<description><![CDATA[Sinds enkele dagen ondersteunt de presence server ook het versturen van SMSjes als er geen activiteit is op de apparaten van de gebruiker. Dit is dus een soort van &#8216;last resort&#8217; om de gebruiker te verwittigen van een gebeurtenis. De SMSjes worden gratis verzonden, en het enige dat ervoor nodig is, is een GSM nummer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=41&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sinds enkele dagen ondersteunt de presence server ook het versturen van SMSjes als er geen activiteit is op de apparaten van de gebruiker. Dit is dus een soort van &#8216;last resort&#8217; om de gebruiker te verwittigen van een gebeurtenis. De SMSjes worden gratis verzonden, en het enige dat ervoor nodig is, is een GSM nummer dat geregistreerd staat op een account van Google. Dat werkt als volgt:</p>
<p>Gebruikers van Google Calendar kunnen zichzelf laten verwittigen via SMS wanneer er een afspraak volgt, door dit in te stellen bij de afspraak. Aangezien Google Calendar ook een Python API heeft, kan de server dus een &#8216;afspraak&#8217; aanmaken die binnen één minuut begint op de kalender van de gebruiker, en hem daarvan verwittigen één minuut voor het beginnen van de afspraak. Op die manier zal er dan bijna onmiddellijk een SMSje naar de gebruiker gestuurd worden om hem hiervan te verwittigen, en dat is exact wat we nodig hebben.</p>
<p>Verder heb ik ook nog gezorgd voor integratie met gnome-screensaver: wanneer een apparaat met de gnome desktopomgeving niet de meest actieve client op het netwerk is, is het nu mogelijk om dit apparaat automatisch zijn scherm te laten blokkeren. Dit om ongeauthoriseerde toegang te voorkomen en/of energie te besparen.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/presenceagent.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/presenceagent.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/presenceagent.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/presenceagent.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/presenceagent.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/presenceagent.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/presenceagent.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/presenceagent.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/presenceagent.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/presenceagent.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/presenceagent.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/presenceagent.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/presenceagent.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/presenceagent.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=41&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://presenceagent.wordpress.com/2009/04/01/sms-notifications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/88b04869769591f94f4511f881b019de?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=PG" medium="image">
			<media:title type="html">Bram Bonné</media:title>
		</media:content>
	</item>
		<item>
		<title>Eerste deel van de maand maart en een inhoudstafel</title>
		<link>http://presenceagent.wordpress.com/2009/03/20/eerste-deel-van-de-maand-april-en-een-inhoudstafel/</link>
		<comments>http://presenceagent.wordpress.com/2009/03/20/eerste-deel-van-de-maand-april-en-een-inhoudstafel/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 12:46:00 +0000</pubDate>
		<dc:creator>Bram Bonné</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://presenceagent.wordpress.com/?p=33</guid>
		<description><![CDATA[Buiten het uitgebreid testen van de presence client en het oplossen van bijhorende bugs, zijn dit de dingen die ik de voorbije weken heb verwezenlijkt: Refactoring: de code voldoet nu beter aan python standaarden, waarin het de conventie is om de namen van  &#8216;private&#8217; methods en member variabelen (die niet verplicht opgelegd worden in python) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=33&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Buiten het uitgebreid testen van de presence client en het oplossen van bijhorende bugs, zijn dit de dingen die ik de voorbije weken heb verwezenlijkt:</p>
<ul>
<li>Refactoring: de code voldoet nu beter aan python standaarden, waarin het de conventie is om de namen van  &#8216;private&#8217; methods en member variabelen (die niet verplicht opgelegd worden in python) vooraf te laten gaan door een underscore (&#8216;_&#8217;). Op die manier kunnen IDE&#8217;s beter aangeven welke methods tot de interface van de klassen behoren.<br />
Ook heb ik pyLint, een tool zoals lint voor C, losgelaten op de code. Dit omdat python zelf de code pas &#8216;checkt&#8217; wanneer hij gerund wordt. Op deze manier ben ik er zeker van dat er geen ongedeclareerde variabelen gebruikt worden en dat ik geen tikfouten heb gemaakt.</li>
<li>Fallbacks: indien een bepaalde library niet geïnstalleerd is, zal het programma proberen om in een soort van compatibiliteitsmodus te draaien. Een voorbeeld hiervan is het runnen van de applicatie zonder dat er avahi-support is geïnstalleerd. Het programma zal dan proberen te verbinden met een default server.</li>
<li>Een globaal notificatie framework: om te voldoen aan het user scenario 3 uit voorgaande blogpost heb ik gezorgd voor een notificatie-framework, waarnaar applicaties hun notificaties kunnen versturen als ze willen dat de gebruiker deze ook op andere machines kan lezen waarop hij werkt. De presence client en server zullen er dan voor zorgen dat deze notificatie weergegeven wordt op het apparaat waarop de gebruiker op dat moment het actiefst bezig is.</li>
<li>DBus ondersteuning: er is nu een extra klasse, presenceClientDBusListener, die een presence client aanmaakt en ervoor zorgt dat hij bestuurd kan worden via DBus. Concreet komt dit erop neer dat andere applicaties &#8216;messages&#8217; kunnen sturen naar de presence client. Zo is het nu mogelijk om het presence level te updaten via een DBus-aanroep, of om op die manier notificaties en berichten te versturen.</li>
<li>User Interfaces: op een desktop PC worden notificaties weergegeven door gebruik te maken van libnotify, hetgeen ervoor zorgt dat de notificaties op de system-native manier worden weergegeven. De berichten komen op een desktop PC  aan in een klein gtk-kadertje, omdat het de bedoeling is dat dit gebruikt wordt voor snelle, kleine messages en niet voor uitgebreide chatsessies. De gebruiker heeft hierin de mogelijkheid om te replyen.<br />
In Android werk ik met het standaard notificatie-framework. Dit zorgt ervoor dat berichten in een notificatie weegegeven worden waarop geklikt kan worden om een antwoord te sturen.</li>
<li>Thesis: nagedacht over een inhoudstabel voor de thesis. Hierna volgt de voorlopige versie</li>
</ul>
<h3>Voorlopige inhoudstafel</h3>
<h4>User scenario&#8217;s</h4>
<h5>Doorsturen van notificaties<br />
Messaging<br />
&#8216;context-aware&#8217; systemen: apparaat weet of het actief gebruikt wordt</h5>
<h4>Gebruikte talen/pakketten/libraries</h4>
<h5>Python</h5>
<p>Avahi/zeroconf<br />
DBus<br />
gtk + libnotify<br />
Python socket library</p>
<h5>Java</h5>
<p>Android SDK (eclipse)</p>
<h4>Implementatie presence server</h4>
<h5>User handlers =&gt; schaalbaarheid</h5>
<p>=&gt; server verzorgt logins en kent userHandlers (voor messaging)</p>
<h5>Verbinding: avahi of rechtstreeks</h5>
<p>=&gt; gebruik binnen bedrijf voor communicatie tussen collega&#8217;s: avahi<br />
=&gt; 1 persoon met veel apparaten op verschillende plaatsen (notifications): rechtstreeks</p>
<h5>Bijgehouden data: client list, most active</h5>
<h4>Implementatie presence client</h4>
<h5>Desktop</h5>
<p>Modulairiteit (dbus) =&gt; Info voor andere programma&#8217;s: isMostActive(), sendNotification(), sendMessageToUser()<br />
User Interface: mogelijkheid tot vervanging<br />
Bijgehouden data: isMostActive, presence list (afweging data verstuurd)<br />
Integratie met presence agent Kristof</p>
<h5>Nokia?</h5>
<h5>Android</h5>
<p>PresenceService<br />
ConnectionHandler<br />
ActivityHandler =&gt; keyboard lock<br />
UI/presenceClient<br />
notifications op android</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/presenceagent.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/presenceagent.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/presenceagent.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/presenceagent.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/presenceagent.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/presenceagent.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/presenceagent.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/presenceagent.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/presenceagent.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/presenceagent.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/presenceagent.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/presenceagent.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/presenceagent.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/presenceagent.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=33&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://presenceagent.wordpress.com/2009/03/20/eerste-deel-van-de-maand-april-en-een-inhoudstafel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/88b04869769591f94f4511f881b019de?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=PG" medium="image">
			<media:title type="html">Bram Bonné</media:title>
		</media:content>
	</item>
		<item>
		<title>Scenario&#8217;s voor het gebruik van de presence agent</title>
		<link>http://presenceagent.wordpress.com/2009/03/06/scenarios-voor-het-gebruik-van-de-presence-agent/</link>
		<comments>http://presenceagent.wordpress.com/2009/03/06/scenarios-voor-het-gebruik-van-de-presence-agent/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 11:36:18 +0000</pubDate>
		<dc:creator>Bram Bonné</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://presenceagent.wordpress.com/?p=26</guid>
		<description><![CDATA[Om te bekijken welke kant ik verder uit wil met de presence agent, heb ik enkele gebruikersscenario&#8217;s opgesteld, waarin de mogelijkheden van gebruik van de presence agent worden besproken. Scenario 1: instant messaging Persoon A wil persoon B een bericht sturen, maar weet niet waar deze persoon zich bevindt en of hij op de een [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=26&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Om te bekijken welke kant ik verder uit wil met de presence agent, heb ik enkele gebruikersscenario&#8217;s opgesteld, waarin de mogelijkheden van gebruik van de presence agent worden besproken.</p>
<h2>Scenario 1: instant messaging</h2>
<p>Persoon A wil persoon B een bericht sturen, maar weet niet waar deze persoon zich bevindt en of hij op de een of andere manier online is. Hij zal dan gewoon zijn bericht naar de presence server waarop persoon B is aangesloten sturen, die ervoor zal zorgen dat het bericht aankomt op de machine waarvan het het meest waarschijnlijk is dat hij zich dicht bij persoon B bevindt.<br />
Wanneer de server weet dat persoon B druk bezig is kan hij dit melden aan persoon A, die dan weet dat hij persoon B best enkel stoort als het belangrijk is. Hierbij is het belangrijk dat er automatisch bepaald wordt of de gebruiker druk bezig is (en dat de gebruiker dit dus niet manueel ingeeft), aangezien de gebruiker kan vergeten zijn status te updaten, terwijl een presence agent dit altijd doet. Wanneer persoon A weet dat de status accuraat is, zal hij minder geneigd zijn tóch te proberen persoon B te contacteren met minder belangrijk nieuws.</p>
<h2>Scenario 2: instant messaging (2)</h2>
<p>Gelijkaardig aan scenario 1, met het verschil dat het versturen van berichten gebeurt via een instant messaging toepassing. De presence agent kan dan via een plugin (of via D-Bus) de IM applicatie verwittigen wanneer de status van de gebruiker verandert. Dit is specifiek per IM applicatie.<br />
Het voordeel van nog steeds met een aparte server te werken (in plaats van simpelweg de status te laten aanpassen door de lokale presence agent) is dat één enkele presence agent maar bepaalde activiteit op de computer van een gebruiker kan meten, terwijl een netwerk van presence agents zekerder kan zijn van het feit dat de gebruiker achter een bepaald apparaat zit. Een machine heeft immers een bepaalde aanwezigheid binnen het netwerk.</p>
<h2>Scenario 3: globaal notificatie-framework</h2>
<p>Op dit moment is het alleen maar mogelijk voor een applicatie die op een bepaalde machine draait om de gebruiker van een gebeurtenis/update te waarschuwen op deze machine, tenzij hij gebruik maakt van e-mail of een ad-hoc —en vaak minder robuust— notificatiesysteem. Met een multi-device presence agent zou het echter mogelijk zijn een D-Bus service te broadcasten waarnaar applicaties notificaties kunnen versturen. Deze service (die in de presence agent zou zitten) kan dan een bericht naar de server sturen, die de juiste client zal verwittigen.<br />
Voorbeelden van notificaties die nut hebben op de non-originating machine zijn:</p>
<ul>
<li> het huidig afspelende nummer in een muziekspeler-applicatie die gebruikt wordt om het hele huis/bedrijf van muziek te voorzien</li>
<li> een taak die voltooid is op een bepaalde machine (het downloaden van een bestand, het compileren van een programma, het afdrukken van een document op een gedeelde printer,&#8230;)</li>
<li> een kritieke fout op een server (zodat de serveradministrator deze zo snel mogelijk kan oplossen)</li>
<li> de wasmachine die klaar is met de was</li>
</ul>
<h2>Scenario 4: betere schatting van aanwezigheid van de gebruiker</h2>
<p>Doordat de verschillende machines waarop de gebruiker werkt nu met een grotere zekerheid kunnen bepalen wanneer deze persoon ze niet gebruikt (bijvoorbeeld: wanneer een gebruiker zeer actief is op een bepaalde computer, is de kans klein dat hij ook werkt op een andere computer), kunnen deze machines veel energie-efficiënter werken. Zo kan wanneer de computer niet gebruikt wordt het scherm automatisch uitgeschakeld worden.<br />
Een bijkomend voordeel hiervan is verhoogde veiligheid: de computer van een persoon kan automatisch geblokkeerd worden wanneer deze persoon zich niet in de buurt bevindt.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/presenceagent.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/presenceagent.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/presenceagent.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/presenceagent.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/presenceagent.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/presenceagent.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/presenceagent.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/presenceagent.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/presenceagent.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/presenceagent.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/presenceagent.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/presenceagent.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/presenceagent.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/presenceagent.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=26&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://presenceagent.wordpress.com/2009/03/06/scenarios-voor-het-gebruik-van-de-presence-agent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/88b04869769591f94f4511f881b019de?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=PG" medium="image">
			<media:title type="html">Bram Bonné</media:title>
		</media:content>
	</item>
		<item>
		<title>Android: screenshots</title>
		<link>http://presenceagent.wordpress.com/2009/03/02/android-screenshots/</link>
		<comments>http://presenceagent.wordpress.com/2009/03/02/android-screenshots/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 16:46:11 +0000</pubDate>
		<dc:creator>Bram Bonné</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://presenceagent.wordpress.com/?p=21</guid>
		<description><![CDATA[Aangezien deze blog er momenteel niet kleurrijk genoeg uitziet, hier wat android screenshots: In het volgende screenshot zie je wat er gebeurt wanneer ik de android client heb opgestart. Gezien er dan activiteit gedetecteerd wordt op het android toestel, zal hij dit laten weten aan de presence server, die op zijn beurt de andere clients [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=21&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Aangezien deze blog er momenteel niet kleurrijk genoeg uitziet, hier wat android screenshots:</p>
<p>In het volgende screenshot zie je wat er gebeurt wanneer ik de android client heb opgestart. Gezien er dan activiteit gedetecteerd wordt op het android toestel, zal hij dit laten weten aan de presence server, die op zijn beurt de andere clients ervan verwittigt. Eén van deze andere clients is mijn desktop (waarvan je de output ziet in het consolevenster rechts van de Android emulator. Merk ook de notificatie rechtsboven op die de gebruiker verwittigt dat zijn machine momenteel niet de meest actieve op zijn netwerk is.</p>
<p><a href="http://presenceagent.files.wordpress.com/2009/03/androidonline.png"><img class="alignnone size-full wp-image-22" title="androidonline" src="http://presenceagent.files.wordpress.com/2009/03/androidonline.png?w=500&#038;h=312" alt="androidonline" width="500" height="312" /></a></p>
<p>Op de volgende afbeelding heb ik het scherm van de Android telefoon geblokkeerd (hetgeen automatisch gebeurt als de gebruiker de telefoon een tijdje niet gebruikt heeft, of wanneer hij hiervoor kiest). Merk op dat de desktop client zichzelf dan zal zien als de meest actieve client op het netwerk.</p>
<p><a href="http://presenceagent.files.wordpress.com/2009/03/androidaway.png"><img class="alignnone size-full wp-image-23" title="androidaway" src="http://presenceagent.files.wordpress.com/2009/03/androidaway.png?w=500&#038;h=312" alt="androidaway" width="500" height="312" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/presenceagent.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/presenceagent.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/presenceagent.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/presenceagent.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/presenceagent.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/presenceagent.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/presenceagent.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/presenceagent.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/presenceagent.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/presenceagent.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/presenceagent.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/presenceagent.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/presenceagent.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/presenceagent.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=21&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://presenceagent.wordpress.com/2009/03/02/android-screenshots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/88b04869769591f94f4511f881b019de?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=PG" medium="image">
			<media:title type="html">Bram Bonné</media:title>
		</media:content>

		<media:content url="http://presenceagent.files.wordpress.com/2009/03/androidonline.png" medium="image">
			<media:title type="html">androidonline</media:title>
		</media:content>

		<media:content url="http://presenceagent.files.wordpress.com/2009/03/androidaway.png" medium="image">
			<media:title type="html">androidaway</media:title>
		</media:content>
	</item>
		<item>
		<title>Android werkt :)</title>
		<link>http://presenceagent.wordpress.com/2009/02/25/android-werkt/</link>
		<comments>http://presenceagent.wordpress.com/2009/02/25/android-werkt/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 10:19:29 +0000</pubDate>
		<dc:creator>Bram Bonné</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://presenceagent.wordpress.com/?p=18</guid>
		<description><![CDATA[De voorbije dagen ben ik vooral bezig geweest met het werkend krijgen van de Android implementatie van de Presence Agent, hetgeen nu ook gelukt is. Presence wordt gedetecteerd door te kijken of de input al dan niet gelocked is. Hiervoor biedt de Android API de KeyGuardManager klasse, waar ik lang naar heb moeten zoeken. Voor [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=18&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>De voorbije dagen ben ik vooral bezig geweest met het werkend krijgen van de Android implementatie van de Presence Agent, hetgeen nu ook gelukt is. Presence wordt gedetecteerd door te kijken of de input al dan niet gelocked is. Hiervoor biedt de Android API de <a href="http://developer.android.com/reference/android/app/KeyguardManager.html">KeyGuardManager</a> klasse, waar ik lang naar heb moeten zoeken.</p>
<p>Voor Android heb ik ook een (spartaanse) gebruikersinterface gemaakt, zodat de gebruiker met een gebruikersnaam naar keuze kan inloggen. De handigheid die Android hierbij biedt is dat een gebruikersinterface gemakkelijk gescheiden kan worden gehouden van de service die hij voorziet, zodat deze service constant op de achtergrond kan blijven draaien (hetgeen ervoor zorgt dat de gebruiker zich niet in de presence agent-interface moet bevinden, wat handig is voor een programma dat gebruikersactiviteit meet).</p>
<p>De desktop client laat nu ook notifications aan de gebruiker zien wanneer de huidige machine de meest actieve op het netwerk wordt, of wanneer het deze status verliest. De client weet nu dus ook wanneer dit het geval is.</p>
<p>Tenslotte heb ik een soort van &#8216;Instant messaging&#8217; ontwikkeld, waarbij verschillende users berichten naar elkaar kunnen versturen, en de server ervoor zorgt dat het bericht aankomt op de meest actieve machine van deze gebruiker. Ook de avahi service werkt nu naar behoren.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/presenceagent.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/presenceagent.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/presenceagent.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/presenceagent.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/presenceagent.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/presenceagent.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/presenceagent.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/presenceagent.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/presenceagent.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/presenceagent.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/presenceagent.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/presenceagent.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/presenceagent.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/presenceagent.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=18&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://presenceagent.wordpress.com/2009/02/25/android-werkt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/88b04869769591f94f4511f881b019de?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=PG" medium="image">
			<media:title type="html">Bram Bonné</media:title>
		</media:content>
	</item>
		<item>
		<title>Eindelijk!</title>
		<link>http://presenceagent.wordpress.com/2009/02/22/eindelijk/</link>
		<comments>http://presenceagent.wordpress.com/2009/02/22/eindelijk/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 12:39:19 +0000</pubDate>
		<dc:creator>Bram Bonné</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://presenceagent.wordpress.com/?p=16</guid>
		<description><![CDATA[Na ongeveer 3 dagen prutsen met Android heb ik eindelijk een presence client die meerdere keren een presence lijst van zijn peers kan ontvangen. Tijd om ervoor te zorgen dat zijn eigen presence gedetecteerd en verstuurd wordt, en dat de username niet langer statisch is.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=16&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Na ongeveer 3 dagen prutsen met Android heb ik eindelijk een presence client die meerdere keren een presence lijst van zijn peers kan ontvangen. Tijd om ervoor te zorgen dat zijn eigen presence gedetecteerd en verstuurd wordt, en dat de username niet langer statisch is.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/presenceagent.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/presenceagent.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/presenceagent.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/presenceagent.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/presenceagent.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/presenceagent.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/presenceagent.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/presenceagent.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/presenceagent.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/presenceagent.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/presenceagent.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/presenceagent.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/presenceagent.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/presenceagent.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=16&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://presenceagent.wordpress.com/2009/02/22/eindelijk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/88b04869769591f94f4511f881b019de?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=PG" medium="image">
			<media:title type="html">Bram Bonné</media:title>
		</media:content>
	</item>
		<item>
		<title>Avahi en Android</title>
		<link>http://presenceagent.wordpress.com/2009/02/19/avahi-en-android/</link>
		<comments>http://presenceagent.wordpress.com/2009/02/19/avahi-en-android/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 13:52:59 +0000</pubDate>
		<dc:creator>Bram Bonné</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://presenceagent.wordpress.com/?p=13</guid>
		<description><![CDATA[Met behulp van Avahi&#8217;s DBus-interface is het nu mogelijk om de presence server automatisch te detecteren, als deze zich op het lokale netwerk bevindt. Dit betekent dat de verschillende clients niet moeten vragen om een serveradres. Verder ben ik de voorbije dagen aan het proberen geweest om een presence client (het netwerkgedeelte van de presence [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=13&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Met behulp van Avahi&#8217;s DBus-interface is het nu mogelijk om de presence server automatisch te detecteren, als deze zich op het lokale netwerk bevindt. Dit betekent dat de verschillende clients niet moeten vragen om een serveradres.</p>
<p>Verder ben ik de voorbije dagen aan het proberen geweest om een presence client (het netwerkgedeelte van de presence agent) voor Google&#8217;s Android-platform te maken. Gezien dit gebaseerd is op Java (en niet op Python) moet ik hiervoor heel wat code herschrijven, hetgeen een tijdje duurt. Momenteel heb ik een programma dat zich kan aanmelden op een (vaste) server met een (vaste) login, en één keer de lijst van zijn peers kan ontvangen.</p>
<p>De kans is echter klein dat ik uiteindelijk ook de Android-client met Avahi ga laten werken, omwille van twee redenen: ten eerste is er momenteel geen fatsoenlijke Avahi/zeroconf-implementatie beschikbaar.  Ten tweede (en belangrijker) zal een Android-telefoon meestal voor presence gebruikt worden wanneer de gebruiker hiermee onderweg is (en zich dus niet binnen een wifi-netwerk bevindt). We hebben om deze reden dus een extern IP-adres voor de server nodig, hetgeen we niet over het internet kunnen opvragen door middel van Avahi/zeroconf. Een mogelijkheid bestaat eventueel wel om later een centrale server te gebruiken, waarmee alle &#8216;kleine&#8217; servers verbinden, een beetje zoals momenteel de PresenceServer de verschillende users verdeelt over zijn UserHandlers.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/presenceagent.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/presenceagent.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/presenceagent.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/presenceagent.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/presenceagent.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/presenceagent.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/presenceagent.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/presenceagent.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/presenceagent.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/presenceagent.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/presenceagent.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/presenceagent.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/presenceagent.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/presenceagent.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=13&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://presenceagent.wordpress.com/2009/02/19/avahi-en-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/88b04869769591f94f4511f881b019de?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=PG" medium="image">
			<media:title type="html">Bram Bonné</media:title>
		</media:content>
	</item>
		<item>
		<title>Unit Tests, Exception Handling en Refactoring</title>
		<link>http://presenceagent.wordpress.com/2009/02/12/unit-tests-exception-handling-en-refactoring/</link>
		<comments>http://presenceagent.wordpress.com/2009/02/12/unit-tests-exception-handling-en-refactoring/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 13:50:28 +0000</pubDate>
		<dc:creator>Bram Bonné</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://presenceagent.wordpress.com/?p=10</guid>
		<description><![CDATA[De voorbije twee dagen heb ik me voornamelijk bezig gehouden met het verbeteren van de bestaande code, in plaats van met het toevoegen van functionaliteit. Hiervoor ben ik begonnen met het schrijven van Unit Tests (hetgeen gemakkelijk is dankzij de unittesting library in Python), die al meteen een bug lieten bovenkomen. Gesloten sockets werden namelijk [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=10&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>De voorbije twee dagen heb ik me voornamelijk bezig gehouden met het verbeteren van de bestaande code, in plaats van met het toevoegen van functionaliteit.</p>
<p>Hiervoor ben ik begonnen met het schrijven van Unit Tests (hetgeen gemakkelijk is dankzij de unittesting library in Python), die al meteen een bug lieten bovenkomen. Gesloten sockets werden namelijk niet verwijderd uit de socketList van de server. Ook bleek uit de Unit Tests dat, wanneer een client zijn socket sloot, de geüpdate presence list nog niet werd gebroadcast naar alle andere clients.</p>
<p>Aangezien ik toch aan het refactoren was, heb ik meteen ook maar een hoop exception handling code geschreven, zodat de server niet crasht bij de kleinste fout, maar deze proper afhandelt en dan verder loopt.</p>
<p>Verder heb ik ook de code van de originele facadedaemon lichtjes aangepast, zodat lokaal de presence wordt aangegeven als &#8216;away&#8217; indien er een andere computer in het netwerk zit die een hoger presence level heeft dan de huidige client. Hij stuurt nu ook een presence level van &#8217;5&#8242; uit indien presence gedetecteerd wordt.</p>
<p>Door het integreren van mijn code met het bestaande framework heb ik nog een foutje ontdekt. Het was me namelijk blijkbaar ontgaan dat TCP werkt met streams in plaats van messages. Aangezien de facadedaemon vaak van presence verandert, zou het kunnen dat 2 of meer presence messages als 1 message worden gezien. Bijgevolg eindigen alle messages nu met de code &#8216;///&#8217;, om aan te geven dat de message daar stopt.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/presenceagent.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/presenceagent.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/presenceagent.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/presenceagent.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/presenceagent.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/presenceagent.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/presenceagent.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/presenceagent.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/presenceagent.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/presenceagent.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/presenceagent.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/presenceagent.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/presenceagent.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/presenceagent.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=10&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://presenceagent.wordpress.com/2009/02/12/unit-tests-exception-handling-en-refactoring/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/88b04869769591f94f4511f881b019de?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=PG" medium="image">
			<media:title type="html">Bram Bonné</media:title>
		</media:content>
	</item>
		<item>
		<title>Verbinden van meerdere gebruikers</title>
		<link>http://presenceagent.wordpress.com/2009/02/10/verbinden-van-meerdere-gebruikers/</link>
		<comments>http://presenceagent.wordpress.com/2009/02/10/verbinden-van-meerdere-gebruikers/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 12:33:01 +0000</pubDate>
		<dc:creator>Bram Bonné</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://presenceagent.wordpress.com/?p=5</guid>
		<description><![CDATA[De voorbije dagen was ik wederom verbaasd over de snelheid waarmee in Python code geschreven kan worden. Volgende aanpassingen heb ik gemaakt: De server kan nu ook connecties van buiten localhost aannemen (hetgeen nogal cruciaal is voor het verbinden van meerdere presence agents), door gebruik te maken van het IP-adres 0.0.0.0 in plaats van gethostname() [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=5&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>De voorbije dagen was ik wederom verbaasd over de snelheid waarmee in Python code geschreven kan worden. Volgende aanpassingen heb ik gemaakt:</p>
<ul>
<li>De server kan nu ook connecties van buiten localhost aannemen (hetgeen nogal cruciaal is voor het verbinden van meerdere presence agents), door gebruik te maken van het IP-adres 0.0.0.0 in plaats van gethostname() bij het bind()en. De laatste optie was degene die vermeld was in de officiële Python documentatie, maar blijkt -ondanks wat daar gezegd wordt- enkel te werken voor localhost.</li>
<li>Er is nu een (redelijk basic) client die gebruikt kan worden door de presence agent om te communiceren met de server.</li>
<li>De server heeft nu de mogelijkheid om meerdere accounts te voorzien, zodat één server kan gebruikt worden voor een hele hoop gebruikers. Per gebruiker wordt dan een nieuw thread gestart dat ongeveer dezelfde functionaliteit biedt als de oorspronkelijke server. De server is daarvoor opgesplitst in twee klassen: UserHandler (dat voor één gebruiker de activiteit bijhoudt) en PresenceServer (dat inkomende connecties accepteert, UserHandlers aanmaakt en verbindingen doorverwijst naar de juiste UserHandler).</li>
<li>Er worden nu meerdere presence levels ondersteund, in de vorm van integers. Voorheen was het voor een agent enkel mogelijk om &#8216;present&#8217; of &#8216;away&#8217; te zijn, terwijl er nu een getal kan gekozen worden om het &#8216;aanwezigheidsniveau&#8217; aan te geven.</li>
<li>Tenslotte is de code nog wat opgeschoond, met aandacht voor error handling. Bijkomend worden de UserHandlers ook gesloten wanneer er geen clients meer mee verbonden zijn, om resources te besparen.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/presenceagent.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/presenceagent.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/presenceagent.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/presenceagent.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/presenceagent.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/presenceagent.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/presenceagent.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/presenceagent.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/presenceagent.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/presenceagent.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/presenceagent.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/presenceagent.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/presenceagent.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/presenceagent.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=5&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://presenceagent.wordpress.com/2009/02/10/verbinden-van-meerdere-gebruikers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/88b04869769591f94f4511f881b019de?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=PG" medium="image">
			<media:title type="html">Bram Bonné</media:title>
		</media:content>
	</item>
		<item>
		<title>Netwerkprogrammeren in Python</title>
		<link>http://presenceagent.wordpress.com/2009/02/06/netwerkprogrammeren-in-python/</link>
		<comments>http://presenceagent.wordpress.com/2009/02/06/netwerkprogrammeren-in-python/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 15:56:39 +0000</pubDate>
		<dc:creator>Bram Bonné</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://presenceagent.wordpress.com/?p=3</guid>
		<description><![CDATA[Deze week heb ik ontdekt wat een geweldige programmeertaal Python is, en dit door het schrijven van een (basic) server die kan gaan dienen voor de communicatie tussen de verschillende presence agents op verschillende clients. De server zorgt ervoor dat de verschillende clients kunnen laten weten wanneer de gebruiker op hun machine &#8216;present&#8217; of &#8216;away&#8217; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=3&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Deze week heb ik ontdekt wat een geweldige programmeertaal Python is, en dit door het schrijven van een (basic) server die kan gaan dienen voor de communicatie tussen de verschillende presence agents op verschillende clients.</p>
<p>De server zorgt ervoor dat de verschillende clients kunnen laten weten wanneer de gebruiker op hun machine &#8216;present&#8217; of &#8216;away&#8217; is, en dat bij een update de vernieuwde lijst naar alle clients doorgestuurd wordt. Heel anders dan bij socketprogramming in C werd de meeste tijd gespendeerd aan programmeren in plaats van aan debuggen.</p>
<p>Dank ook aan de zeer overzichtelijke Python documentatie, die me alles vertelt wat ik moet weten over socket programming in Python (de hele server heb ik gemaakt op een plaats zonder internettoegang).</p>
<p>Up next: zorgen dat de clients ook daadwerkelijk communiceren met de server, zodat we niet gewoon 2 telnet-gebruikers hebben. Uiteindelijk moet het ook de bedoeling zijn dat het systeem gedecentraliseerd zal werken.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/presenceagent.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/presenceagent.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/presenceagent.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/presenceagent.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/presenceagent.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/presenceagent.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/presenceagent.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/presenceagent.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/presenceagent.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/presenceagent.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/presenceagent.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/presenceagent.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/presenceagent.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/presenceagent.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=presenceagent.wordpress.com&amp;blog=6479522&amp;post=3&amp;subd=presenceagent&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://presenceagent.wordpress.com/2009/02/06/netwerkprogrammeren-in-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/88b04869769591f94f4511f881b019de?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=PG" medium="image">
			<media:title type="html">Bram Bonné</media:title>
		</media:content>
	</item>
	</channel>
</rss>
