<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.7.2" -->
<rss version="2.0">
    <channel>
        <title> - Wiki</title>
        <description><![CDATA[ - RSS Feed]]></description>
        <link>http://www.oaktop.com/wiki/</link>
        <lastBuildDate>Tue, 07 Sep 2010 06:04:03 +0100</lastBuildDate>
        <generator>FeedCreator 1.7.2</generator>
        <language>en-us</language>
        <item>
            <title>Uger</title>
            <link>http://oaktop.com//wiki/Uger</link>
            <description>Uger is an user group web application originally developed for the &lt;a class=&quot;external&quot; href='http://www.cjug.org'&gt;Chicago Java User Group&lt;/a&gt;. I originally started the project as a way to learn Ruby and Rails. The code is released under GPL 2.0 license.&lt;br/&gt;&lt;br/&gt;&lt;h1&gt;Demo&lt;/h1&gt;You can see Uger in action at &lt;a class=&quot;external&quot; href='http://www.cjug.org/uger'&gt;Chicago Java User Group&lt;/a&gt; and &lt;a class=&quot;external&quot; href='http://www.chirb.org'&gt;Chicago Area Ruby Group&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;h1&gt;Features&lt;/h1&gt;Uger is currently provides RSVP functionality for events, directory listing for local businesses, and membership payment tracking.&lt;br/&gt;&lt;br/&gt;&lt;h1&gt;Using Uger&lt;/h1&gt;you can find Uger releases at http://svn.oaktop.com/Uger/tags. The best way to get Uger is to use the subversion command (replace 0.6 with the version of the latest release):&lt;br/&gt;&lt;br/&gt;svn co http://svn.oaktop.com/Uger/tags/0.6/&lt;br/&gt;&lt;br/&gt;Once you have Uger on your system, you can start Uger with the usual way of running Rails applications. The simplest way would be &quot;ruby scripts/server&quot;, but you can also use Mongrel or other deployment methods. Don't forget to read the README file to figure out how to customize Uger for your site. If you have any question, feel free to send me a question at peter@oaktop.com.&lt;br/&gt;&lt;br/&gt;&lt;h1&gt;Development&lt;/h1&gt;Contribution is very much appreciated! Developmental version of Uger is available via subversion at http://svn.oaktop.com/Uger/trunk.&lt;br/&gt;&lt;br/&gt;Please note that by submitting your patch, you agree to grant me (Peter K Chan) all rights to sublicense your contribution with any license.&lt;br/&gt;</description>
            <author>Peter K Chan</author>
            <pubDate>Thu, 04 Oct 2007 15:24:02 +0100</pubDate>
        </item>
        <item>
            <title>FileNX</title>
            <link>http://oaktop.com//wiki/FileNX</link>
            <description>&lt;b&gt;Announcement: FileNX is now retired. A continuation of the FileNX project, with focus on file backup, now lives on as &lt;a class=&quot;external&quot; href='http://backupnexus.com/'&gt;Backup Nexus&lt;/a&gt;.&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;&lt;div style=&quot;text-align:center;&quot;&gt;&lt;div class=&quot;img-plugin&quot; style=&quot;float:desc=;&quot;&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://www.oaktop.com/go/filenx/images/main-1.2.3.gif&quot; style=&quot;width:;height:;&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;News&lt;/h2&gt;Version 1.2.3 of FileNX is now available. &lt;b&gt;Go to the &lt;a  href='FileNX Download'&gt;FileNX Download&lt;/a&gt; page to download.&lt;/b&gt;&lt;br/&gt;&lt;h2&gt;About&lt;/h2&gt;FileNX is a software that keeps your files synchronized and backed up between multiple computers.&lt;br/&gt;&lt;h2&gt;Features&lt;/h2&gt;&lt;ul&gt;&lt;li&gt; &lt;i&gt;Simple&lt;/i&gt; - Designed so you can set it and forget it, FileNX doesn't require complicated options or multi-step configuration.&lt;/li&gt;&lt;li&gt; &lt;i&gt;Safe&lt;/i&gt; - FileNX features time-differential reasoning, move-on-close file copying, and a trash bin to ensure that your files can't be corrupted by the synchronization process.&lt;/li&gt;&lt;li&gt; &lt;i&gt;Robust&lt;/i&gt; - FileNX is designed to run inside your local network, but feel free to take it on a ride. Just keep FileNX running, and it will synchronizes your files when you go back.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Quick Start&lt;/h2&gt;&lt;ol&gt;&lt;li&gt; On your first computer, install and run FileNX.&lt;/li&gt;&lt;li&gt; Click &quot;Add.&quot;&lt;/li&gt;&lt;li&gt; &quot;Browse&quot; for the folder with files that you want to synchronize and give it a name.&lt;/li&gt;&lt;li&gt; Remember the name of your computer (on the top).&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt; On your second computer, install and run FileNX.&lt;/li&gt;&lt;li&gt; Click &quot;Add.&quot;&lt;/li&gt;&lt;li&gt; &quot;Browse&quot; for a folder to store your synchronized files.&lt;/li&gt;&lt;li&gt; Give it the &lt;i&gt;same&lt;/i&gt; name as the name on the first computer.&lt;/li&gt;&lt;li&gt; Put the name of the first computer in &quot;Sync with computer&quot; box.&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;That's it! Your files will now be automatically synchronized!&lt;br/&gt;&lt;br/&gt;You can also read the &lt;a title=&quot;FileNX Help&quot; href=&quot;/wiki/FileNX+Help&quot;&gt;FileNX Help&lt;/a&gt; for more details on how to use FileNX.&lt;br/&gt;</description>
            <author>Peter K Chan</author>
            <pubDate>Tue, 04 Sep 2007 23:23:12 +0100</pubDate>
        </item>
        <item>
            <title>Welcome</title>
            <link>http://oaktop.com//wiki/Welcome</link>
            <description>&lt;h1&gt;Projects&lt;/h1&gt;These are projects that I am actively working on. They may not have been updated recently, but they are in a maintained state.&lt;br/&gt;&lt;ul&gt;&lt;li&gt; &lt;a title=&quot;&quot; href=&quot;/wiki/index.php?page=Uger&quot;&gt;Uger - User Group Web Application&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;&quot; href=&quot;/wiki/index.php?page=Combadge&quot;&gt;Combadge - Simple P2P Messaging Using JXTA&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Add online maps in zero steps&quot; href=&quot;/wiki/index.php?page=AutoMapper&quot;&gt;AutoMapper - Web Mapping In Zero Step&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Reading long text comfortably&quot; href=&quot;/wiki/index.php?page=ScrollHint&quot;&gt;Scroll Hint - Reading long text comfortably&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;Archived Projects&lt;/h1&gt;The following are projects and investigations that I have worked on. Some of them were undertaken with a spirit of investigation and may not be in a completed state.&lt;br/&gt;&lt;ul&gt;&lt;li&gt; &lt;a title=&quot;Task-Centric Computing&quot; href=&quot;/wiki/Task-Centric+Computing&quot;&gt;Task-Centric Computing&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Incremental Funding Method&quot; href=&quot;/wiki/Incremental+Funding+Method&quot;&gt;Incremental Funding Method&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Virtualization as a Substitute for Security&lt;/li&gt;&lt;li&gt; Containment&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Residence Life Software and Design&quot; href=&quot;/wiki/Residence+Life+Software+and+Design&quot;&gt;Residence Life Software and Design&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Alert Preference Service&quot; href=&quot;/wiki/Alert+Preference+Service&quot;&gt;Alert Preference Service&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;&quot; href=&quot;/wiki/index.php?page=FileNX&quot;&gt;FileNX - Simple File Synchronization and Backup&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;&quot; href=&quot;/wiki/index.php?page=Herder&quot;&gt;Herder - Distributed Shell for Managing Small Cluster&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Maven Plugins&quot; href=&quot;/wiki/Maven+Plugins&quot;&gt;Maven Plugins&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;Thoughts (Old)&lt;/h1&gt;Some older writings that I used to do, before I stopped publishing online. Please excuse any immaturely or incompletely developed thoughts.&lt;br/&gt;&lt;ul&gt;&lt;li&gt; &lt;a title=&quot;Analogies&quot; href=&quot;/wiki/Analogies&quot;&gt;Analogies&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Random Notes&quot; href=&quot;/wiki/Random+Notes&quot;&gt;Random Notes&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Randomer Notes&quot; href=&quot;/wiki/Randomer+Notes&quot;&gt;Randomer Notes&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Book Thoughts - The Innovator's Dilemma&quot; href=&quot;/wiki/Book+Thoughts+-+The+Innovator%27s+Dilemma&quot;&gt;Book Thoughts - The Innovator's Dilemma&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Book Thoughts - Peopleware: Productive Projects and Teams&quot; href=&quot;/wiki/Book+Thoughts+-+Peopleware%3A+Productive+Projects+and+Teams&quot;&gt;Book Thoughts - Peopleware: Productive Projects and Teams&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Book Thoughts - Disney War&quot; href=&quot;/wiki/Book+Thoughts+-+Disney+War&quot;&gt;Book Thoughts - Disney War&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Book Thoughts - Survival is Not Enough&quot; href=&quot;/wiki/Book+Thoughts+-+Survival+is+Not+Enough&quot;&gt;Book Thoughts - Survival is Not Enough&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a title=&quot;Information Over-Access&quot; href=&quot;/wiki/Information+Over-Access&quot;&gt;Information Over-Access&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
            <author>Peter K Chan</author>
            <pubDate>Tue, 04 Sep 2007 23:18:02 +0100</pubDate>
        </item>
        <item>
            <title>ScrollHint</title>
            <link>http://oaktop.com//wiki/ScrollHint</link>
            <description>Wouldn't it be nice if you can read long text smoothly and without interruption?&lt;br/&gt;&lt;br/&gt;Scroll Hint is a browser plugin that helps you read long web pages (lots of text) comfortably.&lt;br/&gt;&lt;br/&gt;(Scroll Hint in action)&lt;br/&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://oaktop.com/go/scrollhint/scroll-hint-in-action.gif&quot; style=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;I conceived of Scroll Hint because of the way I got disoriented by reading large amount of text on web pages. The disorientation problem comes in two flavors: screen similarity problem and the last page problem.&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;Screen Similarity&lt;/h3&gt;As an example, the following are the second and third page of a 17 page article.&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;img-plugin&quot; style=&quot;float:left;&quot;&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://oaktop.com/go/scrollhint/similar-page-first.gif&quot; style=&quot;&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br/&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://oaktop.com/go/scrollhint/similar-page-second.gif&quot; style=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;Note how similar the two screens are. This is especially so if you are scanning, rather than reading, the page.&lt;br/&gt;&lt;br/&gt;To read efficiently, I usually read (or more often, scan) a full page before scrolling down (Space or PageDown keys) to the next page. However, because the screens are so monotonically similar, I often lose track of where I was reading, and need to take a few seconds to re-orient myself.&lt;br/&gt;&lt;br/&gt;&lt;h3&gt;Last Page Problem&lt;/h3&gt;To be efficient at reading, you should read and scroll in full-screen increment (similar to how bulk processing in computer is more efficient than context-switching).&lt;br/&gt;&lt;br/&gt;However, at the very bottom of multi-page content, there usually isn't enough room to scroll a complete screen by the Space or PageDown key, so scrolling does not go all the way (full screen). Because of this, you cannot just start from the top of the screen. Instead, you have to waste a second or two scanning for your last reference point.&lt;br/&gt;&lt;br/&gt;Take a look at the follow screenshot, which shows a page that didn't scroll a complete screen. As a result, when you read the last page, you need to find the previous reference position, &lt;i&gt;somewhere in the middle&lt;/i&gt; of the page.&lt;br/&gt;&lt;br/&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://oaktop.com/go/scrollhint/last-page-problem.gif&quot; style=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Solution: Scroll Hint&lt;/h2&gt;Scroll Hint is a browser plugin that deals with this problem. Everytime the page is scrolled, it shows you a hint of where the page content used to be (before your scrolled), so that you can orient yourself to start reading from where you were reading.&lt;br/&gt;&lt;br/&gt;Take a look at the following screenshot.&lt;br/&gt;&lt;br/&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://oaktop.com/go/scrollhint/last-page-solution.gif&quot; style=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;Note how the previous bottom-of-the-screen has been marked. If you have just finished reading at the bottom of the previous page, you know exactly where to start reading after the scroll.&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Browser Requirement&lt;/h2&gt;Scroll Hint itself is generic Javascript, so it should run in all browsers. Currently, I have a Firefox GreaseMonkey user script that makes Scroll Hint available on all web pages. If you have &lt;a class=&quot;external&quot; href='http://getfirefox.com'&gt;Firefox&lt;/a&gt; and the &lt;a class=&quot;external&quot; href='http://greasemonkey.mozdev.org/'&gt;Greasemonkey&lt;/a&gt; extension installed, you can download &lt;a class=&quot;external&quot; href='http://oaktop.com/go/scrollhint/scrollhint-1.0.user.js '&gt; version 1.0&lt;/a&gt; of Scroll Hint.&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Feedback Wanted, Dead or Alive&lt;/h2&gt;I am very interested to hear what you think of Scroll Hint. Please share your thoughts by leaving a comment below (or mailto:peter@oaktop.com).&lt;br/&gt;</description>
            <author>Peter K Chan</author>
            <pubDate>Mon, 30 Oct 2006 22:07:24 +0100</pubDate>
        </item>
        <item>
            <title>Herder</title>
            <link>http://oaktop.com//wiki/Herder</link>
            <description>&lt;h1&gt;Introduction&lt;/h1&gt;Herder is a simple Ruby program for managing a small/personal cluster of computers. It provides an interactive Ruby scripting environment, along with a shell-like interaction mode. Using Herder, it is very easy to apply firewall policy/install a software package on multiple machines at the same time, monitor systems performance, or have on-demand access to a specific machine (without having set up a prior directory infrastructure).&lt;br/&gt;&lt;br/&gt;I developed Herder out of frustration with all the big cluster toolkits that require hours to install, demand format-the-disk-access, and hide their operations behind a multitude of daemon processes. In contrast to the big toolkits, Herder:&lt;br/&gt;&lt;ul&gt;&lt;li&gt; can be run by a regular user, in as little as 3 commands (see below), within minutes&lt;/li&gt;&lt;li&gt; is simple to understand (you run each daemon knowing exactly what it does)&lt;/li&gt;&lt;li&gt; is immediate and interactive (via irb)&lt;/li&gt;&lt;/ul&gt;Herder should run on all platforms that support Ruby. Specifically, it has been tested on Linux/Bash. MacO X 10.4/Bash, and Windows XP/cmd.exe.&lt;br/&gt;&lt;br/&gt;Currently, using Herder requires that you know (or willing to learn) a very small bit of the Ruby language. There is plan to provide a web &quot;control panel&quot; using AJAX in the future. There is also plan to develop &quot;herdlet,&quot; which are small agent programs that automatically monitor and manage the machines (e.g. an agent that ensures that all machines have the right firewall settings, or one that keeps the JDK updated on all the machines).&lt;br/&gt;&lt;h1&gt;Download&lt;/h1&gt;&lt;a class=&quot;external&quot; href='http://svn.oaktop.com/Herder/tags/1.1.1/herder.rb'&gt;Herder 1.1.1&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Updated: &lt;a class=&quot;external&quot; href='http://svn.oaktop.com/Herder/tags/1.2.1/'&gt;Herder 1.2.1&lt;/a&gt; is available, with some fixes and a RC script for running at system startup. (note the documentation on this page was developed with version 1.1.1, which should be mostly compatible with 1.2.x series).&lt;br/&gt;&lt;br/&gt;&lt;h1&gt;Quick Start&lt;/h1&gt;Here is an example of how to use Herder in its default setting. This section assumes that you are using Bash on Linux.&lt;br/&gt;&lt;div class='codelisting'&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;[&lt;/span&gt;peter@host herder&lt;span style=&quot;color: #66cc66;&quot;&gt;]&lt;/span&gt;$ ruby herder.rb -server localhost:&lt;span style=&quot;color: #cc66cc;&quot;&gt;9000&lt;/span&gt; &amp;gt; /dev/null &amp;amp;
&lt;span style=&quot;color: #66cc66;&quot;&gt;[&lt;/span&gt;peter@host herder&lt;span style=&quot;color: #66cc66;&quot;&gt;]&lt;/span&gt;$ ruby herder.rb -client localhost:&lt;span style=&quot;color: #cc66cc;&quot;&gt;9000&lt;/span&gt; &amp;gt; /dev/null &amp;amp;
&lt;span style=&quot;color: #66cc66;&quot;&gt;[&lt;/span&gt;peter@host herder&lt;span style=&quot;color: #66cc66;&quot;&gt;]&lt;/span&gt;$ ruby herder.rb -console localhost:&lt;span style=&quot;color: #cc66cc;&quot;&gt;9000&lt;/span&gt;
irb&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;main&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;:&lt;span style=&quot;color: #cc66cc;&quot;&gt;001&lt;/span&gt;:&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&amp;gt; nodes = connect &lt;span style=&quot;color: #ff0000;&quot;&gt;'druby://localhost:9000'&lt;/span&gt;
irb&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;main&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;:&lt;span style=&quot;color: #cc66cc;&quot;&gt;002&lt;/span&gt;:&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&amp;gt; nodes.keys
=&amp;gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;localhost&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;]&lt;/span&gt;
irb&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;main&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;:&lt;span style=&quot;color: #cc66cc;&quot;&gt;003&lt;/span&gt;:&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&amp;gt; &lt;span style=&quot;color: #000066;&quot;&gt;local&lt;/span&gt; = nodes&lt;span style=&quot;color: #66cc66;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;localhost&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;]&lt;/span&gt;
irb&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;main&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;:&lt;span style=&quot;color: #cc66cc;&quot;&gt;004&lt;/span&gt;:&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&amp;gt; &lt;span style=&quot;color: #000066;&quot;&gt;local&lt;/span&gt;. ...</description>
            <author>Peter K Chan</author>
            <pubDate>Sun, 15 Oct 2006 22:27:59 +0100</pubDate>
        </item>
        <item>
            <title>AutoMapper</title>
            <link>http://oaktop.com//wiki/AutoMapper</link>
            <description>AutoMapper helps you add online map to your web pages with &lt;i&gt;no programming knowledge&lt;/i&gt; required.&lt;br/&gt;&lt;h1&gt;Try It Out&lt;/h1&gt;The AutoMapper is so simple to use, that the explanation would probably be longer than a simple demonstration. To demonstrate, I include the follow address on this page:&lt;br/&gt;&lt;br/&gt;243 S. Wabash Avenue&lt;br/&gt;Chicago IL 60604&lt;br/&gt;&lt;br/&gt;Now, I link to AutoMapper:&lt;br/&gt;&lt;br/&gt;&lt;a class=&quot;external&quot; href='http://automapper.oaktop.com/ '&gt; Map This Automatically&lt;/a&gt; (this is just a plain HTML link to http://automapper.oaktop.com/)&lt;br/&gt;&lt;br/&gt;Click on this link and notice how the address above is automatically mapped for you.&lt;br/&gt;&lt;h1&gt;Why&lt;/h1&gt;If the above demonstration didn't interest you, AutoMapper probably isn't for you. However, in case you like a laundry list of why you may want to use AutoMapper.&lt;br/&gt;&lt;ul&gt;&lt;li&gt; No javascript/Map API knowledge required to add maps to your site.&lt;/li&gt;&lt;li&gt; You don't need even need to be the webmaster of the site to add the map.&lt;/li&gt;&lt;li&gt; If Google Maps update their online mapping API, you don't have to scamble to update your site.&lt;/li&gt;&lt;li&gt; AutoMapper actually includes features from other mapping servicies, such as traffic information from MSN Virtual Earth. You get the best of breeds of online mapping feature.&lt;/li&gt;&lt;li&gt; Even if you plan to do everything yourself, AutoMapper can be a great temporary solution, while you program your own map integration.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;How to Use&lt;/h1&gt;To add AutoMapper to your site, simple link to http://automapper.oaktop.com/ from any web page with an address. The AutoMapper will automatically scans the original page and maps the first address that it finds. Make sure that the address you want to be mapped is a U.S. address and ends in a zip code.&lt;br/&gt;&lt;h1&gt;Status&lt;/h1&gt;AutoMapper has just been released. I have not been aware of any other service that uses HTTP referrer to map addresses automatically. I am very interested to hear what you think. Please let me know at peter@oaktop.com.&lt;br/&gt;</description>
            <author>Peter K Chan</author>
            <pubDate>Fri, 11 Aug 2006 07:06:43 +0100</pubDate>
        </item>
        <item>
            <title>Combadge</title>
            <link>http://oaktop.com//wiki/Combadge</link>
            <description>&lt;h1&gt;Introduction&lt;/h1&gt;Combadge is a peer-to-peer messaging toolkit, built on top of JXTA, that provides unreliable unicast and multicast messaging.&lt;br/&gt;&lt;br/&gt;The design goal of Combadge is to make it as easy as possible to develop straightforward P2P application rapidly. It does so by implementing some common use cases in JXTA's P2P messaging, such as group discovery, pipe resolution, publishing of advertisement and message serialization.&lt;br/&gt;&lt;h1&gt;Download&lt;/h1&gt;Combadge is available using Subversion from http://svn.oaktop.com/Combadge. You may prefer the &lt;a class=&quot;external&quot; href='http://websvn.oaktop.com/listing.php?repname=Repository&amp;path=%2FCombadge%2F'&gt;web interface&lt;/a&gt;, which has a convenient link that tar's up all the files for you.&lt;br/&gt;&lt;br/&gt;The Combadge project was built using &lt;a class=&quot;external&quot; href='http://maven.apache.org'&gt;Maven&lt;/a&gt;. However, you should be able to use it even if you don't use Maven.&lt;br/&gt;&lt;h1&gt;Understand by Example&lt;/h1&gt;Let's take a look at what it takes to build a simple group of clients that ping each other to measure their network latency.&lt;br/&gt;&lt;h2&gt;What It Does&lt;/h2&gt;The application that we are implementing is a simple program that starts up and tries to ping all its peers. It then report the latency, in both the outbound (from itself to another peer) and inbound  directions.&lt;br/&gt;&lt;br/&gt;The complete source code can be downloaded from &lt;a class=&quot;external&quot; href='http://svn.oaktop.com/Combadge/tags/1.0/src/main/java/com/oaktop/combadge/LatencyTestDemo.java'&gt;here&lt;/a&gt;.   You may want to take a quick look at it before continuing (only 52 lines).&lt;br/&gt;&lt;h2&gt;Initialization&lt;/h2&gt;The first step to using Combadge is to initalize the JXTA platform and then create a ComSpace based on it. ComSpace is a communication realm identified by a simple name, which is created under a JXTA parent group. Generally, you can just use the world peer group as the parent.&lt;br/&gt;&lt;div class='codelisting'&gt;&lt;pre class=&quot;java&quot;&gt;PeerGroup world = PeerGroupFactory.&lt;span style=&quot;color: #006600;&quot;&gt;newNetPeerGroup&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;final&lt;/span&gt; ComSpace space = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; ComSpace&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Test&quot;&lt;/span&gt;, world&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;
space.&lt;span style=&quot;color: #006600;&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt; Don't forget that the ComSpace will also need to be started!&lt;br/&gt;&lt;h2&gt;Set up&lt;/h2&gt;After starting the runtime, the next step is to install listeners that will receive messages and perform the latency measurement.&lt;br/&gt;&lt;br/&gt;In reverse order of the actual program flow, we will first set up the code to respond to messages.&lt;br/&gt;&lt;div class='codelisting'&gt;&lt;pre class=&quot;java&quot;&gt;space.&lt;span style=&quot;color: #006600;&quot;&gt;attach&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;/latencydemo/request&quot;&lt;/span&gt;, &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; ComListener&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;{&lt;/span&gt;
      &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;void&lt;/span&gt; take&lt;span style=&quot;color: #66cc66;&quot;&gt;(&lt;/span&gt;&lt;a href=&quot;http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;amp;bntl=1&quot;&gt;&lt;span style=&quot;color: #aaaadd; font-weight: bold;&quot;&gt;String&lt;/span&gt;&lt;/a&gt; sender, &lt;a href=&quot;http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;amp;bntl=1&quot;&gt;&lt;span style=&quot;color: #aaaadd; font-weight: bold;&quot;&gt;String&lt;/span&gt;&lt;/a&gt; path, &lt;a href=&quot;http://www.google.com/search?q=allinurl%3AObject+java.sun.com&amp;amp;bntl=1&quot;&gt;&lt;span style=&quot;color: #aaaadd; font-weight: bold;&quot;&gt;Object&lt;/span&gt;&lt;/a&gt; msg&lt;span style=&quot;color: #66cc66;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;{&lt;/span&gt;
        &lt;a href=&quot;http://www.google.com/search?q=allinurl%3AMap+java.sun. ...</description>
            <author>Peter K Chan</author>
            <pubDate>Tue, 20 Jun 2006 18:11:08 +0100</pubDate>
        </item>
        <item>
            <title>Book Thoughts - The Innovator's Dilemma</title>
            <link>http://oaktop.com//wiki/Book+Thoughts+-+The+Innovator%27s+Dilemma</link>
            <description>Disclaimer: I own stocks in Sun Microsystems and AMD.&lt;br/&gt;&lt;br/&gt;As I was reading The Innovator's Dilemma, I took particular interest in Sun Microsystems as a case study for the theory proposed in the book. Sun Microsystems used to be the darling of Wall Street, selling big, powerful, and more importantly, expensive servers to the banks on Wall Streets. This worked very well for Sun, and brought in billions of revenues. However, the dotcom implosion, with its subsequent lapse of demand for big power server,  along with the rise of cheap x86 servers running Linux and Windows, has taken the glory away from Sun. This itself is a perfect example of how a disruptive technology (x86 Wintel/Lintel), initially serving the lower end of the market, eventually found itself upstream to the high end market served by Sun. From the look of the balance sheet, Sun was caught completely defenseless.&lt;br/&gt;&lt;br/&gt;Well, luckily, Sun declined, but hasn't quite set. Here comes the most interesting part of Sun's comeback strategy. Under the leadership of &lt;a class=&quot;external&quot; href='http://blog.sun.com/roller/page/jonathan '&gt; Jonathan Schwartz&lt;/a&gt;, whom, by the way, is a terrific evengelical writer, Sun's has a new two-prong strategy: on the low-end, they are embracing the (disruptive) x86-64 AMD opteron systems; and on the &quot;broad-end,&quot; they have come out with the market-redefining offering of SunGrid, an on-demand grid solution for computational power, with the promise of &quot;$1/CPU hr.&quot; Also, in the software arena, they are now licensing (most, I think) of their software, called the Java Enterprise/Desktop Systems, on a per-employee, annual basis.&lt;br/&gt;&lt;br/&gt;Some comments on the Sun Strategy:&lt;br/&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt; AMD Opteron Systems and Free Solaris: This is a complete reversal of Sun's early stance, and represents a radical departure from their old way of doing business. In contrast to most established companies, which try to retrieve to the even higher end of the market (as described in The Innovator's Dilemma), Sun appears to be fighting the disruptive wave head on, disrupting the disrupter that is Intel with AMD Opterons, and also using the open sourced Solaris to disrupt the disrupter that is Linux.&lt;/li&gt;&lt;li&gt; SunGrid: The SunGrid is an intriguing offer.&lt;/li&gt;&lt;li&gt; Java Enterprise System: Licensing model...&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;Sun's&lt;br/&gt;&lt;ul&gt;&lt;li&gt; Janus and ZFS are both delayed.&lt;/li&gt;&lt;li&gt; SunGrid appears to not be running.&lt;/li&gt;&lt;li&gt; Doing all the disruptive offerings in house, instead of creating a separate entity.&lt;/li&gt;&lt;li&gt; Java Enterprise/Desktop Systems doesn't seem to do well on the balance sheet.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;To be continued...&lt;br/&gt;&lt;br/&gt;</description>
            <author>Peter K Chan</author>
            <pubDate>Sun, 11 Jun 2006 19:12:55 +0100</pubDate>
        </item>
        <item>
            <title>Residence Life Software and Design</title>
            <link>http://oaktop.com//wiki/Residence+Life+Software+and+Design</link>
            <description>&lt;h1&gt;Introduction&lt;/h1&gt;Note: Some of the links below are no longer public. If you would like a copy or more information on them, please email me at peter@oaktop.com.&lt;br/&gt;&lt;br/&gt;This page serves as a record of all the work that I have done for on-campus residence life operation. It is based primarily on my experience as a resident advisor in the University Center during 2004/2005, and also my tenure as a RA at DePaul Lincoln Park campus the year prior.&lt;br/&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt; &lt;a title=&quot;Duty Sign Up System&quot; href=&quot;/wiki/Duty+Sign+Up+System&quot;&gt;Duty Sign Up System&lt;/a&gt; - A way to coordinate multiple staffs for signing up for duty.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;A running, production implementation of the system is located at http://ucc.oaktop.com/ (available on request).&lt;br/&gt;&lt;h1&gt;Software&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; SharePoint Portal Prototype (available on request) - This is a prototype web site that I developed for automating many residence life operations in the University Center. The original live SharePoint site was taken down on May 10. This is a static copy of the site. Some of the functionalities does not work, since it is only a static copy, but the overall structure and content of the prototype is captured. If you would like to install the site onto a live SharePoint server, you can download the SharePoint template file (available on request).&lt;/li&gt;&lt;li&gt; &lt;a  href='http://www.oaktop.com/go/ucc/DutyScheduleWorksheet3.xls '&gt; Duty Schedule Work Sheet&lt;/a&gt; - This is a Microsoft Excel spreadsheet, with an embedded Visual Basic macro, that takes a set of duty specification, and generates an actual schedule, suitable for use in the &lt;a title=&quot;Duty Sign Up System&quot; href=&quot;/wiki/Duty+Sign+Up+System&quot;&gt;Duty Sign Up System&lt;/a&gt;. (To use the macro, make sure that you enable Macro in your Microsoft Excel installation).&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;Documents&lt;/h1&gt;The following documents were produced for the evaluation of deploying SharePoint within the University Center. Their contents and recommendations are based on the University Center 2004/2005 needs, although they should be generic enough to be applicable to later years or other residence hall.&lt;br/&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt; &lt;a  href='http://www.oaktop.com/go/ucc/PortalModulesList.xls '&gt; Portal Modules Listing&lt;/a&gt; - A list of modules, or discrete functionalities, that can be developed and deployed independently. In addition to module descriptions, this listing also includes design risk, deployment disk, and usefulness/utility.&lt;/li&gt;&lt;li&gt; (Not Available) Support Proposal - A catalog of the need for supporting the deployment of SharePoint, and how to meet them.&lt;/li&gt;&lt;li&gt; (Not Available) Hosting Requirements - The hardware, software, and service level requirements for deploying SharePoint.&lt;/li&gt;&lt;li&gt; &lt;a  href='http://www.oaktop.com/go/ucc/3DofSharePoint.vsd '&gt; The 3D Phases of SharePoint Deployment (Visio Diagram)&lt;/a&gt; - A diagram that shows the deployment process.&lt;/li&gt;&lt;li&gt; &lt;a  href='http://www.oaktop.com/go/ucc/SharePointPresentation.ppt '&gt; The 3D Phases of SharePoint Deployment (PowerPoint Presentation)&lt;/a&gt; - A presentation on the strategy in deploying SharePoint.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;h1&gt;Copyright and License&lt;/h1&gt;All designs, software, documents and works under this collection and listed on this page are copyrighted by Peter K Chan. They are all licensed under the Apache License, Version 2.0. The full text of the license is available at: &lt;a class=&quot;external&quot; href='http://www.apache.org/licenses/LICENSE-2.0'&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;This basically means you are free to use, copy, improve on it, as long as you maintain the credit and the license terms.&lt;br/&gt;</description>
            <author>Peter K Chan</author>
            <pubDate>Fri, 27 Jan 2006 18:13:12 +0100</pubDate>
        </item>
        <item>
            <title>FileNX Help</title>
            <link>http://oaktop.com//wiki/FileNX+Help</link>
            <description>Welcome to the help page for FileNX. You can take a look at the screenshots and learn more about how FileNX works.&lt;br/&gt;&lt;br/&gt;If you are interested in how to configure FileNX to fit your situation, go to the &lt;a  href='http://www.oaktop.com/phpbb/index.php?c=2'&gt;forum&lt;/a&gt; to read about some common ways to set up FileNX.&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Main screen&lt;/h2&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://www.oaktop.com/go/filenx/images/main-1.2.3.gif&quot; style=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;The name of your computer is displayed on top - this is the name that you will need on other computers to synchronize with this computer. There is also the list of folders that are set up to be synchronized.&lt;br/&gt;&lt;br/&gt;You can set how often FileNX will synchronizes the files. When FileNX first starts, it synchronizes all your folders, and waits until the specified time interval (e.g. 10 minutes) before synchronizing again.&lt;br/&gt;&lt;br/&gt;If you just made a change to some of your files, and you want to synchronize them right away, you can select the folder and click on Sync. Now! and your files will be synchronized immediately. (This is only available if you have set up a Sync with Computer).&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Add a folder (on your first computer)&lt;/h2&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://www.oaktop.com/go/filenx/images/addfolder-first-1.2.3.gif&quot; style=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;You can add a folder to be synchronized here. You need to pick the actual folder on your hard drive, and also give it a name. You can give it any name, but this will be the name that you will need to use on all your other computers.&lt;br/&gt;&lt;br/&gt;The Sync with Computer field is optional. As long as you have the option set on one computer, it would work. However, if you want the Sync Now! button to work on both computers, then you need to set the Sync with Computer fields on both computers to point to each other.&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Add a folder (on your second computer)&lt;/h2&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://www.oaktop.com/go/filenx/images/addfolder-second-1.2.3.gif&quot; style=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;This is the same as the add folder dialog on the first computer. The only difference is that you now need to set the Sync with Computer field to the name of the first computer. Be sure to set the Share Name of the folder to be the same as the Share Name on the first computer (this is case-sensitive).&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Menu&lt;/h2&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://www.oaktop.com/go/filenx/images/menu-1.2.3.gif&quot; style=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;You can access some FileNX commands in the menu. You can add and delete folder, hide FileNX to your system tray, access the option, or learn more about FileNX by clicking on About.&lt;br/&gt;&lt;br/&gt;To start FileNX minimized next time, check the Start Minimized option.&lt;br/&gt;&lt;br/&gt;&lt;h2&gt;Options&lt;/h2&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://www.oaktop.com/go/filenx/images/options-1.2.3.gif&quot; style=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;You can configured some options for FileNX in the Options window.&lt;br/&gt;&lt;ul&gt;&lt;li&gt; You can set the port that FileNX runs on. If you cannot use the default port of 7890, you can set a new port here. If you change the default port of 7890, you need to use the new port number on your other computers. For example, if your computer name is &quot;mylaptop&quot; and you set the port to 8900, then you need to set the Sync with Computer field on all your other computers to &quot;mylaptop:8900&quot;.&lt;/li&gt;&lt;li&gt; You can also set whether FileNX should hides itself automatically in the system tray next time you start it (you should set this if you have FileNX set to run when you log on, so that you won't have to hide FileNX manually the next time you start your computer)&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;h2&gt;Tray&lt;/h2&gt;&lt;img alt=&quot;Image&quot; title=&quot;Image&quot; src=&quot;http://www.oaktop.com/go/filenx/images/tray-1.2.3.gif&quot; style=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;You can hide FileNX in your system tray, so that it doesn't get in the way of your usual work. To keep FileNX hidden in the future, check the Start Minimized option in the Options window.&lt;br/&gt;&lt;br/&gt;(Note: This feature is currently only available for Windows)&lt;br/&gt;&lt;br/&gt;</description>
            <author>Peter K Chan</author>
            <pubDate>Fri, 18 Nov 2005 21:03:36 +0100</pubDate>
        </item>
    </channel>
</rss>
