tag:blogger.com,1999:blog-45451395124830175582024-03-13T18:35:10.245+01:00Gero Vermaas on...Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.comBlogger82125tag:blogger.com,1999:blog-4545139512483017558.post-73557539024069111702010-01-03T19:43:00.009+01:002010-01-03T20:50:10.627+01:00Find Kiva loan request using Twitter<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.kiva.org"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 170px; height: 90px;" src="http://l3-1.kiva.org/r18916/images/logoLeafy3.gif" alt="" border="0" /></a>Since a month or so we're lending money through <a href="http://www.kiva.org/">Kiva</a>. Kiva's mission is <b> </b>to connect people through lending for the sake of alleviating poverty. Kiva is the world's first person-to-person micro-lending website, empowering individuals to lend to unique entrepreneurs around the globe. (<a href="http://www.kiva.org/about">Check it out</a>).<br /><br />After deciding to participate the next question was, what type of loans do we want to support? We came up with some simple criteria (Education and Health sectors) and searched for loans that matched these criteria using the <a href="http://www.kiva.org/app.php?page=businesses">Kiva Lend page</a>. Unfortunately no loans matched our criteria. So I subscribed to the <a href="http://www.kiva.org/rss/businesses?status=fundRaising&regions%5B0%5D=All&sectors%5B0%5D=15&gender=Female&sortBy=Popularity&queryString=&limit=20&offset=0">RSS feed</a> that's available using <a href="http://www.google.com/reader">Google Reader</a> assuming loans matching our criteria would pop up in Google Reader on a regular basis. But....almost no loans popped up and if the did appear in Google Reader, by the time I noticed it the loan was already fulfilled by other lenders at Kiva (which is good of course!).<br /><br />This last observation led to some further investigation and by checking <a href="http://www.kiva.org/app.php?page=businesses">Kiva Lend page</a> for loans with <a href="http://www.kiva.org/app.php?page=businesses&queryString=&status=payingBack&gender=All&sectors[]=15&regions[]=All&sortBy=Most+Recent">status "Paying back" and sector "Education</a>" I noticed that several loans did start recently but did not show up in Google Reader. Probably caused by the fact that Google Reader is not checking the RSS feed frequently enough and, by the time it is checking the RSS feed, the loan is already fulfilled and removed from the feed. Also, I'm not really on-top of my RSS feed all day so if a loan request did appear in the feed, by the time I notice it, it was already fulfilled.<br /><br />So, I need another way to spot loans that meet our criteria. A more real-time notification kind of service. I googled a bit and was not able to find such a service, but did find the <a href="http://build.kiva.org/">Kiva API documentation</a>. Using the API it is possible to create a simple service that would frequently check Kiva for new loans that match our criteria and notify me via <a href="http://help.twitter.com/forums/10711/entries/14606">Twitter Direct Message</a>. (Twitter notifications pop up on my Mac or iPhone immediately). This way I get notified shortly after the loan request is submitted to Kiva and can immediately check if it's a loan we would want to support.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Fm9bvPuhCh8/S0Dtos23dTI/AAAAAAAAAPo/-CAekiMYIvU/s1600-h/kivadm-example.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 114px;" src="http://4.bp.blogspot.com/_Fm9bvPuhCh8/S0Dtos23dTI/AAAAAAAAAPo/-CAekiMYIvU/s320/kivadm-example.png" alt="" id="BLOGGER_PHOTO_ID_5422595234845914418" border="0" /></a><br /><br />To make it a learning experience for myself I decided to use <a href="http://www.scala-lang.org/">Scala </a>as the language and created a little program that does just what I want (see example screenshot on the right). So now I get notified when a new loan is submitted to Kiva that meets our criteria and I can immediately check it out and act on it.<br /><br />Let me know what you think of this. If more people are interested I'll put a bit more effort into it and make it available for others to also use this service.Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com2tag:blogger.com,1999:blog-4545139512483017558.post-33473861098385983212009-12-18T21:47:00.003+01:002009-12-19T15:57:32.254+01:00Improved Google Maps integration with JAlbum Chameleon skinAbout a year ago <a href="http://blog.vermaas.net/2007/12/having-fun-with-google-maps-and.html?showComment=1258977231936#c2911219299696714940">I had some fun integrating Google Maps into the JAlbum Chameleon skin</a>. Recently a couple of comments had been added to this blog post suggesting some improvements, so I sat down again, tried to remember how this worked and realized a couple of improvements. IMHO this solution could now easily be integrated into the standard <a href="http://jalbum.net/">JAlbum</a> <a href="http://www.lazaworx.com/chameleon/index.html">Chameleon skin</a>.<br /><br />What's improved?<br /><ul><li>For album directories that contain multiple index pages, the Google Map on each index page now shows the images for that index page. Previously only the first index page contained a working Google Map and it included pinpoints for all index pages.</li><li>The old version used an iframe to plug the Google Map into the JAlbum pages. This is no longer necessary because you can now use your Google Maps API key for a complete web domain (no longer bound to a specific directory). This now makes to generate all that is needed from JAlbum itself, no need to use an extra HTML file for the iframe that you had to manually put on your server.<br /></li></ul>For some examples, see <a href="http://gerodt.homeip.net/webalbums/gero/By%20Date/2007/05%20May/index.html">this</a>.<br /><br />If you'd want to use this Google Maps integration then:<br /><ol><li>Get yourself a <a href="http://code.google.com/apis/maps/signup.html">Google Maps API key</a>. (Just specify the domainname and not the subdirectory where your webalbum is hosted.</li><li>Download the <a href="http://gerodt.homeip.net/chameleon-customization/8.1/slide.htt">slide.htt</a> and <a href="http://gerodt.homeip.net/chameleon-customization/8.1/index.htt">index.htt</a> files and place them in JAlbum/skins/Chameleon directory (make of backup if the originals).</li><li>Specify the following user setting in Settings/Advanced/User Variables:</li></ol><ul><li><pre># The root where the webalbum will be hosted<br />skin.webroot=/your/webalbum/root</pre></li><li><pre># The Google MAP API key that you've have created for your site (see step 1)<br />googleMapsAPIKey=<your></pre></li></ul>Note that I'm still using JAlbum version 8.1.5, it might not work (without changes) on newer versions of JAlbum. Actually, I'm hoping for a JAlbum skin to integrate this solution out of the box...Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-58324410795559738592009-04-21T20:52:00.014+02:002009-04-22T09:19:46.638+02:00Make JAlbum RSS feeds work for iPhoto<div>I've got all my photo's managed by <a href="http://www.apple.com/ilife/iphoto/">iPhoto '09</a> on a Mac Mini and wanted to have a subset (like the last 6 months) of these pictures on my iPhone. I sync my iPhone with my MacBook Pro (not the Mac Mini), so the challenge was to get the pictures from iPhoto on the Mac Mini to iPhoto on the MacBook Pro and from there sync them to the iPhone. Piece of cake you'd think: iPhoto has a sharing option, simple create a smart album on the Mac Mini that has all pictures of the last six month, share that smart album and subscribe to that shared album from iPhoto on the MacBook Pro. Almost done, now I only have to tell iTunes on the MacBook Pro to sync that shared smart album to the iPhone.... bummer! It is not possible to sync shared albums you subscribed too to your iPhone :-( Now what?</div><div><br /></div><div>I don't give up that easy. iPhoto also has a possibility to subscribe to RSS photo feeds and low and behold...these can be synced to the iPhone using iTunes. I create my webalbums using <a href="http://jalbum.net/">JAlbum</a> and a while backI <a href="http://blog.vermaas.net/2009/01/making-jalbum-rss-feeds-works-in.html">tweaked the JAlbum RSS feeds</a> a bit to:</div><div><ol><li>make them work in regular RSS readers like GoogleReader and NetNewsWire, and</li><li>ensure that items in sub folders are included in the main feed</li></ol><div><span class="Apple-style-span" style="font-size: medium;">That all worked fine but and when I subscribed to one of my albums feeds from </span><a href="http://www.apple.com/ilife/iphoto/"><span class="Apple-style-span" style="font-size: medium;">iPhoto '09</span></a><span class="Apple-style-span" style="font-size: medium;"> it all </span><i><span class="Apple-style-span" style="font-size: medium;">seemed</span></i><span class="Apple-style-span" style="font-size: medium;"> to work... initially. But taking a closer look I noticed that iPhoto was only downloading the thumbnails and not the high resolution version of the images. Bummer again, now what? The <media:content url="..."> tags in the feed were correctly pointing to the high resolution version of the images, but iPhoto was simply ignoring that (strangely it did use the </span><span class="Apple-style-span" style="font-family:'courier new';"><media:thumbnail url=""><span class="Apple-style-span" style="font-family:Georgia;"><span class="Apple-style-span" style="font-size: medium;"><media:thumbnail url="..."> tags to download the thumbnails). A little Googling and searching in the iPhoto support forums would surely teach me what Apple requires for a feed to work in iPhoto.... no luck. I then took a look at some photo feeds published on Apple's </span><a href="http://www.apple.com/mobileme/"><span class="Apple-style-span" style="font-size: medium;">MobileMe</span></a><span class="Apple-style-span" style="font-size: medium;"> and subscribed to them from iPhoto. These worked fine. Only when I took a look at the contents of these MobileMe RSS feeds I quickly decided that I was not going to implement all that Apple proprietary tags in my feed. Increadible how much stuff was in there.</span></span></media:thumbnail></span></div><div><br /></div><div><span class="Apple-style-span" style="font-size: medium;">I forgot about the whole thing for a while and this week did a bit more Googling and stumbled on </span><a href="http://photocastr.quantumfoam.org/"><span class="Apple-style-span" style="font-size: medium;">Photocastr</span></a><span class="Apple-style-span" style="font-size: medium;">:</span><i></i></div><div><i><span class="Apple-style-span" style="font-size:medium;">"</span></i><span class="Apple-style-span" style="font-family:'Lucida Grande';"><i><span class="Apple-style-span" style="font-size:medium;">Making it easy to turn flickr photos into iPhoto v6+ compatible photocasts"</span></i></span></div><div style="text-align: left;"><span class="Apple-style-span" style="font-family:'Lucida Grande';"><br /></span></div><div style="text-align: left;"><span class="Apple-style-span" style="font-family:'Lucida Grande';"><span class="Apple-style-span" style="font-family:Georgia;"><span class="Apple-style-span" style="font-size: medium; ">If they can figure it out, then I should also be able to reverse engineer that. After taking a closer look at the RSS feeds they created I noticed that they had a few iPhoto specific tags included and most importantly they used the tag. Adding that enclosure tag did the trick. No need for iPhoto specific tags, no bloated RSS feeds and the feeds still pass the </span><a href="http://feedvalidator.org/"><span class="Apple-style-span" style="font-size: medium;">feedvalidator.org</span></a><span class="Apple-style-span" style="font-size: medium;"> tests. The </span><span class="Apple-style-span" style="font-family:'Lucida Grande';"><span class="Apple-style-span" style="font-family:'courier new';"><a href="http://cyber.law.harvard.edu/rss/rss.html#ltenclosuregtSubelementOfLtitemgt"><span class="Apple-style-span" style="font-size: medium;">enclosure</span></a></span><span class="Apple-style-span" style="font-family:Georgia;"><span class="Apple-style-span" style="font-size: medium;"> tag is defined in RSS 2.0, and Apple iPhoto is properly working without requiring all kinds of proprietary tags.</span></span></span></span></span></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Now I can sync the pictures to my iPhoto, not directly from the iPhoto on the other machine, but since I <a href="http://blog.vermaas.net/2007/07/automate-webalbum-maintenance-using_29.html">automatically publish a subset of the iPhoto to my JAlbum webalbum</a>, this works fine for me. There is still one drawback: iPhoto '09 "<a href="http://www.apple.com/ilife/iphoto/#faces">Faces</a>" functionality does not work on pictures in RSS feeds, something left to wish for ;-)</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Note: to get the original (high resolution) images available in your JAlbum webalbum you have to set "Link to originals via scaled images" in the JAlbum Settings/Navigation tab.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">The updated album.rss template file can be downloaded <a href="http://gerodt.homeip.net/chameleon-customization/8.1/album.rss">here</a>, see the <a href="http://blog.vermaas.net/2009/01/making-jalbum-rss-feeds-works-in.html">original blog post</a> for how to install and use it. </div></div>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-41584627009376016152009-02-16T19:22:00.006+01:002009-02-16T19:36:46.668+01:00Using Google Sync for iPhone with 5+ Calendars<p>I recently turned on <a href="http://www.google.com/mobile/apple/sync.html">Google Sync for the iPhone</a> to enable wireless syncing of my <a href="http://www.google.com/calendar">Google calendar</a> and contacts with my iPhone. A limitation of the current version of Google Sync for the iPhone is that it <a href="http://www.google.com/support/mobile/bin/answer.py?answer=139635">only supports 5 Calendars</a>. I've got more than 5 Calendars in Google Calendar so that's a problem. Fortunately, many of these Calendars are read only (e.g. public/school holidays, your favorite teams game schedule, etc.) and by combining multiple read-only calendars into 1 read-only calendar it is possible to get them all sync-ed between Google Calendar and you're iPhone.<br /></p>Now all we need is a utility that merges the calendars. Enter <a href="http://code.google.com/p/merge-ics/">merge-ics</a>, a Python script that reads all .ics files in a file system directory and merges them into one new .ics file which you can then import into Google Calendar. Instead of syncing the individual calendars to you iPhone, you now simply sync the combined one. You loose the per calendar color for the merged calendars, but that's acceptable for me.<br /><p>Of course you can manually download the .ics files of the individual calendars and then import the combined .ics file into Google Calendar, but wouldn't it be nice is this is automated? Do do that I created a shell script that:<br /></p><ol spacing="compact"><li>downloads individual calendar .ics files. The URLs of these calendars are stored in a text file.</li><li>kicks of the merge-ics python script to combine the .ics files</li></ol><p>In addition I'm hosting that combined .ics file on my webserver, subscribed to it from Google Calendar and scheduled the script to run on a daily basis. So now I'm able to sync these read only calendars to my iPhone without further manual intervention.<br /></p><p>Below are the shell script and an example text file contains the calendars to be merged. If you'd want to use it, make sure you update the variables at the beginning of the script and also update the variables in the merge-ics.py Python script. Needless to say that you'll need to download and install that script form the <a href="http://code.google.com/p/merge-ics/">merge-ics</a> site.<br /></p><pre># Script takes one argument: filename containing the URLs of the<br /># Calendar .ics files to be downloaded.<br /><br />TARGET_ICS_DIR=/var/tmp/merge_ics<br />TEMP_ICS_FILE=/tmp/temp.ics<br />MERGE_ICS_SCRIPT=/opt/merge_ics-1.6/merge_ics.py<br /><br />ICALSFILE=$1<br /><br /># Get new copies of the ICAL files<br />for url in `cat ${ICALSFILE}` ; do<br /><br /> # Only successfuly downloaded files are copied to<br /> # ${TARGET_ICS_DIR} to be able to deal with temporarily<br /> # unavailability of a calendar.<br /> rm -f ${TEMP_ICS_FILE}<br /> wget -q -O ${TEMP_ICS_FILE} ${url}<br /> if [ $? -eq 0 ]; then<br /> cp ${TEMP_ICS_FILE} ${TARGET_ICS_DIR}/`basename ${url}`<br /> else<br /> echo "Calendar ${url} could not be retrieved"<br /> fi<br /><br />done<br /><br /># Run the merge_ics script<br />python ${MERGE_ICS_SCRIPT}<br /></pre><p>Example text file with input:<br /></p><pre>www.markthisdate.com/calendar/Schoolvakanties_2008_2009_Regio_Midden_Basisonderwijs_Speciaal_onderwijs_2533.ics<br />www.markthisdate.com/calendar/Vrije_dagen___feestdagen_Nederland_2007___2009_2067.ics</pre>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com1tag:blogger.com,1999:blog-4545139512483017558.post-16061384940572409552009-02-10T20:21:00.003+01:002009-02-10T20:40:01.400+01:00Migrated blog from Pebble to Google Blogger<p>After moving <a href="http://blog.vermaas.net/2008/11/finally-moving-my-mail-en-calendar-to_10.html">my mail en calendar to the cloud</a> I decided to also to stop hosting my own blog. I've been using <a href="http://pebble.sourceforge.net/">Pebble</a> for well over 5 years and have mostly been pretty happy with it. Why?<br /></p><ul spacing="compact"><li>Running you own does consume some maintenance time (do upgrades, etc). Especially re-doing the tweaks to templates etc became a hassle.<br /></li><li>I had occasional problems doing posts (typed in a full post, hit the button and ooops... post gone. May well be caused by local set up but even in that case it's even better to move it out).</li><li>It blocked me from doing major OS updates since I wanted to prevent downtime (and I finally want to upgrade my Mac Mini to Leopard).<br /></li><li>It's dependent on the availability of my server and network connection. Both are pretty reliable but still...</li><li>Using Cloud services is this years hype ;-)<br /></li></ul><p>Getting a blog setup with <a href="http://www.blogger.com">Google Blogger</a> is easy, but of course you also want to migrate the old blog posts and not break the links from other sources to you blog. I digged around hoping to find an easy way to migrate the blog posts to Google Blogger and somehow redirects visitors from the old to the new location... no luck. Google Blogger does have an import option, but it only imports it's own exports and <a href="http://code.google.com/p/blogsync-java/">the only tool I found</a> migrates from Wordpress to Google Blogger. So I had to scratch my own itch and created a simple command line utility that:<br /></p><ul spacing="compact"><li>Reads the original Pebble posts and posts them to Blogger. This includes comments but due to limitations in the <a href="http://code.google.com/apis/blogger/">Google Blogger API</a> the details of the original poster of the comment had to be included in the comment text and I show up as the poster. (Google does not allow to specify another author as poster of a comment though the API to prevent spam.)<br /></li><li>Validates links in blogs posts and attempts to fix them where possible (for example links between blog posts that would break when moving to new location). If it can't fix a link, it reports this in the log file.</li><li>Generate a redirects file that you can include in your <a href="http://httpd.apache.org/">Apache</a> httpd.conf to redirect visitors that access the old location to the new location of a post.<br /></li></ul><p>You can find the utility here: <a href="http://code.google.com/p/blogger-importer/">Blogger Importer</a>. Feel free to use or extend it. I did the trick for me, but maybe you need some additional features. The current version only works for Pebble but it is set up such that you can easily plug in other sources and migrate these to Blogger.<br /></p>A limitation of hosting my blog at Blogger is that it's less easy to create plugins. For Pebble I <a href="http://blog.vermaas.net/2008/04/integrating-pebble-blog-with-tweeter.html">created my own plugin</a> that would post a message on Twitter each time I created/updated a blog post. There's no such plugin for Blogger (yet) and I don't think Google provides hooks in their Blogger Dashboard where I could stick that functionality in. There is a service (<a href="http://twitterfeed.com/">TwitterFeed</a>) that does this, but then you'd have to provide your Twitter credentials to that site... not sure if I'd want to do that.<br /><br />Another point I have to fix are the Google Maps integrations that I did for showing <a href="http://blog.vermaas.net/search/label/skeeler">Skeeler routes</a>. For Pebble I created a 'decorator' plugin that would do some tweaks to the blog post contents which caused it to show the skeeler route on a <a href="http://maps.google.com">Google Map</a>. This is now broken and I have to find a solution for that (worst case I'd have to 'hardcode' it into the blog posts themselves, would be nice if it's a more elegant solution though).Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com3tag:blogger.com,1999:blog-4545139512483017558.post-23249882916169456492009-02-04T13:14:00.001+01:002009-02-10T20:20:52.428+01:00Migrating blog to Google BloggerAs a heads up...<br /><br />I'm migrating my blog from self-hosted Pebble to Google Blogger. I'll be doing this in the coming days so you may want to update your feed settings:<br /><br />New blog location: <a href="javascript:void(0);/*1233749903552*/">http://blog.vermaas.net </a><br />New feed: <a href="javascript:void(0);/*1233749918428*/">http://blog.vermaas.net/feeds/posts/default</a>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-89555199062445141042009-01-16T17:11:00.002+01:002009-04-21T21:38:57.698+02:00Making JAlbum RSS Feeds works in regular RSS readers<p> Since version 8 <a href="http://jalbum.net/">JAlbum</a> supports RSS feeds for the generated webalbums. Unfortunately, the feeds are not accepted by standard RSS readers like <a href="http://google.com/reader">Google Reader</a> and <a href="http://www.newsgator.com/INDIVIDUALS/NETNEWSWIRE/">NetNewsWire</a>. Bummer! The problems are caused by: </p><ol spacing="compact"> <li>the fact that the generated feeds contains relative URLS (and RSS requires absolute URLs)</li> <li>the way JAlbum feeds try to include feeds of subfolders. The goal of including the items of subfolders in the parent RSS feed is to make it possible to subscribe to 1 feed and also get items in subolders included (instead of having to subscribe to each subfolder feed separately). JAlbum uses a proprietary JAlbum tag (<jalbum:link..>)to include sub folder RSS feeds and this tag is nog recognized by regular RSS feeds</li></ol><p> </p><p> You can try this out by running the generated feeds through <a href="http://www.blogger.com/feedvalidator.org">feedvalidator.org</a>. As an example, <a href="http://feedvalidator.org/check.cgi?url=http%3A%2F%2Fgerodt.homeip.net%2Fjalbumoriginalrss%2Falbum.rss">here's</a> the result of running an original JAlbum generated RSS feed through feedvaidator.org. In addition to the reported erros, the <jalbum:link..> tags are nog recognized by regular RSS readers. </p><p> Luckily JAlbum is <a href="http://jalbum.net/developer">pretty open</a> and you can easily customized skins and also the template that generates the album.rss feed. The issue with the relative URLs could easily be fixed by adding a user defined variable in JAlbum and some minor adjustments to the album.rss template. </p><p> The issue with the inclusion of images from subfolders required a bit more work. It appears that there is no (standard) way to have an RSS feed include another RSS feed. So I changed the albums.rss template such that items of subfolder are also added to the album.rss feed file of the parent folder. No real inclusion and it feels a bit redundant to include items in the RSS feed of the folder itself and in the feeds of all parent folders, but at least the feed is now working in regular RSS readers. <a href="http://gerodt.homeip.net/webalbums/gero/By%20Subject/Mixed/album.rss">Here's</a> an example of a feed.<br /></p><p> While implementing the new template file I did run into a few problems that I could not explain, but did find a workaround for. <a ref="http://jalbum.net/forum/thread.jspa?messageID=186204">First</a>, it was not possible to use a <a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/Transformer.html">javax.xml.transform.Transformer</a>, but using <a href="http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/ls/LSSerializer.html">org.w3c.dom.ls.LSSerializer</a> it worked fine. Second, some of the standard JAlbum variable sdid not always have the same Java type and sometimes were simply not set when trying to access them from the album.rss tempate. So I had to test for this, try to convert to required type where possible and if all failed, the picture is ignored and not included in the RSS feed. The template now runs successfully on my webalbum picture collection (4500 pictures).<br /></p><p>Also want to use this?<br /></p><ol spacing="compact"> <li>Make a backup of the Jalbum/system/album.rss file. This is the original template file.</li> <li>Download the <a href="http://gerodt.homeip.net/chameleon-customization/8.1/album.rss">updated album.rss file</a> and copy it to Jalbum/system directory</li> <li>Add a user variable 'webroot' to your JAlbum project. Go to Settings/Advanced/User Variables. The value of this variable should be the root of the webalbum on your webserver (for example http://my.domain/webalbum)</li> <li>(Optionally) Add a user variable rssItemsNotOlderThanDays to your JAlbum project. If set, then only pictures which is not older than 'rssItemsNotOlderThanDays' days are included in the RSS feed. If not set, all pictures found are included and that may lead to rather big feed files.</li><li>--ADDED--<br />(Optionally) Add a user variable topAlbumTitle to your JAlbum project. If set, then the value of the variable will be used as the title for the top level directory (if not set, the title of the top level directory is empty).<br />-- EA ADDED--</li></ol><p> Note: I've been using this with JAlbum version 8.1.5. I suspect that it will work with all 8.x versions, but I'm not sure.<br /></p><p><strong>Update:</strong></p><p>Based on suggestions in the <a href="http://jalbum.net/forum/thread.jspa?messageID=186677#186677">JAlbum forum</a> I made some minor changes to the template:</p><ul> <li>JAlbum variable mediarssDate is used a pubDate (instead of picture date, this was already the case in the original template)</li> <li>Added copyright notices</li> <li>Corrected the way the guid is determined</li></ul>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com41tag:blogger.com,1999:blog-4545139512483017558.post-10706045108626462842008-12-28T19:59:00.000+01:002009-02-02T19:31:13.834+01:00Google Maps - JAlbum 8.1 integration<p> Earlier this year (see <a href="http://gerodt.homeip.net/blog/gero/2007/12/08/1197118680000.html">here</a> and <a href="http://gerodt.homeip.net/blog/gero/2008/02/02/1201977060000.html">here</a>) I made an integration between the <a href="http://jalbum.net/">JAlbum</a> Chameleon skin and <a href="http://maps.google.com">Google Maps</a>. This would show an in-page Google Map for pictures that have GPS coordinates. Works really nice. Recently I wanted to create an RSS feed of my webalbums and noticed that the latest JAlbum version did support this. Nice, so I decided to upgrade JAlbum to version 8.1 and as part of that also had to tweak my enhancements to the Chameleon skin a bit. </p>
<p> If you're interested... you need to copy the following two files to the JAlbum/skins/Chameleon directory: </p>
<ul spacing="compact">
<li><a href="http://gerodt.homeip.net/chameleon-customization/8.1/index.htt">index.htt</a></li>
<li><a href="http://gerodt.homeip.net/chameleon-customization/8.1/slide.htt">slide.htt</a></li>
</ul>
<p>You also have to set the following two user variables (Settings/Advanced/User Variables):<br />
</p>
<p> </p>
<pre># The root where the webalbum will be hosted<br />webroot=/webalbums/gero<br /># The location of the HTML page that displays the map and<br /># has the Google Maps code in it<br /># This location is bound to the Google Maps API key.<br />googlemapIframe=/webalbums/googlemap.html<br /></pre>
<p>For a full description on what how to use the Google Maps - JAlbum integration refer to the earlier posts (<a href="http://gerodt.homeip.net/blog/gero/2007/12/08/1197118680000.html">here</a> and <a href="http://gerodt.homeip.net/blog/gero/2008/02/02/1201977060000.html">here</a>). </p>
<p> Now there was one dissapointment... the feed generated by JAlbum cannot be handled by <a href="http://www.google.com/reader">Google Reader</a> and <a href="http://netnewswire.com/">NetNewsWire</a>. Will try and tweak the JAlbum template that generates the feed such that it works correct and post the results here. </p>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-52768285857299781102008-12-28T19:50:00.000+01:002009-02-02T19:31:03.153+01:00JAlbum 8.1 and Google Maps integration<p> Earlier this year (see here and here) I made an integration between the JAlbum Chameleon skin and Google Maps. This would show an in-page Google Map for pictures that have GPS coordinates. Works really nice. Recently I wanted to create an RSS feed of my webalbums and notices that the latest JAlbum versions did support this. Nice, so I decided to upgrade JAlbum to version 8.1 and as part of that also had to tweak my enhancements to the Chameleon skin a bit. </p>
<p> If you're interested... you need to copy the following two files to the JAlbum/skins/Chameleon directory: </p>
<ul spacing="compact">
<li>index.htt</li>
<li>slide.htt</li>
</ul>
<p> </p>
<p> </p>
<pre>You also have to set the following two user variables (Settings/Advanced/User Variables):<br /># The root where the webalbum will be hosted<br />skin.webroot=/webalbums/gero<br /># The location of the HTML page that displays the map and<br /># has the Google Maps code in it<br /># This location is bound to the Google Maps API key.<br />skin.map.iframe=/webalbums/googlemap.html<br /></pre>
<p> </p>
<p> For a full description on what how to use the Google Maps - JAlbum integration refer to the earliers posts (here and here). </p>
<p> Now there was one dissapointment... the feed generated by JAlbum cannot be handled by Google Reader and NetNewsWire. Will try and tweak the JAlbum template that generates the feed such that it works correct and post the results here. </p>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-61877079060393228612008-12-09T13:30:00.001+01:002009-02-06T14:55:53.128+01:00This is what they asked for...<img alt="The example meditation bench" src="http://www.lwrightnm.com/images/medbench.jpg" align="right" width="175" height="119" />In IT we all know <a href="http://crossthebreeze.files.wordpress.com/2008/01/analogy.jpg">these cartoons</a> where the first picture shows what the customer asked for, the second how the analyst interpreted it, etc. The last picture shows what was actually delivered to the client. Working in IT I'm sure I also made this mistake, but last week found myself making the same mistake outside IT. My girlfriend asked me if I could make a little meditation bench. To illustrate what she meant, she showed borrowed meditation bench and explained that she'd like one minor change: it would be nice if it was possible to fold the bench legs so that it would take less space when it was not in use. No problem! Finally a chance to show off some 'real' craftmenship.<br /><br />So saturday morning I measured the sizes of the borrowed meditation bench, grabbed some <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Fm9bvPuhCh8/SYxBLE3MIlI/AAAAAAAAAMA/mHMbpGN7d-M/s1600-h/meditationbench.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 175px; height: 131px;" src="http://3.bp.blogspot.com/_Fm9bvPuhCh8/SYxBLE3MIlI/AAAAAAAAAMA/mHMbpGN7d-M/s320/meditationbench.jpg" alt="" id="BLOGGER_PHOTO_ID_5299682520047821394" border="0" /></a>wood from the garage, sawed it, bought a couple of hinges and screwed it all together. I tried the bench and then my analysis kicked in: "the bench legs could spontaneously fold in while sitting on the bench causing an abrupt end of the meditation and some pain in the rear end". Of course I had to solve this and turn this risky bench into a rock solid bench. To achieve this a removable support bar was placed between the legs ensuring that the legs could not spontaneously fold in. Because it was removable, you could still fold the legs when storing the bench away. Perfect! Right?<br /><br /><img src="http://www.drishtiyoga.com/Merchant2/graphics/00000001/meditbenchdemod250.jpg" alt="The way to sit on it..." align="right" width="175" height="145" /> Completely happy with my craftmenship I showed the bench to my girlfriend. She took a close look, liked the way the legs folded in and the stability when the support bar was inserted and then tried to sit on it... in a way I had not envisioned. When I tried it out I sat on it like on a normal bench with my legs forward, perfect, no problem. However, the meditation way to sit on it is with the your legs bend under the bench.... and my beautiful support bar made that impossible. Ouch!<br /><br />What did I do wrong? I clearly did not ask enough questions. When people ask you to create something for them you should always make sure that you understand how they are planning to use it. Ask questions, let them demo or illustrate it, ... and be very cautious when they say something like "I want a copy of that one with just one minor adjustment". If you don't understand how they're planning to use it, it's hard to see the consequences of that minor adjustment and the impact it has on the set of valid solutions.<br /><br />(It was possible to change the 'stability solution' to one that did allow for putting your legs below the bench, everybody happy in the end).Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com1tag:blogger.com,1999:blog-4545139512483017558.post-45826905243926730112008-11-10T20:40:00.000+01:002009-02-02T19:30:50.878+01:00Finally moving my mail en calendar to the cloud: Google Apps<p>
For the last 6 years or so I've been hosting my own IMAP mail server and this evolved from just running an IMAP server on Linux to having a the full <a href="http://zimbra.com">Zimbra collaboration</a> suite in the end. Of course it is fun to do this, you learn a bit. However, it does take time and resources to do it properly and the guys at Google can all do that for you: <a href="http://google.com/apps">Google Apps</a>. You can use Google Apps for free for your familily and get Email, Calendar and much more functionality. And what's best: you don't have to do any maintenance, simple use it. One point to take note of, you do need a domainname, but who does not own a domainname nowedays?
</p>
<p>
Of course there was the migration question... there was close to 10G of mail stored in my server (split over multiple accounts) and we did not want to loose that. How to get this into GMail? Several blogs posts suggest to simple use your desktop mail client (Mail.app on OS X, or Thunderbird) and then simple copy the mail (folders) from one IMAP account to the other. Sure works, but when I tried the copy process stopped several times due to a time-out... and then it was not clear what was copied and what was not copied yet. Time for a more robust and scriptable solution, enter <a href="http://www.linux-france.org/prj/imapsync/README">imapsync</a>. Imapsysc is a Perl script that can keep two IMAP accounts in-sync. It can be run multiple times and then will only copy the messages not available on the target server yet. So that also makes it perfects to do a phase by phase migration (first copy all existing mail and then just before you switch over to the new IMAP server, do a last - quick - run to copy the few remaining messages.
</p>
<p>
I've been using Google Apps for ~2 weeks now, am I happy with it? Definitely, here a couple of reasons:
<ul spacing="compact">
<li>the web ui for mail is great and I'm more productive processing tons of mail. After setting up some filters it is much easier to quickly archive mail and by assigning colors to filters I can quickly spot the important new mails. And of course, searching is a breeze... I have hardly used my regular mail client (Mail.app on OS X) since I switched.
</li><li>Using <a href="http://spanningsync.com/">SpanningSync</a>I can perfectly sync my Google Calendar with iCal on multiple Macs and keep them in sync with my iPhone. With Zimbra I also managed to sync them (<a href="/blog/gero/2008/06/20/1213953060000.html">see earlier post</a>) but one big drawback was that the calendars hosted on Zimbra were read-only on iPhone... not very convenient when you have to move an appointment.
</li><li>We can easily share calendars within the familily
</li><li>I have to worry less about making backups (although to be honest, I do consider to set up something... better safe than sorry)
</li><li>You can manage multiple mail accounts from 1 Google Mail account (but... see wishes below).
</li></ul>
</p>
<p>
Wishes:
<ul spacing="compact">
<li>When using Google Mail to send mail from another account it includes a header saying "gero@googleapps.com On Behalf of gero@othermaildomain.com" (where googleapps.com would be the primary domain on Google Apps that you registered and gero@othermaildomain.com some other mail account). The annoying thing is that some mail clients (Outlook of course, who else...), show this header to the user. According to Google they do it this way to prevent mail from being tagged as spam. And although there is definitely truth in that I would like ot have a setting to enable/disable this behaviour. Escpecially when managing multiple domains on Google Apps it should be possible to get rid of this message. The problem is that Google tags one of you domainnames as primary and the when sending mail from another domainname (that is hosted on the same Google Apps mail account) it also includes the "On Behalf of" header.
</li><li>Todo list support in Calendar would be nice.
</li><li>I still need to using my regular Google account for services like <a href="http://google.com/reader">Google Reader</a>, <a href="http://google.com/ig">iGoogle</a>, etc. The list of services for which you can use your Google Apps account is less than the list of available services to regular Google accounts.
</li></ul></p>
Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-9593457667114068492008-11-10T20:23:00.000+01:002009-02-02T19:30:41.945+01:00Finally moving my mail en calendar to the cloud: Google Apps For the last 6 years or so I've been hosting my own IMAP mail server and this evolved from just running an IMAP server on Linux to having a the full <a href="http://zimbra.com">Zimbra</a> collaboration suite in the end. Of course it is fun to do this, you learn a bit. However, it does take time and resources to do it properly and the guys at Google can all do that for you: Google Apps. You can use Google Apps for free for your familily and get Email, Calendar and much more functionality. And what's best: you don't have to do any maintenance, simple use it. One point to take note of, you do need a domainname, but who does not own a domainname nowedays?<br />
<br />
Of course there was the migration question... there was close to 10G of mail stored in my server (split over multiple accounts) and we did not want to loose that. How to get this into GMail? Several blogs posts suggest to simple use your desktop mail client (Mail.app on OS X, or Thunderbird) and then simple copy the mail (folders) from one IMAP account to the other. Sure works, but when I tried the copy process stopped several times due to a time-out... and then it was not clear what was copied and what was not copied yet. Time for a more robust and scriptable solution, enter imapsync. Imapsysc is a perl script that can keep two IMAP accounts in-sync. It can be run multiple times and then will only copy the messages not available on the target server yet. So that also makes it perfects to do a phase by phase migration (first copy all existing mail and then just before you switch over to the new IMAP server, do a last - quick - run to copy the few remaining messages. <br />
<br />
I've been using Google Apps for ~2 weeks now, am I happy with it? Definitely, here a couple of reasons:<br />
- the web ui for mail is great and I'm more productive processing tons of mail. After setting up some filters it is much easier to quickly archive mail and by assigning colors to filters I can quickly spot the important new mails. And of course, searching is a breeze... I have hardly used my regular mail client (Mail.app on OS X) since I switched.<br />
- Using SpanningSync I can perfectly sync my Google Calendar with iCal on multiple Macs and keep them in sync with my iPhone. With Zimbra I also managed to sync them (see earlier post) but one big drawback was that the calendars hosted on Zimbra were read-only on iPhone... not very convenient when you have to move an appointment.<br />
- We can easily share calendars within the familily<br />
- I have to worry less about making backups (although to be honest, I do consider to set up something... better safe than sorry)<br />
- You can manage multiple mail accounts from 1 Google Mail account (but... see wishes below). <br />
<br />
Wishes:<br />
- When using Google Mail to send mail from another account it includes a header saying "gero@googleapps.com On Behalf of gero@othermaildomain.com" (where googleapps.com would be the primary domain on Google Apps that you registered and gero@othermaildomain.com some other mail account). The annoying thing is that some mail clients (Outlook of course, who else...), show this header to the user. According to Google they do it this way to prevent mail from being tagged as spam. And although there is definitely truth in that I would like ot have a setting to enable/disable this behaviour. Escpecially when managing multiple domains on Google Apps it should be possible to get rid of this message. The problem is that Google tags one of you domainnames as primary and the when sending mail from another domainname (that is hosted on the same Google Apps mail account) it also includes the "On Behalf of" header. <br />
- Todo list support in Calendar would be nice.<br />
- I still need to using my regular Google account for services like Google Reader, iGoogle, etc. The list of services for which you can use your Google Apps account is less than the list of available services to regular Google accounts.Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-65537056070825494342008-09-03T20:44:00.000+02:002009-02-02T19:30:40.310+01:00iPhone Firmware 2.0 Favorite appsiPhone firmware 2.0 has been out for a while (<a href="http://www.apple.com/iphone/softwareupdate/">2.0.2</a> already) now. A while back I posted <a href="/blog/gero/2008/07/01/1214906100000.html">my favorite 1.0 firmware apps<a/> and now seems to be a good time to compare that favorites list with my 2.0 firmware favorites. Back in the 1.0 days all apps were jailbreak apps, but now it's a mix of jailbreak apps and 'official' apps from the <a href="http://www.apple.com/iphone/appstore/">Apple AppStore</a>. All jailbreak apps are installed using Cydia (see <a href="http://blog.iphone-dev.org/">iphone-dev team</a>). Looking at the list you can see that most apps are from the AppStore, so the iPhone SDK makes it possible to create usefull apps. <br />
<ol>
<li><a href="http://www.intelliborn.com">IntelliScreen</a> (Cydia, commercial): Provides an overview of your upcoming appointments, sms-es, mails, etc on the "Slide to unlock" screen. Hands down my favorite app, having 1 click access to this overview is really convenient.</li>
<li><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284944287&mt=8">EasyTask</a> (AppStore, free): Manage your ToDo's and sync them with the EasyTask (and iCal) application on the Mac. The iPhone application is free, but the Mac apps is commercial (~$20). It's not the perfect app, but does the job. OmniFocus is an alternative, but both the iPhone and Mac app are commercial and you'll have to pay a bit more for that combination. By the way, why on earth doesn't Apple support this out of the box???</li>
<li><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284967867&mt=8">Twinkle</a>: (AppStore, free): Was already my favorite Twitter app in the 1.0 days and is now available through the AppStore. What I like about it is that you can see tweets of people in your area. </li>
<li>WifiToggle (Cydia, free): Toggle Wifi connection on/off with one click. </li>
<li>Dock (Cydia, free): An alternative way to navigate through all the apps installed and quickly start them. Especially easy if you have many apps installed and get tired of swiping through all springboard pages and reorganizing the apps on the pages. It does require some practice...</li>
<li><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284881860&mt=8">NetNewsWire</a> (AppStore, free): Nice RSS feed reader that syncs with NewsGator and NetNewsWire apps on Mac.</li>
<li><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=286274367&mt=8">Palringo</a> (AppStore, free): Chat application that supports many protocols (AIM, Jabber, MSN, ....). Works really nice. </li>
<li><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288349436&mt=8">Wikipanion</a> (AppStore, free): Quick access to Wikipedia, easier than using the Safari browser.</li>
<li><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284417350&mt=8">Remote</a> (AppStore, free): Control iTunes on the Mac with you iPhone. Great fun!</li>
<li><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=283912026&mt=8">BuienRadar.nl</a> (AppStore, free): Want to know where the rain is and if it's coming your way. This app shows you (only interesting for The Netherlands though). Used it during our lats holiday to find out that the only rainclouds in The Netherlands were right above us :-(</li>
<li><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=289246732&mt=8">Teletekst</a> (AppStore, free): Access Dutch Teletekst in a convenient way.</li>
<li>MobileTerminal (Cydia, free): Terminal apps that I typically use to log into my server @ home if I need to restart something (and there's no other way to log in). Don't use it often, but it did save me a couple of times.</li>
</ol>
And then there is a bunch of funny apps that do not really add that much value on top of the above ones, but it just fun to show off:<br />
<ul>
<li><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284175601&mt=8">Twittervision</a> (AppStore, free): Shows Twitter Tweets on worlmap as the occur in realtime. (and acts as a Twitter client.)</li>
<li><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284940503&mt=8">Labyrinth</a> (AppStore, free): Move the ball through the labyrinth with dropping it in the holes (uses the accelorometer of course)</li>
<li>PhoneSaber (AppStore, free): Turns your iPhone into a light sabor... well sort off. It was <a href="http://www.zunescene.mobi/forums/index.php?topic=40114.msg479857">pulled from the AppStore.</a></li>
</ul>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-72075163506033386772008-08-18T22:04:00.000+02:002009-02-02T19:29:48.366+01:00Searching replacement for current PVR/DVD-Player/media streamerI currently own a <a href="www.kiss-technology.com/?p=558">KiSS DP-558</a> and although I'm quite impressed with the features included I'm not so happy with the overall stability and quality of the device. I've got it for less then 3 years and did have several defects and recordings often fail. Recently it also started mixing random colors while playing back a recording. About time to replace it.... preferable with something that has similar functionality, which is:<br />
<ul>
<li> Record TV (also while watching another channel. I'm adding this remark because when using putting a recording device behind a single tuner SettopBox you only get one channel out of the settopbox which you can then watch and record and I want to be able to watch 1 channel and record another)</li>
<li> Stream music from Mac Mini over network connection</li>
<li> Stream movies from Mac Mini (many formats) over network connection</li>
<li> Stream photos from Mac Mini over network connction</li>
<li> EPG with option to select programs for recording and also to specify which programs show always be recorded</li>
<li>Play DVDs and CDs</li>
</ul>
(For streaming from the Mac Mini I'm using the KiSS MacLink software)<br />
<br />
On top of the above requirements I'd like to switch from analogue TV to digital. I checked if may cable provider (<a href="http://ziggo.com">Ziggo</a>) has a settopbox that would match all above requirements, but unfortunately not...<br />
<br />
After some googling it appeared to be not so easy to find a similar device... The TiVo2 boxes in the US look really interesting, but TiVo2<br />
<ul>
<li> is only available in US in NTSC format (need <a href="http://en.wikipedia.org/wiki/PAL">PAL</a> in The Netherlands)</li>
<li> require a service subscription (which I would seriously consider to subscribe to if it was available in NL), luckily the <a href="http://www.nltivo.net/">Dutch TiVo community</a> has a way to get it to work in NL, but only for TiVo1 boxes. But t looks as if TiVo1 boxes can't stream media from a computer.</li>
</ul>
Another option would be a <a href="http://www.dream-multimedia-tv.de/">Dreambox</a>, but the lack of documentation makes me wonder what functionality is really included out of the box. Looks like it needs some additional work to be able to stream media from a computer.<br />
<br />
<a href="http://www.apple.com/appletv/">Apple TV</a> is also an options, but that would only cover the streaming requirements and not the recording and DVD/CD playing...<br />
<br />
And lastly I could build a mini PC myself that has all I need, but I'd prefer an out the box (or boxes) solution that does not require me to hack something together and support it for the rest of the family. Ease of use is also a requirement...<br />
<br />
In summary... looks like this is going to take at least 2 devices to realize the same functionality now provided by the KiSS DP-558 <br />
<ul>
<li> twin tuner settopbox/PVR</li>
<li> device for the streaming from computer and playback of DVD/CDs</li>
</ul>
But which ones??? Any suggestions or recommendations? Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com3tag:blogger.com,1999:blog-4545139512483017558.post-62739430876701943612008-07-15T08:01:00.001+02:002009-02-27T14:24:18.010+01:00Skeeler route: Woerden - Harmelen - Montfoort<p> [<a href="englishhm">English below</a>]<br /></p><p>Voor het grootste gedeelte lekker asfalt en mooie rechte stukken. Het viaduct van Harmelen richting Montfoort over de A12 kun je lekker op volle snelheid afdalen: mooi glad en geen kruizingen onderaan. Verderop richting Montfoort zit wel een stukje met slecht asfalt, het fietspad is wel redelijk glad, maar te smal om je te skeeleren. Langs de provenciale weg van Montfoort naar Woerden is het weer heerlijk skeeleren. De route kan gecombineerd worden met de routes die langs <a href="/blog/gero/2008/05/21/1211377980000.html">Oudewater</a> gaan. </p><p> <a mark="englishhm"></a>Mostly well paved and long straight roads. The descend off the viaduct from Harmelen to Montfoort can be done at full speed. Well paved cyclepath and no crossings at the bottom. Close to Montfoort there is a section with bad roads, the cyclepath on the side is OK but unfortunately too small to strech out. This route can be combined with the routes that pass through <a href="/blog/gero/2008/05/21/1211377980000.html">Oudewater</a>. </p><br /><br /><iframe name="skeeler_woerden_harmelen_montfoort" src="http://gerodt.homeip.net/skeelerroutes/skeeler_woerden_harmelen_montfoort_iframe.html?kmlUrl=http://gerodt.homeip.net/skeelerroutes/kml/skeeler_woerden_harmelen_montfoort.kml&mapWidth=500&mapHeight=500&mapType=normal" marginwidth="0" frameborder="0" height="500" marginheight="0" width="500"></iframe>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-66616279859015627832008-07-05T19:43:00.001+02:002009-02-27T14:23:03.763+01:00Skeeler route: Woerden - Driebruggen - Hekendorp - Oudewater[<a href="#englishhekendorp">English below</a>]<br />Mooie route over goede wegen die lekker door de polder gaan. In Hekendorp ziet een echt fietserscafe, waar je als skeeleraar ook prima terecht kunt. En Oudewater is ook erg leuk natuurlijk. Als je de route wat wilt verlengen kun je hem prima met de andere route combineren die door Oudewater gaat. <br /><br /><a mark="englishhekendorp"></a>Nice route over quiet well paved roads. Hekerdorp has nice cylcecafe in which skaters are also more then welcome. And if you'd want to take you pitstop a but later, Oudewater is also on the route. To extend the route a little bit, you can combine it with the other route that passes through Oudewater.<br /><br /><iframe name="skeeler_woerden_driebruggen_hekendorp_oudewater" src="http://gerodt.homeip.net/skeelerroutes/skeeler_woerden_driebruggen_hekendorp_oudewater_iframe.html?kmlUrl=http://gerodt.homeip.net/skeelerroutes/kml/skeeler_woerden_driebruggen_hekendorp_oudewater.kml&mapWidth=500&mapHeight=500&mapType=normal" marginwidth="0" frameborder="0" height="500" marginheight="0" width="500"></iframe>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-62661196572624003702008-07-01T11:55:00.000+02:002009-02-02T19:29:12.080+01:00Favorite iPhone appsThree months of <a href="http://apple.com/iphone">iPhone</a> usage and with the new 2.0 firmware coming out just over a week from now, it's good to look back and see what my favorite 3rd party apps are. My favorites are:
<ol spacing="compact">
<li>Twinkle: Twitter client that allows you to include picture and location info in tweets. </li>
<li>AutoMode: Put the iPhone to airplane mode at night and wakeup from airplane mode in the morning. Saves some battery and on the side gives you undisturbed nights. </li>
<li><a href="http://intelliborn.com/">IntelliScreen</a>: View your next appointments, SMSs, news headlines, etc. at a glimpse in the "Slide to unlock" screen. </li>
<li>Finder: An OS X like finder to navigate the file system </li>
<li>Terminal: Terminal clients that allows me to ssh into other machines remotely (already saved my a couple of times when I had no other way to ssh into my server to fix stuff) </li>
<li>ParkingLot: Nice puzzle game to kill time </li>
<li>ContraSense: Car racing game to show off the accelorometer </li>
</ol>
I wonder which of these apps will become available from the AppStore and if there will remain a market for apps that can only be installed if you jailbreak the iPhone. I suspect there will remain such a market because some of the apps installed via the jailbreak path run in the background and that's a feature which is not allowed for apps in the AppStore.<br />
<br />
What am I missing? <br />
Number one missing feature for me is a ToDo list that is integrated with iCal on OS X. I've looked at a couple of other options but found nothing that integrates with iCal. The MobileToDo app was promising to do this, but they quit development and referred to <a href="http://www.omnigroup.com/applications/omnifocus/iphone/">OmniFocus</a> as the app to use. However, you'd also need to buy the OmniFocus desktop app at $79 and buy the iPhone app separately (price unknown yet) and IMO that's way to much money for simple to do list requirements that I have. I'm hoping the guys behind MobileToDo will pick up the work again. I don't mind paying, but it should be in the $20 range for me.Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-3208248726048659642008-06-20T11:11:00.000+02:002009-02-02T19:29:02.118+01:00Syncing calendar events from iPhone to CalDAV server<p> I've been using the <a href="http://apple.com/phone">iPhone</a> for a couple of months now and one thing that kept bugging me was that iTunes does not allow you to specify a server based calendar as the calendar to sync events created on the iPhone to. It only allows to sync events created on the iPhone to local calendars in iCal. Since I'm using <a href="http://zimbra.com">Zimbra</a><a> as my server for mail, calendar, etc. and I want to be able to update it also when I'm not near my MacBook Pro that becomes pretty annoying. In OS X Leopards iCal you can subscribe to server based calendar and also update them, so it's a mistery to my why the iPhone events can't be synced to a </a><a href="http://wiki.zimbra.com/index.php?title=CalDAV_with_Leopard_iCal">CalDAV</a> server. </p>
<p> Anyways, a nice challenge to solve and it's actually pretty easy using Applescript. I've set up iCal to subscribe to the CalDAV server. So from iCal (and the Zimbra web client) I'm working on the same data. Then there an iCal local calendar defined (named iPhone) and in iTunes this calendar is specified as the one where new events created on the iPhone should be stored. The server based Calendar that iCal is subscribed to is also selected in iTunes to be sync to the iPhone. </p>
<p> So now the only we need to accomplish is get the events created on the iPhone into the CalDAV server. The following Applescript does this for me: </p>
<pre>tell application "iCal"<br /> set allEvents to every event in calendar "iPhone"<br /> repeat with theEvent in allEvents<br /> make new event at end of events of calendar "Calendar" <br /> with data theEvent<br /> delete theEvent<br /> end repeat<br /> reload calendars<br />end tell</pre>
<p> </p>
<p> This script is scheduled to run eveny 15 minutes and simply copies all events found in the iPhone calendar to the server Calendar and then removes it from the iPhone. Works nicely and the only drawback left is that events are not sync-ed in realtime, I have to do a sync between the MacBook and the iPhone... but who knows, maybe that can be improved using the push capabilities that are part of iPhone 2.0. </p>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com3tag:blogger.com,1999:blog-4545139512483017558.post-92230963477167050402008-05-22T19:51:00.001+02:002009-02-27T14:25:32.288+01:00Overzicht van skeeler routes vanuit Woerden[<a href="#englishoverview">English below</a>]<br />Sinds een poosje gebruik ik <a href="http://www.opengts.org/">OpenGTS</a> om routes op te nemen (zie <a href="http://gerodt.homeip.net/blog/gero/2008/03/31/1206990180000.html">eerdere blog</a>) en daarmee kan ik dus ook skeeler routes vastleggen. Leek me leuk om deze te delen met anderen en dat ga ik dus doen via m'n blog. In eerste instantie wilde ik alleen wat statische pagina's met de routes op internet zetten, maar het leek me uiteindelijk toch leuker als mensen ook commentaar kunnen toevoegen etc. En daar is een blog meer geschikt voor. <br /><br />De blog entry die je nu leest bevat een overzicht van de routes die ik in de omgeving van Woerden rij. Door op het skeelerwiel in een route te klikken, krijg je meer details over een route en van daaruit kun je weer doorklikken naar de route details. <br /><br /><a mark="englishoverview"></a> I've been using OpenGTS for a while to track skeeler routes and it seemed like fin to share these using my blog. Advantage (compared to static HTML pages) is that you can leave comments and suggestions. <br /><br />This blog entry provides and overview of all skeeler routes around Woerden, The Netherlands. Click on one of the skeelerwheels to get a description of the route and from thereon you can jump to the route details.<br /><br /><iframe name="skeeler_overzicht_van_skeeler_routes_vanuit_woerden" src="http://gerodt.homeip.net/skeelerroutes/skeeler_overzicht_van_skeeler_routes_vanuit_woerden_iframe.html?kmlUrl=http://gerodt.homeip.net/skeelerroutes/kml/skeeler_overzicht_van_skeeler_routes_vanuit_woerden.kml&mapWidth=500&mapHeight=500&mapType=normal" marginwidth="0" frameborder="0" height="500" marginheight="0" width="500"></iframe>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-37686858105321567812008-05-21T17:00:00.001+02:002009-02-27T14:21:42.909+01:00Skeeler route: Woerden - Zegveld - Kamerik[<a href="#english">English below</a>]<br />Op de fiets noemde ik deze ronde vroeger "de hel van het Noorden", het ligt immers te noorden van Woerden en ik had altijd het gevoel tegenwind te hebben op het stuk van Zegveld naar Woerdense Verlaat. Deze keer op skeelers had ik dat stuk een stevige wind mee en liep de snelheid lekker op. Net uit Woerden richting Zegveld en de eerste KM uit Zegveld naar Woerdense Verlaat is het wegdek wat minder, maar verder goed. <br /><br /><a mark="english"></a>When I did this route by bike years ago I always had headwinds on the part from Zegveld to Woerdense Verlaat. This time on skeelers I was surprised by a nice supporting wind and could reach nice speeds. Leaving Woerden towards Zegveld en just outside Zegveld the road is a bit bumpy but for the rest the road is good.<br /><br /><iframe name="skeeler_woerden_zegveld_kamerik" src="http://gerodt.homeip.net/skeelerroutes/skeeler_woerden_zegveld_kamerik_iframe.html?kmlUrl=http://gerodt.homeip.net/skeelerroutes/kml/skeeler_woerden_zegveld_kamerik.kml&mapWidth=500&mapHeight=500&mapType=normal" marginwidth="0" frameborder="0" height="500" marginheight="0" width="500"></iframe>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-19680349476983041552008-05-21T15:53:00.001+02:002009-02-27T14:20:29.804+01:00Skeeler route: Woerden - Oudewater[<a href="http://www.blogger.com/post-edit.g?blogID=4545139512483017558&postID=1968034947698304155#english">English below</a>]<br />Lekker snel rondje waar je op de heenweg veel lange rechte stukken hebt en op de terugweg van Oudewater via Linschotensebos naar Woerden langs het water slingerd. Oudewater ligt in het midden van de route en in het centrum is het altijd gezellig op de terrasjes met mooi weer. Deze route is ook een populair fietsrondje dus met mooi weer heb je steeds een prooi voor je om naartoe te racen ;-)<br /><br />Fast rountip with long straigt parts in the first half and nice curves alongside a small river in the second part. Oudewater is halfway the route and has some nice opportunities to relax and have a drink on one of the terasses on sunny days. It is also a popular cycling route on sunny days,<br />so if you want to challenge yourself there always a cycler to chase ahead of you ;-)<br /><br /><iframe name="skeeler_woerden_oudewater" src="http://gerodt.homeip.net/skeelerroutes/skeeler_woerden_oudewater_iframe.html?kmlUrl=http://gerodt.homeip.net/skeelerroutes/kml/skeeler_woerden_oudewater.kml&mapWidth=500&mapHeight=500&mapType=normal" marginwidth="0" frameborder="0" height="500" marginheight="0" width="500"></iframe>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com0tag:blogger.com,1999:blog-4545139512483017558.post-12603550143239971862008-05-03T18:45:00.001+02:002009-02-27T14:16:31.126+01:00Skeeler route: Woerden - Kamerik - Kockengen - Harmelen[<a href="http://www.blogger.com/post-edit.g?blogID=4545139512483017558&postID=1260355014323997186#english">English below</a>]<br /><br />Mooie ronde qua afstand en lekker door de polder heen. Niet veel kruizingen, dus je kan lekker snelheid maken en van de wind genieten of er tegenin vechten. Er zit 1 slecht stuk in de route, 1 km na Kockengen wordt het wegdek bar slecht en dat blijft een km of 4 zo. Je hebt dan echt het gevoel alsof je op een trilplaat rijdt en dat gaat na een km of 2 wel wat vervelen ;-)<br /><br /><a name="english"></a> Nice roundtrip though the country side. Not many crossing, so lot's of opportunities to make some speed and either enjoy or fight the wind. There's one really bad section in the route, about 1 km out of Kockengen the road gets really bad and that lasts for ~4 km. It feels like riding on a powerplate and I can assure you that gets pretty boring after a while.<br /><br /><iframe name="skeeler_woerden_kamerik_kockengen_harmelen" src="http://gerodt.homeip.net/skeelerroutes/skeeler_woerden_kamerik_kockengen_harmelen_iframe.html?kmlUrl=http://gerodt.homeip.net/skeelerroutes/kml/skeeler_woerden_kamerik_kockengen_harmelen.kml&mapWidth=500&mapHeight=500&mapType=normal" marginwidth="0" frameborder="0" height="500" marginheight="0" width="500"></iframe>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com1tag:blogger.com,1999:blog-4545139512483017558.post-67324233149001292282008-04-22T14:32:00.000+02:002009-02-02T19:28:20.358+01:00How to get an iPhone, Take IIAfter the "big" Apple event beginning of March where the <a href="http://developer.apple.com/iphone/program/">iPhone SDK</a> was announced I decided that I waited long enough. I had been patient for 9 months since the launch in the US and still there was no view any official launch in The Netherlands. No other option left then to get one <em>directly</em> from the US. With the current $-Euro exchange rate the price would be nice also (compared to prices in for example the UK, Germany and France).<br />
<br />
Reading the title you may think: <em>what happened in Take I</em>? Well, it <em>"disappeared"</em> at <a href="http://dhl.com">DHL</a> in The Netherlands because a <a href="http://www.iphoneclub.nl/5165/iphone-diefstal-lijkt-vaste-prik-bij-dhl/">gang of DHL employees was steeling iPhones</a>. Not quite what you'd expect from a shipper like DHL. Rumors are that the gang managed to steel over a 100 iPhones that were shipped to NL. Some arrests have been done, but my iPhone did not turn up... probably already sold on eBay or something similar. <br />
<u><strong><br />
What to do?</strong></u><br />
Apple only ships to US addresses from the online Apple store, so what's the trick to get one when you're not living in the US? Obvious solution, get yourself a US address, have Apple ship the iPhone to that address and from there ship it to any place on earth. There are multiple companies in the US were you can 'rent' an address. I did it at <a href="http://myus.com">myus.com</a> and that worked out smoothly. For example, when the first iPhone got stolen they claimed the insurance money at DHL and within a week I had the money on my account. Thumbs up for <a href="http://myus.com">myus.com</a>. When 'renting' an address in the US, make sure it is a regular address and not a PO Box because Apple will not ship to PO Boxes. <br />
<br />
Now that you have the address, order the iPhone on the Apple Store and have it shipped to your 'rented' address. You can use a non-US credit card for that. Apple will sent you a confirmation mail with a link to an order page. The moment the iPhone is on it's way to your US address, you can track it using the FedEx tracking website.<br />
<br />
After it has arrived at your rented address, you request myus.com to ship the package to your home address. At myus.com you can specify shipment instructions like:<br />
<ul>
<li>The shipper you'd want to use (I used FedEx the second time)</li>
<li>The amount for which the shipment should be insured. Given the experience I had with my first attempt I would definitely insure it for the full amount. It does pay of if things go bad. A slight disadvantage can be that 'customs' in your country is going to charge you more import taxes, but hey, that's better than loosing the shipment. (till now I have to received an invoice for import taxes but that may come later)<br />
</li>
</ul>
After that it took only 3 days before I had it in my hands. Ready to make the first call? Not yet, Apple still locks the iPhones down to their official operators so you have to use a tool like <a href="http://www.ziphone.org/">Ziphone</a> to unlock it. This is a very simple and convenient process, simply press the button, wait ~ 4 minutes and done. While it is doing the unlocking it will reboot the iPhone a couple of times and you'll see all kinds of interesting message scroll over the iPhone screen. When done you can slide in your SIM and make your first call. Dead simple. Start having fun and install additional apps using the installed (installed by Ziphone), my current favorites are Twinkle (Twitter client) and <a href="http://my.navizon.com">Navizon</a> (determines GPS coordinates using GSM and Wifi cells).<br />
<br />
While the iPhone was traveling from China (they're manufactured there) to the US and to NL I recorded times and dates on a <a href="http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=111183216699720342236.00044ae767d58c58cbeb4&t=h&z=2">Google Map</a>. Interesting to see the distance it traveled. The blue pinpoints and lines are the trip from China to the US, the green ones are the US to NL trip. If you look closely there is an optimization possible, on the flight from the China to the US and from the US to NL it passes through Memphis, renting an address in the Memphis area might save you an additional day...Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com4tag:blogger.com,1999:blog-4545139512483017558.post-28691026559147675302008-04-06T20:18:00.002+02:002009-12-29T22:15:00.787+01:00Integrating Pebble Blog with TweeterA couple of weeks ago we had a "Join Twitter" storm at <a href="http://xebia.com/">Xebia</a>. After the <a href="http://linkedin.com/">Linked-in</a>, <a href="http://plaxo.com/">Plaxo</a>, <a href="http://hyves.nl/">Hyves</a>, <a href="http://facebook.com/">Facebook</a> and probably a dozen of other social network storms I initially decided to pass on <a href="http://twitter.com/">Twitter</a>. But then by colleague JCP Colleague & Friend <a href="http://blogs.karroum.de/andreas">Andreas</a> posted an <a href="http://blog.karroum.dyndns.org/andreas/2008/04/04/leo-please-rename-twit-to-this-week-in-twitter/trackback/">entry</a> about twitter and that convinced me to join. Why? This sentence basically did it: <em>"Twitter can promote your blog by sending out new blog posts." </em>This could help to draw some extra traffic to the blog...<br /><br />I immediately checked if there already was a plug-in for <a href="http://pebble.sourceforge.net/">Pebble</a> (the webapp that hosts this blog) that would allow me link my blog to Twitter. SinceI could not find something quickly and the functionality would be really simple I decided to create the plug-in for <a href="http://pebble.sourceforge.net/">Pebble</a> myself. So If all goes well each blog entry that I'll post or update to my blog will result in a Twitter update. And this blog entry should be the first proof of that ;-)<br /><br />In case you're interested in including this in your own Pebble blog:<br /><ul> <li>Download the <a href="http://gerodt.homeip.net/pebble-extensions/TwitterTweeter.java">TwitterTweeter.java</a> source and compile it against your Pebble code</li> <li>Add the resulting class (jar) to the classpath of your servlet container</li> <li>Restart the servlet container.</li> <li>Add net.vermaas.TwitterTweeter in the Blog Plug-in configuration as Blog Entry Listener and Comment Listener.</li> <li>Add the following three properties in the Blog Plug-in configuration as Properties<br /> TwitterTweeter.password=[your Twitter password]<br /> TwitterTweeter.twitterUrl=https://twitter.com/statuses/update.xml<br /> TwitterTweeter.userName=[your twitter user name]<br /> <strong><br /> ** UPDATE **:<br /> </strong>Sending out tweets on each publish, update, delete and each and every comment being posted proved to be a bit of an overkill. Therefore 2 additional properties are added:<br /> TwitterTweeter.blog.entry.tweets=[Determines on what blog entry actions to sent a tweet]<br /> TwitterTweeter.comment.tweets=[Determines on what comment actions to sent a tweet]<br /> (See comments in <a href="http://gerodt.homeip.net/pebble-extensions/TwitterTweeter.java">source</a> for valid values for these last two settings)<br /> <strong>** EO UPDATE **<br /> </strong></li> <li>Restart your servlet container</li></ul>That should do the trick... I initially though that username/password had to travel unencrypted over the Net, but as you can see in the above properties list the TwitterTweeter.twitterUrl has a http<u><strong>s</strong></u> prefix so username and password will be encrypted... no security constraints so what is stopping you from using this plug-in ;-)Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com13tag:blogger.com,1999:blog-4545139512483017558.post-90576213105493175762008-03-31T21:03:00.000+02:002009-02-02T19:25:54.532+01:00Tracking skeeler routes with OpenGTSA while back I blogged about <a href="/blog/gero/2008/01/04/1199449200000.html">OpenGTS</a> and the masterplan was to use while riding the <a href="/blog/gero/2007/11/23/1195825140000.html">Eleven Cities Skating Tour</a>. So winter came and went this year and unfortunately no serious freezing. We did have a couple of day with ice, but too little. Even the white Easter last week did not help. So this weekend I changed the skating blades for skeeler wheels and did my first skeeler trip and recording it using OpenGTS. I was a windy day so I expected to see significant speeds differences but the difference was only 5KM/Hour.<br />
<br />
Below is the route, click on the pinpoints to see speeds, etc.<br />
<a href="http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=111183216699720342236.000449c032ab9a81b94f7&t=h&z=13"> <img border="0" alt="Skeeler route Woerden - Oudewater - Woerden" src="/blog/gero/images/skeeler-woerden-oudewater.png" /> </a>Gerohttp://www.blogger.com/profile/12865783151000904309noreply@blogger.com2