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

<channel>
	<title>Contents &#8211; Henry Poon&#039;s Blog</title>
	<atom:link href="https://blog.henrypoon.com/blog/tag/contents/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.henrypoon.com</link>
	<description></description>
	<lastBuildDate>Mon, 03 Oct 2022 15:48:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<site xmlns="com-wordpress:feed-additions:1">83044199</site>	<item>
		<title>Setting up your own Counter-Strike 1.6 dedicated server via Docker</title>
		<link>https://blog.henrypoon.com/blog/2018/09/23/setting-up-your-own-counter-strike-1-6-dedicated-server-via-docker/</link>
					<comments>https://blog.henrypoon.com/blog/2018/09/23/setting-up-your-own-counter-strike-1-6-dedicated-server-via-docker/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 23 Sep 2018 20:00:12 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer architecture]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[Counter-Strike]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Directory]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Filesystem Hierarchy Standard]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[HLDS]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Operating systems]]></category>
		<category><![CDATA[PATH]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Sleep]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[System administration]]></category>
		<category><![CDATA[System software]]></category>
		<category><![CDATA[Systemd]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[USR]]></category>
		<category><![CDATA[Variable]]></category>
		<guid isPermaLink="false">https://blog.henrypoon.com/?p=2992</guid>

					<description><![CDATA[Once upon a time, you had to run the HLDSUpdateTool, and then SteamCMD. But now, awesome people on the internet have created Docker images for setting up a Counter-Strike 1.6 dedicated server. Now, all you have to do is: Install Docker on your machine Get a Docker image for a CS 1.6 server (I created [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Once upon a time, you had to run the HLDSUpdateTool, and then SteamCMD. But now, awesome people on the internet have created Docker images for setting up a Counter-Strike 1.6 dedicated server. Now, all you have to do is:</p>



<ol class="wp-block-list"><li>Install Docker on your machine</li><li>Get a Docker image for a CS 1.6 server (I created <a rel="noreferrer noopener" href="https://github.com/hpoon/HLDS-CS1.6" target="_blank">this one</a>, which is based off of an <a rel="noreferrer noopener" href="https://github.com/kriansa/cs-16-server" target="_blank">existing one</a>. Mine has:<ul><li>A lot of maps</li><li>Metamod</li><li>AMXModX (with high ping kicker, podbot control menu, round money, rock the vote, and admin all in one)</li><li>Podbot</li></ul></li><li>Customise the server (e.g. editing the server.cfg, amxx.cfg, and other config files, etc.)</li><li>Start it up! (the README.md in the above linked Git repos has more info on this)</li></ol>



<p class="wp-block-paragraph">As far as ports go, I only needed to forward 27015 on my machine, but your mileage may vary. Others have reported that <a rel="noreferrer noopener" href="https://developer.valvesoftware.com/wiki/Half-Life_Dedicated_Server" target="_blank">some more ports</a> must also be forwarded on some machines.</p>



<p class="wp-block-paragraph">Then optionally, if you&#8217;re running Ubuntu and you want this server to start up like a service via systemd, you&#8217;ll need this:</p>



<ol class="wp-block-list"><li>An executable script with path /usr/local/bin/hlds with contents (make sure the DIR variable matches your installation directory):</li></ol>



<pre class="wp-block-code"><code lang="bash" class="language-bash">#!/bin/sh

# Do not change this path
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin

# The path to the game you want to host. example = /home/newuser/dod
DIR=/opt/cs-16-server/bin
DAEMON=./server

start()
{
    echo  -n "Starting HLDS"
    if [ -e $DIR ]; then
        cd $DIR
        $DAEMON start
    else
        echo "No such directory: $DIR!"
    fi
}

stop()
{
    echo -n "Stopping HLDS"
    if [ -e $DIR ]; then
        cd $DIR
        $DAEMON stop
    else
        echo "No such directory: $DIR!"
    fi
}

reload()
{
    echo -n "Restarting HLDS"
    stop
    sleep 1
    start
}

case "$1" in
    start|stop|reload)
        "$1"
        ;;
    *)
        echo  "Usage: $ 0 {start | stop | reload | status}"
        exit  1
        ;;
esac

exit  0</code></pre>



<ol class="wp-block-list" start="2"><li>A script with path /etc/systemd/system/hlds.service with contents:</li></ol>



<pre class="wp-block-code"><code lang="properties" class="language-properties">[Unit]
Description=HLDS

[Service]
Type=oneshot
ExecStart=/usr/local/bin/hlds start
ExecStop=/usr/local/bin/hlds stop
ExecReload=/usr/local/bin/hlds reload
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target</code></pre>



<ol class="wp-block-list" start="3"><li>Then execute:</li></ol>



<pre class="wp-block-code"><code lang="bash" class="language-bash">systemctl daemon-reload
systemctl enable hlds
service hlds start</code></pre>



<p class="wp-block-paragraph">Feel free to check out my server that&#8217;s running right now with the same Docker image! Here&#8217;s the command to connect via the console.</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">connect henrypoon.com:27015</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2018/09/23/setting-up-your-own-counter-strike-1-6-dedicated-server-via-docker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2992</post-id>	</item>
		<item>
		<title>Deutsches Panzermuseum</title>
		<link>https://blog.henrypoon.com/blog/2016/10/30/deutsches-panzermuseum/</link>
					<comments>https://blog.henrypoon.com/blog/2016/10/30/deutsches-panzermuseum/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Mon, 31 Oct 2016 00:29:52 +0000</pubDate>
				<category><![CDATA[europe]]></category>
		<category><![CDATA[Armoured warfare]]></category>
		<category><![CDATA[Berlin]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[Culture]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Euro]]></category>
		<category><![CDATA[fish]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[German]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Grab]]></category>
		<category><![CDATA[Gun]]></category>
		<category><![CDATA[Hamburg]]></category>
		<category><![CDATA[Hole]]></category>
		<category><![CDATA[Human]]></category>
		<category><![CDATA[Human behavior]]></category>
		<category><![CDATA[Humans]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[Mech]]></category>
		<category><![CDATA[Mecha]]></category>
		<category><![CDATA[Museum]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Pho]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[rice]]></category>
		<category><![CDATA[Rooms]]></category>
		<category><![CDATA[seafood]]></category>
		<category><![CDATA[Tank]]></category>
		<category><![CDATA[tanks]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Transmission]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[When We]]></category>
		<category><![CDATA[World War I]]></category>
		<category><![CDATA[World War II]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">https://blog.henrypoon.com/?p=2435</guid>

					<description><![CDATA[The next excursion from Berlin was the German Panzer Museum. I&#8217;ve always wanted to go here ever since I heard about it. It was about a 3-hour drive from Berlin, so this presented a good opportunity for me and my friends to drive on the famous Autobahn. Too bad our rental car was a Volvo [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The next excursion from Berlin was the German Panzer Museum.  I&#8217;ve always wanted to go here ever since I heard about it.  It was about a 3-hour drive from Berlin, so this presented a good opportunity for me and my friends to drive on the famous Autobahn.  Too bad our rental car was a Volvo and not the Mercedes Benz that we wanted, but we still got to drive really really fast.</p>
<p>The museum focussed on German tank developments since the beginning: World War I.  Definitely an awesome museum.  I&#8217;d recommend it for anyone interested in the subject.</p>
<p><a href="https://photos.google.com/share/AF1QipMNBWzOPohT_GiFZiQttSgM9rh2VhJuT9l79MRDFNF67CfeQdGieSPvPTMbwD1FkQ/photo/AF1QipNRi-1nfhPI_w_36zyQZlmOkk3SNGVCE1eYhOY8?key=dDlrdnZCMVJNMy1rVFp6elVIaWVyUFl0SG4xaTBR" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/EWI5lc4Rpujp2FmedRJVXDvvNvyv6k0HLxml6CM0uPpskIREWFziWpf-YpfiePttv6oMMXcTxj_lsYvqAryhWeM6zIQGTu3V53c8S7_7F7M7cKck2em_Sp987jVNKLjRTnBlbacWpB6085GCG5IwntDaRfpE_aMh9An78vL457ZnZC0lDjgjMldDFbZiBuE4z25OaCZwv4dAM2qQKMeqePevG_nPumT0G3Day7sS7BwXGKGvEo0E3xJH26PNIXYj72tPO_t0pAGfzWUj7sFMQJhoPjuAwBsflnpe29fy0RR-Lh06mDhTWMYgNOUaES12cNEmEDQ7n02WaU7JRuOy2hjyenoMsqnqPlUPCxo2VHHOO9dcNppPZC5Em0W2vSaxhHkegR6yPXQxdXLN0gMeP2sn6ijhpdS2pKJyDh3e-VHRO2D4QdhsIeaYP9eBjSuxzetK71AaIaT0D0eGqLOTgTNJGLYn6ieYCUtoBgSIs4MMFJVtWjNrG8C2dSV3bmZrPEMQVKik8LHDq2_0_6NdorMiQLIQJu85qZI91guDAcEtSR18u1bYkIMroUUXIkDu-fFVGLrPWIhf2ea866Y3YQkyNKLeQFMODuCmg4YqXfZDmhDSHQ=w1680-h945-no" alt=""></a></p>
<p>During the interwar period and World War II, the Germans took the tank concept and built it into a <em>very</em> effective war machine.  This museum is paradise for tank nerds like me.</p>
<p><a href="https://photos.google.com/share/AF1QipMNBWzOPohT_GiFZiQttSgM9rh2VhJuT9l79MRDFNF67CfeQdGieSPvPTMbwD1FkQ/photo/AF1QipN9Fkdy-8dbUkSFkORC5QK0FNhRmRSiHdlNFCrA?key=dDlrdnZCMVJNMy1rVFp6elVIaWVyUFl0SG4xaTBR" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/QSMTeSffN3QCHanN4DB237erDJbmMBg56kz5KhMeL3efTdtRlSk7N-STIcIIkq9Ict18RpK5Pb-W8Tov-aERZGWog5_FPvH9_2dwtHLH1C-YgYHN2bj7yi4XYbDRBIJoCCNIigS0cfwbj_hwhzVPZ4uLpBEVa5I9b7APXeffYtYArbr6bu90s6-FqzuE9zBqNpIWlIShzKZ-aXcHGHo7ToL-bdlDv-FYOrZEOw81sNYH-b7rb_S_4E9Vq5icR1jP9wk1EK3LJThnopw5OirmGHFV0oEWy26BiNs4PqidB0qpwJJgiKLyaxSdso7wbuR3N0QrXqRuALI-ipOCtz2-zmuiQrcFqGz9Kv90ZldiNcxwcTdeY1yLS3Cj0XxceYXT2HxHqPtDDgDufBaIS2OglrRhrIAH5u_IUXFvyHjDTEsKwoTV8Oh2MEsW9xO6t0ubopdcYJa-52s7YjXjBkyu_L0Ve0d0AtxEXBMXrlUt6I5DQvom6uyHBFMDLyYW8Ig2fOwVAZnlIbmMkinDbQJiPsAp_ezNtYyrAAYIqYYjJSKrHVwXVFgz9B-Ol-L3Hlfyy70XG8pJVkj3x2MEIMhGw4W3_6L8FzcT_ZyRw0joWMu1SCdHSg=w1680-h945-no" alt=""></a></p>
<p>This museum is also paradise for mechanical engineers too.  Here is an interactive exhibit on the tank&#8217;s transmission.  Yanking on the lever let you shift gears and one can see how the gears move around through the clear covering.  Definitely real cool for people who are into that sort of stuff.</p>
<p><a href="https://photos.google.com/share/AF1QipMNBWzOPohT_GiFZiQttSgM9rh2VhJuT9l79MRDFNF67CfeQdGieSPvPTMbwD1FkQ/photo/AF1QipNYdMADWGmJcPurRlxKwpl7SW5-aUY2eXGTHPpY?key=dDlrdnZCMVJNMy1rVFp6elVIaWVyUFl0SG4xaTBR" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/XRCVt_XCwYVeChox4ldrMHThmlt-OaiGlTlnrQDT-BZKrkxF8-LVu2IzKUGgVYTDbeEAz_0WemXlrEM40IeVA-eVEfZSbO0HVDJh8Rtgei4ELG5iHZDI_I42Um15HfZ91UHLMKcolsHdRDsGc1Yp7Mi32W5cEeEV-PLDuI7JTR5wZsAn17eBIQok4ldHFV-HkweDb37FbCMZ-vsZXy-Si7nPqTzpoTE0nKeMrBLsmo6gW05xbXc_PNsDotITPAgSrLv3eZ0MNGaLde3DBWCQnZRdg1PLqWgGMTTZSAmsBAqTmGxwjyvagz-UZIvUfUTIzrOtbSNYw0FAc7qAIhDrY09qjBCG2S0TCj3_56nXIVk3rTQPLGbBH17VtPYXywZPR6oLODseqK31dgspmr-x-GDGgrVsdU7OG0oWDm-Fjcd2Co0tl_lkUFwnAMIU6-ob2CXjlpVU-5eWH-D4MqYzL-vgPR-7T6GDDUtrIsLjmNcg9cu-4wGucaxq03CJQ2vIx9EPlBao6LOjKOkcN7xaf9A61j6XbXvVMQBEGo0kGJC0hogx1LpU9DL7u52-rwNw1My4SdGpvGj9x2Y6qBuIvIwP6KOa6nCdPGbiopAWxY-ae4st2Q=w537-h954-no" alt=""></a></p>
<p>There are lots of tanks here.  This is only one of the many rooms.</p>
<p><a href="https://photos.google.com/share/AF1QipMNBWzOPohT_GiFZiQttSgM9rh2VhJuT9l79MRDFNF67CfeQdGieSPvPTMbwD1FkQ/photo/AF1QipPUUF4tDHF14KBp2I0PpYNiuKV6hMGyoAw-gdZy?key=dDlrdnZCMVJNMy1rVFp6elVIaWVyUFl0SG4xaTBR" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/3-rd6hrFZid5iZvlJF3RrM5EXf_h0xnBxco827SJJBbBchCdTvJ2yk4Goye5vqm5iGs_VjzpkZi28NkUpQaAcl2n2KbMTVPtEcYzB9O5T2G7n2X79svwNXaRySDJuuWXfzpbZzv69Gg4YcD0it1usnc33UJxUdX1XqK57ROYq9k9oAqi0BgUl-B2q5ptMZ4uzXH_VJ2YE5WEZKajpTEXv2wEKu4W0kzQXoIxtLhWgwjo7jO-EfRO4OmNRr9Xfm33WdpG9yxRQj49XidWtGDK1C7wR1MqGOL3P-C-eGmevvn1g_S_LwBA6fsObdatR_U162XdJLFUvLnf2K4ITeI7P1IMI0nABHmM94S_y_A5lrGphK9-KYGV-PnUEWagvC3N4u4MZDj4GUZKpt6hAdznX1wIe9QKF2VG4Ywj5rzrSd8B3BaNV_PN0dyvGACAbZd1uRKGfngTMqqGCVErMj1G_PgHyYgxXlfG91RmeDjPRnXBPFMDSNxBEZ30IcdJOe5togmK_TOiQ_n5DG8M-yKmvl-sEqBy1W8QVYD2BV33a3gel1gRIulw_yNPvq3FMH6aP4JtZh9x_5-Dphvrz3rA1mwESaBdwNbLq9as0pmN0AfXerwMpA=w1680-h945-no" alt=""></a></p>
<p>There&#8217;s also an exhibit showing how kids learn how to <em>play</em> war at a young age and it questions the morality whether or not this is okay.  Ironically, when we were there, a group of children were going through the whole museum screaming about how the stuff in the museum was the coolest stuff ever.</p>
<p><a href="https://photos.google.com/share/AF1QipMNBWzOPohT_GiFZiQttSgM9rh2VhJuT9l79MRDFNF67CfeQdGieSPvPTMbwD1FkQ/photo/AF1QipN8tS-XKjSqweIeg8lNRo3hE-wpT4t6wkJzS1_h?key=dDlrdnZCMVJNMy1rVFp6elVIaWVyUFl0SG4xaTBR" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/w13n9kZd3VuAHxXWqfWy93tkf1IzefbmoB8ivrQgQ5InNZvyevecyWG9fpZ0glyEzTkExAXu-39kizStTG6htciJRK1s_tjHp64thYhUV8HmEKUHtvdnIiCxDchnmsSp4OPDaUC7qE6pDUZU0SUTx5-9th51m0dsZCtJTJGmd1Jh01flFqvIWwET4SMYJs9aNG7B9wAWhbZe7XOUTy8dlDv7Rzu7dq3nx0RaUbOSPFQw0acHKW02FR5o8lFlGd9AwbKOXjUGvodv1PHGR2n4x7kPhNX5ugc93aEk_ASxjO-yold6WpeadQYPWp5X3RdP2XqcRamrp9mW5uO9O5SClytWjABiGzUdzTgx8OGd0QZBK2UbOjCIliU5R8yojH8wyJRU3tBAFXjV3Df7JSc0me8w4Y1U3zeYiIZNfJMMowjd26K9i391SCjt5NNf_hVh8fxy5cQy_CyDTm2P0qccVlnAN_j3SMKxBR6EI66a8tWK3TAWePR0ramHldh0d7zemVa4sF5GSwhyzrAfsYXRAOW0x7w-PwfqAEbfM4lP4RMCBYe4zLGqdYH9H0dRZ2MPFCGvKp_U5m46-j-ewNo7LcseNU7teqH06kCuhlOSkTt7L0TOvw=w1680-h945-no" alt=""></a></p>
<p>Right behind that, was an exhibit of guns and how humans engineered death.</p>
<p><a href="https://photos.google.com/share/AF1QipMNBWzOPohT_GiFZiQttSgM9rh2VhJuT9l79MRDFNF67CfeQdGieSPvPTMbwD1FkQ/photo/AF1QipPO3JtrUYSwqXqpQCtAeMWHecMqoiih8OUZim_w?key=dDlrdnZCMVJNMy1rVFp6elVIaWVyUFl0SG4xaTBR" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/vCJqbfweHqWFD-9Oma_nhuqSYZY7ewUi_PQz6qD4YK8AXgSF1Y-PpbD5KbucoxXXJ9TIpqUupdkUYPf4XNj1PvvSLix2vF1bHd58nGABn5dbAuGb7to2vtfZa79TmGFciD_xVmSu2ke94DyTe2QHrMXcQ9id1sVn9kWAkTBZ87CiW5t-xHOK4rX5oFDu2rmjmy6FfEB3vJ9iW_Mm0bsCYnPvcbIwcdcVaHTwW4d2F9CisiWcKaJlDSucAlx_5uDnHNpcmnTWwRpTBCdH-fXsXSAd_wubeAk5I6DloeBqCNJXRhCsdN3kPru9hnxdCsCBPr3_kvKhB5bdEO1AcTBZSN3fKSOm1el8YALGJO3J0RRuWaEW2CwtwyZAdeo83fw1xhlchC9xllGDZi569odSYBOhqN7eqzrjL8sKkudiEdK56_iRDNZsDN31Rn9241CYN6BxRPjga7xB8Sscopx3s6CSDm32z_zcXGFkbCQuUOPGhdWwyQaNymHsK2_QP7L8_7qZJIXpHHq6SC2LamMRNb5CKzIB3If7XH3r8h2EUSViicDti4pHLHg1KWa60g_vPF94HlhUl2qYcYny1LSJzwCUet8remZg2RtMyQxlAdBV9YN6ag=w1680-h945-no" alt=""></a></p>
<p>The exhibit on how armour piercing rounds work was especially cool.</p>
<p><a href="https://photos.google.com/share/AF1QipMNBWzOPohT_GiFZiQttSgM9rh2VhJuT9l79MRDFNF67CfeQdGieSPvPTMbwD1FkQ/photo/AF1QipNp5BVnMUmP53eUAuuVx4bppZim8tD26umjGBUr?key=dDlrdnZCMVJNMy1rVFp6elVIaWVyUFl0SG4xaTBR" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/PegLWFF5-Cg_3n8ULgxUVypjqY-jvs2VPLy3ReymgAPX9z8Fv1cEul_XU2s4cNaslXoZznoo14_0oXSY-Enq6StIWcVl3P45WsKsHBQ41erD7PC5tD6LPYaGsFccGlutB0a5PVQZz4u6Fd4d9wb_lkICjR9Inhsdd_TflG77R_aZnaI2juKa1BbKmK1Ba5BsRQW6KqpytLRMiGC4XrvJ4jI9Rx_O9hIwTncMOOuuiR9OI1ezk0_9uQ1rVjEk0wyVohtsWSZfA_2M-UolwvCM5scgW43J34qxj5ETB1SxTn7L4OrWyU3bvoUbjQBwVGWe6cklCFqYi3CTIBVA_XF4nMzPKGphBSm_-lunGk01gV3ReeBL8SbQwzAAum86P_JGBqUxp97Ws71f5EKv2dAvQztOKeacVt4FPZKYrQO1KCjNukVd6x8ETPCC-58xKv7w4U-IM3NbR8eod8DfiWHcX7gjZc3afIY88vWx1sizGJyO34Xm5F8bMrq3alDYItUkasIk5CfYyVUL2KUuWsumRIFMnsMVjsdqQ3uoCJucfQdfYznzMQ-LPtlD7ilSjJuO2r0OyEY6q8aN3Pi0MCCv99O32EejZ1EtGdtAm__vuJJK3IezJQ=w1680-h945-no" alt=""></a></p>
<p>And also the cool cross-sections.</p>
<p><a href="https://photos.google.com/share/AF1QipMNBWzOPohT_GiFZiQttSgM9rh2VhJuT9l79MRDFNF67CfeQdGieSPvPTMbwD1FkQ/photo/AF1QipPZ9Ylvl75YB3ubo_BMN3g6kpV24p-0S6nn1Bpf?key=dDlrdnZCMVJNMy1rVFp6elVIaWVyUFl0SG4xaTBR" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/2mvZK3zadosfpNk0IujM6cDYNTTmQCh_P7aWlSUqqYXiJzmnG-qkH78CADupTRroaf4OLC-XsR_z2TnFcvdHEAr_G3bWXkwU1867MeeAq3PxCJ8PofMhZZacwBqRSnK5OCZkhCdV0CdSZgFdzxYN1q3Hyi5I_oQ2EQfbaiOaIJsyc8SWO4xN2_byl4gpriSSh337CND1946-8iYkjmHg8V69DpYO5Kivr1apbN15F5tc8xAXtE1xMY0lObw-0BsNjqDBGVjyG_njCGhxN4gx3xuFOQv3Zmd2N_5Qtwk8rViNnilGJxFOk-YRGMxKViZ-eAPEld4GGwHMTkcokDrVbENbcqWIkqN4dTPdQn4pwnF8Rr5OveE3aaS_tfX0BFaFU4CaPeHhTdwhT6V_Hj1FR-d1-ohW9El9ejvCDoZyF4UyNB9AlpUeacVgiTGYTC_S0LCI5xsClm8Eeovx84_VtU-UBh6JClAtW9s6Q78gsJjoqd1F-RNkUdKbvDWPRB4igUs1OCcwsY2Kjk9TthxmFMXRltmpY--HtFLGS7SXCBwNyI65xNsHkusU6NALSJi10Ra6m6cslFjOOw6ra4xO48oPElG0VZm8EiS3ysLU-U3Xp967iA=w1680-h945-no" alt=""></a></p>
<p>What&#8217;s a tank musum if you can&#8217;t actually go inside one?</p>
<p><a href="https://photos.google.com/share/AF1QipMNBWzOPohT_GiFZiQttSgM9rh2VhJuT9l79MRDFNF67CfeQdGieSPvPTMbwD1FkQ/photo/AF1QipMSEY0AmEV0hofyRQnx-_uHymw9JkCBlvrZNTAV?key=dDlrdnZCMVJNMy1rVFp6elVIaWVyUFl0SG4xaTBR" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/jNCdXjRUeK8Wd-b88XjOSsVOgwRiE0_mrEFdMwHRuDIwjWZpGgel33Y2MvjprXB02XKJmYs-Kd9Rmw_7VfBVaDzKexvZA9qwP9nW7LMEPqX6NrUaiuF5jfL8bLthn48Y4gSEDmpsYIJuv-KkU3IOHWiGOt-y0yRTeT6tHNQy4_txsqC-w4_7DTAQ_GxslKCc5ZbjncxxPKssReYghuaKvvcA_8rDS5VNIypY8I6PeKC2hkdh9wXaU_mLqkLP2hnQ131y_W9M12jP060TE1q9D1FhPDdvnPviOpUHCuec7W2OWyCuq6wKypfif-aXCgqFldgH5_TnOxkC5Or0WMy7kDDHEAt83Wv9ZDKe8Po9Ds1kJwno2QJST_l9cea0KONnIf-5pFCIBJFgRvQJPxsuzgOtiL_KMrHuR7JbbRJi3EE4G6dDnkySdKnZFlC_4hsajJpM3ocVVfGdR1ZCquHFOcAxsG3ypbgHwPa-tkwyZs1GBwVrr2tEuTUcGjsD02W7LxypdsW64sCB3pwU-Z_3wTneDg7g_wQjD6idFr09iqpSOaGIi9o3xbAnalarb4OwGBLoY05Cew8exloQWEKZ-QhD2Ua2581yV2Q-ZMVXfi43aYHgeg=w1680-h945-no" alt=""></a></p>
<p>And of course, one can&#8217;t look at tanks without thinking of margaritas and Katy Perry&#8230;</p>
<p><a href="https://photos.google.com/share/AF1QipMNBWzOPohT_GiFZiQttSgM9rh2VhJuT9l79MRDFNF67CfeQdGieSPvPTMbwD1FkQ/photo/AF1QipOrHfhCiDCsIzw1Ir3jEjOcc6sM5HfF4MOs5lq1?key=dDlrdnZCMVJNMy1rVFp6elVIaWVyUFl0SG4xaTBR" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/koD2wPmQ-jmhzU87N3kcwHbOdSTrJ2f3tznSVj57NQnmH_ORKHVeb9jOVDFA5VU5WndpMo0i-AL-NEgccZyN94xlkYgFKypNDfqqycUeWjvavwOJClro4ICD95a-bfP0u87XVvf4A_a_mRA4vIvP0ml43jCMLQnYvnbrUZIoyFY4ei7xracPE5tiKepnheeoiVxZJ3DyUaYQxT_iXrA-SJ8ddR5z-LgLLHXcYFfJp9SmSUlxflKnnFxKEOBBhSp8TvJZcRXlNNpDIq4OWFpsZe8mwJgbhNTMxetVFvVUIk37cgdHP_jfYc256WOKrmo2yvwXQ5lbMeDReDf4-CVVDfvufUidIetx_o1mEsIyQOYox3TwFoBue7lWfkCYCrJRRrWZbsRV5Kc5lW1FkhD8AoDF56QXtgcFZG4vKPDzhYnCOq8MVbbt_3of0wxzGBX1xzpDUmINhr__vB3lTHYExiVmvt9X3xavP_KtOCRgUMKngXMxQ5wYYIrYq7o3o3TKeQ1lxyuuCXfMgej47Mffi_h1Fw9AbiI8GRr4E1icB8KBEtQtoiJZy2uAIMORpAQRegMZjzbaUZaL22S_INY5tlC6vvMEWww4jDFxHbVgh2-88oOsdg=w537-h954-no" alt=""></a></p>
<p>After visiting the museum, we stopped in Hamburg to grab a bite to eat.  We ate at this restaurant with a mysterious set menu where we knew neither the price nor what we would be served.  We ended up eating different kinds of seafood over a few courses (swordfish, among them!), and it was ~40 euros!</p>
<p><a href="https://photos.google.com/share/AF1QipNZlJ9sY9KvFtwFK-Nv31adGA4KAjMwIcC6pdzWpo6APkcGiU_1MCaERM0OdmUFXQ/photo/AF1QipP2xOqIrxQRXyDvF93NJhmqxanQxiJsffHMjF_o?key=Zlp6ZlJ6Q1Ywb05vZjZrUTlBU295RTB6OWI2Q0Zn" target="_blank" rel="noopener noreferrer"><img decoding="async" class="aligncenter" src="https://lh3.googleusercontent.com/CaArSMqpchvVCNBEzRGf3_N09YzvDv0DwYxpo9Pn6oL1IlX3w-QRCkM4bJ7hSvemxDGwltg8zKCPwfZm3hZp5Fxo0AduqclLhOXVZ123o65TgNKvWCSod3oml8FV2-iPKynafrAVQ1Fxz6aESibDRoVHaAADnJ8dXt5Ud_LqLcnjNmnqRh7PMSmV0PgcTg0yrWPA4M2IwTrFj-9fHLvhlWN2h0xtEMS8Dv0sCZMylHAEKUHRVJFKrPiPzQyi8MVAJEhPG1slCEuqIdubxuBQ-N_-jRh1JtHoKaXzq45ngVlRlVXcW_tZftwe6r5pjZLQR1mGAoa1Sq6ZL-HyRwtNacpo3mtzWe6aHDkWG9Vt_FUPguBwxy6xGsFzydYxO6huvSs3t88_8icao1HSpElYjp0k67jfL46SMEtIdh9R4MTUGzzD3Zn6u5e4atoAH9hW8iMISXygoafgCdecnFQyqnoYWZlVfPMjzIpG44Emg8P_KVO7pmJTJhgSO2WLvbII19xYsY0jQjH1fq1lbBk6SZ7_64pnIHLzWxeJ1Iht8FP9LRHgMcbiB-uv6qlQt9_OyWnYC6JsEkBDX1aYtS-N7aYQkkEHxFbq26-NGUnKVeELnDvgZA=w1680-h945-no" alt=""></a></p>
<p>Link to photo album: <a href="https://goo.gl/photos/c7xACurjq5Qj94i46" target="_blank" rel="noopener noreferrer">here</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2016/10/30/deutsches-panzermuseum/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2435</post-id>	</item>
		<item>
		<title>Moving an OS to another disk and still have it boot with Linux</title>
		<link>https://blog.henrypoon.com/blog/2016/01/28/moving-an-os-to-another-disk-and-still-have-it-boot-with-linux/</link>
					<comments>https://blog.henrypoon.com/blog/2016/01/28/moving-an-os-to-another-disk-and-still-have-it-boot-with-linux/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Fri, 29 Jan 2016 05:18:36 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Booting]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Device file]]></category>
		<category><![CDATA[Disk partitioning]]></category>
		<category><![CDATA[Disk partitions]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[Final]]></category>
		<category><![CDATA[GNU GRUB]]></category>
		<category><![CDATA[GNU Parted]]></category>
		<category><![CDATA[GParted]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Multi-booting]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Operating systems]]></category>
		<category><![CDATA[Plug]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Solid-state drive]]></category>
		<category><![CDATA[System software]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">https://blog.henrypoon.com/?p=2194</guid>

					<description><![CDATA[For the longest time, I&#8217;ve had an 80 GB HDD running my Windows partition (dual-boot setup with Ubuntu on a SSD), but now I&#8217;ve finally upgraded the Windows partition to an SSD as well. I looked into how to clone my Windows partition onto the SSD, such that I can still boot the disk. I [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">For the longest time, I&#8217;ve had an 80 GB HDD running my Windows partition (dual-boot setup with Ubuntu on a SSD), but now I&#8217;ve finally upgraded the Windows partition to an SSD as well. I looked into how to clone my Windows partition onto the SSD, such that I can still boot the disk.</p>



<p class="wp-block-paragraph">I already have Ubuntu as my main OS, so copying the disk was easy using <a href="http://linux.die.net/man/1/dd" target="_blank" rel="noopener noreferrer">dd</a>, which allows copying all the contents of one disk to another. This works well when the new hard drive is greater than or the same size as the current hard drive (I upgraded from a 80GB HDD to a 128GB SSD).</p>



<p class="wp-block-paragraph">First I run this to see which disk I am copying from and to</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">fdisk -l</code></pre>



<p class="wp-block-paragraph">Then I run dd. If I am copying from /dev/sda to /dev/sda, then it&#8217;s:</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">dd if=/dev/sda of=/dev/sdb</code></pre>



<p class="wp-block-paragraph">But sometimes the disks don&#8217;t have the same size, so I used gparted to move/resize the partitions to make use of the extra space on the new disk. gparted complained that it might make my disk no bootable, but the disk was still bootable for me nonetheless. I didn&#8217;t even have to mess with any grub bootloader settings either. I simply unplugged the old disk, and left the new disk plugged in and booted into the new disk no problem.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2016/01/28/moving-an-os-to-another-disk-and-still-have-it-boot-with-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2194</post-id>	</item>
		<item>
		<title>Proof of the Farthest-in-Future Optimal Caching Algorithm</title>
		<link>https://blog.henrypoon.com/blog/2014/02/02/proof-of-the-farthest-in-future-optimal-caching-algorithm/</link>
					<comments>https://blog.henrypoon.com/blog/2014/02/02/proof-of-the-farthest-in-future-optimal-caching-algorithm/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 02 Feb 2014 23:19:13 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[All That]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Cache replacement policies]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Comment]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Computer architecture]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[CPU cache]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Digital technology]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[farthest-first]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[greedy algorithms]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[IOS]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[optimal caching]]></category>
		<category><![CDATA[Outside]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[tuna]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/proof-of-the-farthest-in-future-optimal-caching-algorithm</guid>

					<description><![CDATA[This topic came up in one of my lectures and I found it a little challenging to understand the proof so I thought I&#8217;d write it down as best as I could explain it so that I could understand it better and possibly help other people understand it better. &#160;Feel free to comment/ask questions/correct me, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>This topic came up in one of my lectures and I found it a little challenging to understand the proof so I thought I&#8217;d write it down as best as I could explain it so that I could understand it better and possibly help other people understand it better. &nbsp;Feel free to comment/ask questions/correct me, etc.</p>
<p>In a computer, there are various methods of storing information. &nbsp;Information can be stored in the processor cache, RAM, hard disk, etc. &nbsp;It can be faster to request information from a storage medium that is smaller. &nbsp;However, this smaller storage medium cannot fit all the possible information that can be requested. &nbsp;So the idea is to insert a portion of the data into the faster, smaller medium (the <strong>cache</strong>) and the rest into the slower, larger medium (<strong>main memory)</strong>.</p>
<p>If a request is made and the data is not available in the faster, smaller medium first, then the data will be read from the slower, larger medium &#8211; this is what is known as a <strong>cache miss</strong>.</p>
<p>Given that all the data cannot possibly live in the cache, there must be a way to minimize the amount of times that the data must be read from the main memory.</p>
<h1>Optimal Caching &#8211; Farthest-in-Future</h1>
<h2>The Algorithm</h2>
<p>The idea is that there is an algorithm that minimizes the amount of cache misses that occur for a set of requests. &nbsp;The <em>Farthest-in-Future Algorithm&nbsp;</em>evicts the item in the cache that is not requested until the farthest in the future. &nbsp;For example, given the following cache with items &#8220;a&#8221; through &#8220;f&#8221;.</p>
<table>
<tbody>
<tr>
<td>Cache Items</td>
<td>a b c d e f</td>
</tr>
<tr>
<td>Future Queries</td>
<td>g a b c e d a b b f</td>
</tr>
</tbody>
</table>
<p><span style="line-height:1.5em;">It is clear that &#8220;g&#8221; does not exist in the set of cache items and so when &#8220;g&#8221; is requested, a cache miss will result. An item will be evicted because &#8220;g&#8221; is not in the cache. &nbsp;According to the </span><em style="line-height:1.5em;">Farthest-in-Future Algorithm</em><span style="line-height:1.5em;">, element &#8220;f&#8221; will be evicted since it is the one that will be used furthest in the future.</span></p>
<h2>Definitions</h2>
<p><strong>Cache Miss</strong> &#8211; Occurs when it is necessary to bring in an item from the main memory into the cache</p>
<p><strong>Schedule</strong>&nbsp;&#8211; A list that contains, for each, request, which item is brought into the cache, and which item is evicted</p>
<p><strong>Reduced Schedule</strong> &#8211; a schedule that only brings in an item when there is a request for that item &#8211; so a non-reduced schedule would bring an item into the cache outside of a request for that item</p>
<h2>Theorem</h2>
<p>To be shown:</p>
<blockquote><p><em>Farthest-in-Future</em> is the optimal algorithm that minimizes the number of cache misses.</p></blockquote>
<p>To prove this, let&#8217;s say there is a schedule SFF&nbsp;that follows the&nbsp;<em>Farthest-in-Future Algorithm</em>&nbsp;and that there is a schedule optimal S<sup><em></sup>&nbsp;that has a minimum number of cache misses. It can be shown that it is possible to transform&nbsp;S<sup></em></sup>&nbsp;into SFF&nbsp;by performing a series of evictions without increasing the number of cache misses. &nbsp;Since&nbsp;S<sup>*</sup>&nbsp;is already optimal, and the number of cache misses did not increase, then SFF&nbsp;must be optimal.</p>
<p>To perform one transformation, the statement below can be used. &nbsp;Right now, it isn&#8217;t all that clear why this is necessary, but it should become clearer further on.</p>
<blockquote><p>Let S&nbsp;be a reduced schedule that is the same as SFF&nbsp;for the first j requests, then there is a reduced schedule S&#8217;&nbsp;that is the same as SFF&nbsp;for the first j+1 requests, and incurs no more misses than S</p></blockquote>
<h2>Proof</h2>
<p>Let&#8217;s say the cache at the start looks like this. &nbsp;S and SFF&nbsp;have the exact same contents (this is what was defined in the previous section).</p>
<table>
<tbody>
<tr>
<td>S</td>
<td>a b c d</td>
</tr>
<tr>
<td>SFF</td>
<td>a b c d</td>
</tr>
</tbody>
</table>
<p><span style="line-height:1.5em;">Given a schedule S, it can be shown that any request can be made, and the resulting schedule would be equal to the ideal algorithm and does not increase the number of cache misses. &nbsp;Essentially, we want S = S&#8217; = SFF&nbsp;after a request is made and that the number of cache misses have not increased. &nbsp;If this can be shown for all different scenarios that items are requested, then&nbsp;</span><em style="line-height:1.5em;">Farthest-in-Future</em><span style="line-height:1.5em;"> is the ideal algorithm.</span></p>
<h3>Case 1: Item Is Already in the Cache</h3>
<p>Now let&#8217;s say the next item to be requested is item &#8220;d&#8221;. &nbsp;It is clear that this item exists in both caches and no evictions are necessary. &nbsp;Since no evictions are necessary, SFF&nbsp;does not change. &nbsp;It was specified in a prior section that there is a schedule S&#8217; that equals SFF, which incurs no more misses than S.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>a b c d</td>
<td>Read&nbsp;d</td>
</tr>
<tr>
<td>S</td>
<td>a b c d</td>
<td>Read&nbsp;d</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>a b c d</td>
<td>Read&nbsp;d</td>
</tr>
</tbody>
</table>
<p>Here, S = S&#8217; because no changes had to be made to the cache and there were no cache misses. &nbsp;After the request for item &#8220;d&#8221;, S = S&#8217;, each with zero cache misses, which is a valid outcome.</p>
<h3>Case 2: Item Is Not in the Cache, S and SFF&nbsp;Evict the Same Item</h3>
<p>Let&#8217;s say the next item to be requested is item &#8220;e&#8221;. &nbsp;Neither cache has this item, so an eviction will have to be made. &nbsp;Let&#8217;s also say SFF&nbsp;and S both choose to evict item &#8220;a&#8221; to make room for &#8220;e&#8221;. &nbsp;It was specified in a prior section that there is a schedule S&#8217; that equals SFF, which incurs no more misses than S.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>b c d e</td>
<td>Evict a; Read e</td>
</tr>
<tr>
<td>S</td>
<td>b c d e</td>
<td>Evict a; Read e</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>b c d e</td>
<td>Evict a; Read e</td>
</tr>
</tbody>
</table>
<p>Here S = S&#8217; because S and SFF&nbsp;both evicted the same item. &nbsp;Both S and S&#8217; each have one cache miss (no increase relative to one another), which is a valid outcome.</p>
<h3>Case 3: Item Is Not in the Cache, S and SFF&nbsp;Each Evict A Different Item</h3>
<p>This is where the proof can become more confusing (as if it isn&#8217;t already). &nbsp;Let&#8217;s say the next item to be requested is &#8220;e&#8221;. &nbsp;Let&#8217;s also say that the ideal algorithm, SFF, evicts &#8220;a&#8221; and S evicts &#8220;b&#8221;.&nbsp;It was specified in a prior section that there is a schedule S&#8217; that equals SFF, which incurs no more misses than S. This means that in order to get S&#8217; = SFF, S&#8217; should evict &#8220;a&#8221; in order to match with SFF.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>b c d e</td>
<td>Evict a; Insert&nbsp;e</td>
</tr>
<tr>
<td>S</td>
<td>a c d e</td>
<td>Evict b; Insert&nbsp;e</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>b c d e</td>
<td>Evict a; Insert&nbsp;e</td>
</tr>
</tbody>
</table>
<p>Here, S does not agree with&nbsp;S&#8217; = SFF. &nbsp;Essentially, these two schedules behave the same, so long as future requests do not request items &#8220;a&#8221; or &#8220;b&#8221;. &nbsp;This shows that there is a schedule S&#8217; that equals SFF, but it is not known whether or not S&#8217; has no more cache misses than S, since &#8220;a&#8221; or &#8220;b&#8221; can be requested in the future, which can determine whether S or S&#8217; has more cache misses. &nbsp;From this point onward, S and S&#8217; behave the same until one of the following happens:</p>
<h4>Case 3a: Item Is in SFF, But Not S; S Evicts &#8220;a&#8221;</h4>
<p>Let&#8217;s say eventually item &#8220;b&#8221; gets requested. &nbsp;In this case, S&#8217; and SFF do not need to change. &nbsp;All S has to do is evict &#8220;a&#8221; to make room for &#8220;b&#8221;. &nbsp;In this case, S has two total cache misses (from request &#8220;e&#8221; and &#8220;b&#8221;), while SFF and S&#8217; each have only one cache miss, thus fulfilling the cache miss requirement.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>b c d e</td>
<td>Insert&nbsp;b</td>
</tr>
<tr>
<td>S</td>
<td>b c d e</td>
<td>Evict a; Insert&nbsp;b</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>b c d e</td>
<td>Insert&nbsp;b</td>
</tr>
</tbody>
</table>
<h4>Case 3b: Item Is Neither in SFF Nor S</h4>
<p>Let&#8217;s say eventually item &#8220;f&#8221; gets requested. &nbsp;S&#8217;, SFF, and S all need to make an eviction. S&#8217; and SFF can evict &#8220;b&#8221; to make room for &#8220;f&#8221;, and S can evict &#8220;a&#8221; to make room for &#8220;f&#8221;. &nbsp;In this case, each schedule as two cache misses, thus fulfilling the cache miss requirement.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>c d e f</td>
<td>Evict b; Insert&nbsp;f</td>
</tr>
<tr>
<td>S</td>
<td>c d e f</td>
<td>Evict a; Insert&nbsp;f</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>c d e f</td>
<td>Evict b; Insert&nbsp;f</td>
</tr>
</tbody>
</table>
<h4>Case 3c: Item Is in SFF, But Not S; S Evicts Item Not Equal to &#8220;a&#8221;</h4>
<p>Let&#8217;s say eventually item &#8220;b&#8221; gets requested and S evicts an item that isn&#8217;t &#8220;a&#8221;, say &#8220;c&#8221;. &nbsp;Now, SFF and S&#8217; both already have &#8220;b&#8221; in the cache. &nbsp;In order to synchronize S and S&#8217; to make them comparable to see how many cache misses each have, S&#8217; and SFF will evict &#8220;c&#8221; to make room for &#8220;a&#8221;.</p>
<table>
<tbody>
<tr>
<td>SFF</td>
<td>a b d e</td>
<td>Evict c; Insert a</td>
</tr>
<tr>
<td>S</td>
<td>a b d e</td>
<td>Evict c; Insert&nbsp;b</td>
</tr>
<tr>
<td>S&#8217;</td>
<td>a b d e</td>
<td>Evict c; Insert&nbsp;a</td>
</tr>
</tbody>
</table>
<p>Since &#8220;a&#8221; is being brought into the cache without a request for &#8220;a&#8221;, this makes S&#8217; and SFF no longer a reduced schedule. &nbsp;However, the proof calls for S&#8217; and SFF being a reduced schedule. &nbsp;Fortunately, it is possible to transform an unreduced schedule into a reduced one. &nbsp;In this case, each schedule has two cache misses, thus fulfilling the cache miss requirement.</p>
<h4>Case 3d: Item Is Not in SFF, But in S</h4>
<p>The only item that is in S and not SFF is item &#8220;a&#8221;. &nbsp;SFF had evicted it initially at the beginning of Case 3. &nbsp;Since SFF had evicted it, it must have been the item that would be requested furthest into the future. &nbsp;Therefore, it is not possible for item &#8220;a&#8221; to be requested before other items.</p>
<p>&nbsp;</p>
<p>After going through all possible eviction decisions that the schedules can do, it was shown that for each scenario, there was indeed a schedule S&#8217; = SFF, where the cache misses incurred in S&#8217; no more than S.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2014/02/02/proof-of-the-farthest-in-future-optimal-caching-algorithm/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1799</post-id>	</item>
		<item>
		<title>RoboCup 2013 in Eindhoven</title>
		<link>https://blog.henrypoon.com/blog/2013/09/15/robocup-2013-in-eindhoven/</link>
					<comments>https://blog.henrypoon.com/blog/2013/09/15/robocup-2013-in-eindhoven/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 15 Sep 2013 23:20:59 +0000</pubDate>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[China]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Competition]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Eindhoven]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Final]]></category>
		<category><![CDATA[Flag]]></category>
		<category><![CDATA[Force]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[German]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Hail]]></category>
		<category><![CDATA[Hole]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[international robotics competition]]></category>
		<category><![CDATA[IranOpen]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Japan]]></category>
		<category><![CDATA[Lag]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[Lost]]></category>
		<category><![CDATA[Mech]]></category>
		<category><![CDATA[Mecha]]></category>
		<category><![CDATA[Mexico]]></category>
		<category><![CDATA[Mexico City]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[netherlands]]></category>
		<category><![CDATA[osaka]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Pho]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[RoboCup]]></category>
		<category><![CDATA[RoboCup 2013]]></category>
		<category><![CDATA[RoboCup Junior]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[Robotics]]></category>
		<category><![CDATA[robotics research]]></category>
		<category><![CDATA[robots]]></category>
		<category><![CDATA[Soccer robot]]></category>
		<category><![CDATA[soccer robots]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[thailand]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[thunder]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[tuna]]></category>
		<category><![CDATA[When We]]></category>
		<category><![CDATA[Z]]></category>
		<category><![CDATA[Zhejiang]]></category>
		<category><![CDATA[Zhejiang University]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/robocup-2013-in-eindhoven</guid>

					<description><![CDATA[After a year of hard work redesigning our soccer robots, it was time to take them to the real competition. &#160;Last year, the team went to Mexico City, but this year, we went to Eindhoven, Netherlands to compete. The event was so well known, that even the queen of the Netherlands paid a visit to [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After a year of hard work redesigning our soccer robots, it was time to take them to the real competition. &nbsp;Last year, <a title="RoboCup Mexico City&nbsp;2012" href="http://henrypoon.wordpress.com/2012/06/29/robocup-mexico-city-2012/" target="_blank" rel="noopener noreferrer">the team went to Mexico City</a>, but this year, we went to Eindhoven, Netherlands to compete. The event was so well known, that even the queen of the Netherlands paid a visit to the competition!</p>



<p class="wp-block-paragraph">We had spent a whole year upgrading everything. &nbsp;I designed a new ball kicking system that was more durable, more maintenance free, and more powerful than the year before. &nbsp;The other mechanical systems were more robust as well. &nbsp;The electrical system also had a huge upgrade. &nbsp;Burning and smoking electrical boards were a thing of the past! &nbsp;We have never had a design this robust &#8211; ever!</p>



<h1 class="wp-block-heading">What is RoboCup?</h1>



<p class="wp-block-paragraph">For those who don&#8217;t know what <a class="zem_slink" title="RoboCup" rel="wikipedia noopener noreferrer" href="http://en.wikipedia.org/wiki/RoboCup" target="_blank">RoboCup</a> is, RoboCup is an international robotics competition aimed to further robotics research.  Their long-term goal is to have robots beat the World Cup Soccer team winners by 2050. There are various leagues within RoboCup, such as in robotic soccer (where we participate), home care, rescue, simulation, etc.  Our team, the <a href="https://www.ubcthunderbots.ca/" target="_blank" rel="noreferrer noopener">UBC Thunderbots</a>, compete in the small-size soccer league, which is probably has the fastest game play of all the different leagues.  The robots are generally cylinders with a diameter of about 18 cm and a height of 15 cm.  They can move at around 4 m/s and kick a golf ball at 8 m/s.</p>



<p class="wp-block-paragraph">One of the other leagues, the Standard Platform League competes with standardized robots for all teams and the key difference between each is the software that is written for the robots.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2013InEindhoven#5897889774823068050" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-f9iHrNYteSk/UdmDgHi80ZI/AAAAAAAASl4/TXCHk6Cuw4w/s1280/IMG_9527.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<p class="wp-block-paragraph">Another league, the mid-size league in RoboCup Soccer competes with robots that are about a 1/3 of the size of a person. The game isn&#8217;t as quick as the small-size league game and they play with a real soccer ball instead of a golf ball. During the competition, it gathered quite the crowd too.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://photos.google.com/share/AF1QipPQy3HF14n_7e4t5FnrpwU8OmgGpubbqgwwy3lj8bW-iQn7Pi-at_hGE0ZSyiWbtQ/photo/AF1QipPicgMB6khCwODYfneHn0qV6zk5XCoCSeHjO5gJ?key=WFRoNDZ3MkJzcFNzTFdhYXJIUjZKZUpLcHZab2J3" target="_blank" rel="noreferrer noopener"><img decoding="async" src="https://lh3.googleusercontent.com/AfP-d2gBpKo8XYAtwDxg17An-Zy2pcZpZvKAsKO94MMr=w1358-h468-no" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<h1 class="wp-block-heading">Preparing for the Games</h1>



<p class="wp-block-paragraph">Most teams arrived at the venue when it opened to get to work right away. Everybody wanted their robots in tip-top shape. Our team did the same. Even though our robots were ready mechanically and electrically, the key game changer was seeing which team had better artificial intelligence for their robots. Whenever got time to test on the field, we took advantage of it to make sure our <a class="zem_slink" title="Artificial intelligence" href="http://en.wikipedia.org/wiki/Artificial_intelligence" target="_blank" rel="wikipedia noopener noreferrer">AI</a> was working well too.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2013InEindhoven#5897889762368981026" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh5.googleusercontent.com/-Pfo2qbeJ3ck/UdmDfZJqiCI/AAAAAAAASlk/FO2OpIKjpGc/s1024/IMG_9526.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<h1 class="wp-block-heading">Round Robin</h1>



<p class="wp-block-paragraph">In the round robin stage, each team gets four games against other teams in their bracket. Each bracket is made up of five teams and the skill level is spread out based on the rankings of the previous year.</p>



<p class="wp-block-paragraph">We lost our first two games against a team called KIKS from the Toyota National College of Technology in Japan, and a team called STOx&#8217;s from the Universidad Santo Tomás in Colombia. In both of those games, we were simply outplayed because the other team had better software than we did. At the end of the game against the Japanese team, I spoke a bit of my horrible Japanese to them and they were super surprised and impressed that I knew a bit of Japanese!</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2013InEindhoven#5897889856120226418" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-X_KPZ2d8Qq4/UdmDk2ZtAnI/AAAAAAAASmo/L-7dqyE9Mq8/s1280/IMG_9536.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<p class="wp-block-paragraph">Because our robots were finished not long before the competition began, the software team did not get a chance to test the code that was written, and so we found out the problems during the competition. Our robots were never able to drive up to a ball and take possession of it. The robots somehow always missed the ball. When the robot had the ball, it didn&#8217;t know what to do with it. It sat there holding onto the ball doing nothing. This was so frustrating for our team and even more so for the software team who wished they had more time to test.</p>



<p class="wp-block-paragraph">We won our next two games against two lower tier teams. One is called RoboFEI, from the Centro Universitário da FEI in Brazil, and a team called RFC Cambridge from Harvard and MIT. It&#8217;s nice to be able to say that we beat a team from these two ivy league schools. Looks good when we look for sponsors too!</p>



<h1 class="wp-block-heading">Lucky Loser Round</h1>



<p class="wp-block-paragraph">Because we had a 2-2 record during the group stage, we played a fifth game, the so-called Lucky Loser Round, to see if we could qualify for the quarter finals. Our match up was against a team called ODENS from the Osaka Electro-Communication University in Japan. &nbsp;The game was so close that there was a dispute about the rules and whether what our team did was legitimate. Because our robots were not able to move up to a ball and shoot it at the net during the shootout, the referee introduced a workaround that the other team disputed.</p>



<p class="wp-block-paragraph">Our referee&#8217;s native tongue was Portuguese, we spoke English, and the other team spoke Japanese. I didn&#8217;t know enough Japanese to translate. Eventually, members from other teams like the Thai and Chinese team came to help with the dispute. During the discussion that took about an hour, I heard people speak English, Japanese, Portuguese, Thai, Japanese, and Mandarin all at the same time. It seemed like nobody had the full picture of what was happening and how to resolve it.</p>



<p class="wp-block-paragraph">The dispute was resolved when both teams agreed to a specific workaround that made it possible for our robots to do shootouts. &nbsp;The game ended with a shootout and we lost on the very last shot of the shootout unfortunately. We almost made it to 8th place. &nbsp;Still, achieving 9th place out of 22 teams was the best that the team has ever done before.</p>



<h1 class="wp-block-heading">The Competition Ends</h1>



<p class="wp-block-paragraph">Skuba, from Kasetsart University in Thailand, had won the competition for four years in a row since 2009, but this year they had a surprising finish that was not even the top 4. &nbsp;The second place team, ZJUNlict from Zhejiang University in China had beat them early in the quarterfinals. &nbsp;ZJUNlict&#8217;s strongest opponent this year was CMDragons, from Carnegie Mellon University in USA. &nbsp;In the final round, they were tied for the entire game and the game went to shootouts where CMDragons lost by one goal. &nbsp;ZJUNlict had made first place in the RoboCup 2013 in the Small Size League.</p>



<p class="wp-block-paragraph">As the competition came to a close, we said goodbye to the people on other teams that we met and as a parting gift from the German team ER-Force, they gave us a German flag with the names of all their team members signed onto it, with the message, &#8220;for our amazing friends, the Thunderbots, from team ER-Force&#8221;.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2013InEindhoven#5897890317693068290" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh3.googleusercontent.com/-8Z9e5g3BJsI/UdmD_t5PpAI/AAAAAAAAQE0/7GlmXRLS8jk/s512/IMG_9593.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<p class="wp-block-paragraph">I realized now that the competition is over, I probably wouldn&#8217;t be going to competitions in the future because I&#8217;ve graduated from university. It made me feel a little bit sad that I couldn&#8217;t compete anymore, but at least I can still help out the team wherever they need it.</p>



<p class="wp-block-paragraph">Link to photo album <a href="https://picasaweb.google.com/117972094293741244551/RoboCup2013InEindhoven#" target="_blank" rel="noopener noreferrer">here</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2013/09/15/robocup-2013-in-eindhoven/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1749</post-id>	</item>
		<item>
		<title>RoboCup Workshop in Mannheim</title>
		<link>https://blog.henrypoon.com/blog/2013/09/04/robocup-workshop-in-mannheim/</link>
					<comments>https://blog.henrypoon.com/blog/2013/09/04/robocup-workshop-in-mannheim/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Thu, 05 Sep 2013 03:27:55 +0000</pubDate>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[Baden]]></category>
		<category><![CDATA[Baden Württemberg]]></category>
		<category><![CDATA[Berlin]]></category>
		<category><![CDATA[Castle]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[city of heidelberg]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Companies]]></category>
		<category><![CDATA[Competition]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Eichbaum]]></category>
		<category><![CDATA[Eindhoven]]></category>
		<category><![CDATA[Erlangen]]></category>
		<category><![CDATA[Euro]]></category>
		<category><![CDATA[Europe]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[Force]]></category>
		<category><![CDATA[friedrich alexander university]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[German]]></category>
		<category><![CDATA[Germany]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Heidelberg]]></category>
		<category><![CDATA[hike]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[In Germany]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[Mannheim]]></category>
		<category><![CDATA[Mech]]></category>
		<category><![CDATA[Mecha]]></category>
		<category><![CDATA[Pho]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[rain]]></category>
		<category><![CDATA[RoboCup]]></category>
		<category><![CDATA[RoboCup 2013]]></category>
		<category><![CDATA[robocup competition]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[robots]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[States of Germany]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[things about germany]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[thunder]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Transport]]></category>
		<category><![CDATA[transportation]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Week]]></category>
		<category><![CDATA[Württemberg]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/robocup-workshop-in-mannheim</guid>

					<description><![CDATA[After two weeks of travelling in Europe, the next part of my journey was to participate in the RoboCup competition. &#160;The team that I am part of, the UBC Thunderbots, would be participating in the RoboCup 2013 competition in Eindhoven. &#160;But before that began, we spent a few days in Mannheim play a few games [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After two weeks of travelling in Europe, the next part of my journey was to participate in the <a class="zem_slink" title="RoboCup" href="http://en.wikipedia.org/wiki/RoboCup" target="_blank" rel="noopener wikipedia noreferrer">RoboCup</a> competition. &nbsp;The team that I am part of, the UBC Thunderbots, would be participating in the RoboCup 2013 competition in Eindhoven. &nbsp;But before that began, we spent a few days in Mannheim play a few games with two of the German teams: ER-Force from the Friedrich-Alexander University in Erlangen and the Mannheim Tigers from the Duale Hochschule of Baden Württemberg.</p>



<p class="wp-block-paragraph">This gave us a lot of opportunities to find out what was wrong with our robots before the real competition began. We found out that are mechanical and electrical systems were quite robust, while our software system was the weakest link of the three.</p>



<p class="wp-block-paragraph">In the downtime, we were taken on a tour of the nearby Eichbaum Brewery. The tour was quite difficult to follow because it was pretty much all in German. Even though I had learned some German, it was still quite difficult for me to follow.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCupWorkshopInMannheim#5897890462901878002" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-xotp0JFv3uE/UdmEIK1uPPI/AAAAAAAAQGo/Pcea7OaYsNQ/s912/IMG_9494.JPG?w=1280&#038;ssl=1" alt="" title="Three robots working so far..."/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<p class="wp-block-paragraph">I had been to Mannheim before and both times I went to Mannheim before this time, I had a very negative experience. The first time, I got food poisoning (I still remember which restaurant it was), and the second time, my friends and I waited at the Mannheim train station for 4 hours for a train to Berlin with a scheduled departure time of 12am.</p>



<p class="wp-block-paragraph">Having had lived in Germany before meant I recognized a lot of brands like food chains, department stores, cell phone companies, etc. Because of that, my teammates often asked me different things about Germany such as how German phone plans worked and how to sign up for a plan. I explained it to them and even asked the cashier at the supermarket who didn&#8217;t speak English about phone plans.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCupWorkshopInMannheim#5897890536895089954" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-LTyaDT0HarA/UdmEMefFDSI/AAAAAAAAQHs/bbOzN4uKz-k/s912/IMG_9503.JPG?w=1280&#038;ssl=1" alt="" title="Three robots working so far..."/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<p class="wp-block-paragraph">On another day, we were also taken on a tour to the nearby city of <a href="http://henrypoon.wordpress.com/2011/02/06/the-heidelberg-trek/" target="_blank" rel="noreferrer noopener">Heidelberg</a>. I had also been here before and vaguely knew my way around. We hiked up to the castle again, but we were there in the evening so the inside of the castle was closed by the time we arrived, so we just went as high as we could.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCupWorkshopInMannheim#5897890580265116898" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh5.googleusercontent.com/-p3_Rx9qNeoQ/UdmEPADTJOI/AAAAAAAAQIY/UQPd-jvTNww/s912/IMG_9508.JPG?w=1280&#038;ssl=1" alt="" title="Three robots working so far..."/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCupWorkshopInMannheim#5897890547066051826" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh3.googleusercontent.com/-VS3YK-5GogI/UdmENEYBnPI/AAAAAAAAQH4/NjNKBIEMNJE/s912/IMG_9504.JPG?w=1280&#038;ssl=1" alt="" title="Three robots working so far..."/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<p class="wp-block-paragraph">After spending a few days in Mannheim, all three of the teams organized transportation together to Eindhoven, where the real competition would begin. The workshop allowed us to see what our robots were capable of and what we could improve on early, so that we would be better prepared for the real thing.</p>



<p class="wp-block-paragraph">Link to photo album&nbsp;<a href="https://picasaweb.google.com/117972094293741244551/RoboCupWorkshopInMannheim#" target="_blank" rel="noopener noreferrer">here</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2013/09/04/robocup-workshop-in-mannheim/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1746</post-id>	</item>
		<item>
		<title>Considerations in Buying A 3D Printer</title>
		<link>https://blog.henrypoon.com/blog/2013/05/18/considerations-in-buying-a-3d-printer/</link>
					<comments>https://blog.henrypoon.com/blog/2013/05/18/considerations-in-buying-a-3d-printer/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 19 May 2013 03:28:22 +0000</pubDate>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[3D printing]]></category>
		<category><![CDATA[3D printing processes]]></category>
		<category><![CDATA[Actors]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer printers]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[Currency]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[Dime]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Emerging technologies]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Force]]></category>
		<category><![CDATA[Fused filament fabrication]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Gun]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[Inkjet printing]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Light]]></category>
		<category><![CDATA[Measurement]]></category>
		<category><![CDATA[Nature]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Office equipment]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Outside]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Printer]]></category>
		<category><![CDATA[Printing]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Scope]]></category>
		<category><![CDATA[Speed]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Volume]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/considerations-in-buying-a-3d-printer</guid>

					<description><![CDATA[These days, there are so many people who are very excited with the latest developments in 3D printing. &#160;There are so many different options out there for people who want to purchase their own machine. &#160;Having worked with them before, I&#8217;ve come up with a list of considerations for buying a 3D printer. Print Volume [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>These days, there are so many people who are very excited with the latest developments in 3D printing. &nbsp;There are so many different options out there for people who want to purchase their own machine. &nbsp;Having worked with them before, I&#8217;ve come up with a list of considerations for buying a <a class="zem_slink" title="3D printing" href="http://en.wikipedia.org/wiki/3D_printing" target="_blank" rel="wikipedia noopener noreferrer">3D printer</a>.</p>
<h1>Print Volume</h1>
<p>This is the amount volume that the printer is able to print in. &nbsp;Generally, the measurement is given by the three dimensions of a rectangular prism. &nbsp;The thing to watch out for here is that&nbsp;<strong>just because a printer has a large print volume, it does not mean the printer can reliably print in all of it</strong>. &nbsp;Say the design calls for a thin flat plate. &nbsp;If the plate is too wide, then the edges of the plate will peel/warp during the print and the flat shape that was intended will be slightly curved. &nbsp;To visualize what warping is, imagine a flat plate lying on the print bed as it is being printed. &nbsp;Warping is when the corners of the plate start peeling off the base during a print. &nbsp;Warping will be explained in a little more detail later on.</p>
<h1>Resolution</h1>
<p>This describes the accuracy of the nozzle&#8217;s positioning. &nbsp;It is usually measured in microns or inches. &nbsp;Clearly a smaller value means that the printer will be more accurate in its position.</p>
<h1>Layer Thickness</h1>
<p>Because the printer works by extruding layers of plastic, thinner layers allow for more fine details. &nbsp;However, more layers means that the part will take longer to print (all other things being equal).</p>
<h1>Print Speed</h1>
<p>3D printing is generally a slow process, but a faster print speed could definitely help offset that.</p>
<h1>Nozzle Diameter</h1>
<p>A small nozzle diameter means that the extruded plastic will be narrow and thus allow for fine details. &nbsp;It also improves the smoothness of the printed object.</p>
<h1>Ease of Removing Parts off the Platform</h1>
<p>Because during a print, the base of the part (ideally) should be firmly adhered to the print bed, one must take care when removing the part from the print bed. &nbsp;In some cases, removing a part requires a little bit of force to pry the part off the print bed. &nbsp;This application of force may affect the alignment of the print bed relative to the nozzle. &nbsp;In lower quality printers this can permanently affect the alignment or require frequent&nbsp;re-calibration&nbsp; &nbsp;Seeing how &#8220;rigid&#8221; the print bed assembly can help assess how the machine accuracy can be affect during part removal. &nbsp;For example, if the print bed is mounted on really large support structure, then the affect of misalignment is less of a problem than a machine where the print bed is mounted in a smaller support.</p>
<h1>Enclosure</h1>
<p>Some printers enclose the part to be printed in a box and some don&#8217;t. &nbsp;The reason an enclosure exists is so that the machine is able to prevent the part being printed from losing too much heat during print. &nbsp;Loss of heat during a print negatively affects the adhesion of the printed plastic. &nbsp;Also a larger temperature difference means the part will warp more. &nbsp;Without an enclosure, heat is able to freely transfer to the ambient. &nbsp;High quality printers generally have an enclosure.</p>
<h1>Variety of Printed Materials</h1>
<p>A common material to print with is ABS. &nbsp;Other materials such as PLA can be printed as well. &nbsp;The use of the particular material can be quite dependent on the application of the printed part. &nbsp;The cost of material also differs. &nbsp;It is worthwhile to determine what material will be printed. &nbsp;In many cases, ABS should be sufficient.</p>
<h1>Warping</h1>
<p>This is probably one of the biggest limitations of 3D printing. &nbsp;Because of the use of heat during print, it is natural for the part to shrink as it cools down. &nbsp;The problem is that the shrinkage is not uniform. &nbsp;Some parts of the model shrink more than others and most of the time it is very unpredictable. &nbsp;While there are some general guidelines that designers can follow to reduce warping, there are definitely some machine features that are good to have to help reduce warping even further. &nbsp;Because the nature of the way the printer prints is that plastic is extruded layer by layer, the plastic layer at the very bottom is the first to cool down. &nbsp;Cooling down means shrinkage. &nbsp;This also means that as the bottom of the model shrinks, the printer is still printing on top of a slightly shrunken part. &nbsp;Sometimes the shrinkage can be so bad that the part pulls itself off the print bed. &nbsp;When the part is no longer securely adhered to the print bed, the part may slide around and ruin the entire print. &nbsp;Warping is the enemy of 3D printing.</p>
<p>Below are some qualities of a machine that help reduce shrinkage:</p>
<ul>
<li>Heated print bed &#8211; a heated print bed keeps the plastic hot during the print and does not let the base cool down as much as if there were no heated print bed</li>
<li>Enclosure &#8211; described above</li>
</ul>
<p>There are more ways to reduce warping that the designer can do, but that is outside the scope of this article.</p>
<h1>Number of Nozzles</h1>
<p>A lot of printers just have the one print nozzle, but there are some with multiple. &nbsp;This allows printing with multiple colours or in some cases printing with a water soluble support material. &nbsp;Generally, support material has to be manually removed from the printed part, but if the support material is water soluble, this saves a lot of the manual labor involved in cleaning up the model.</p>
<h1>Nozzle Maintenance</h1>
<p>Through extended use, the nozzle can become quite dirty, that is black gunk starts building up on the surface of the nozzle. &nbsp;If one is not careful, this can clog the print nozzle. &nbsp;It is worthwhile to find out how often the nozzle needs to be replaced. &nbsp;There are also other factors that may result in the need to replace a nozzle. &nbsp;This is a recurring cost of maintaining the printer. &nbsp;Some nozzles are cheaper and more common than others and it is worth it to see how often the nozzle needs to be replaced and how much it will cost each time. &nbsp;Machines may come with extra nozzles.</p>
<h1>Lubrication</h1>
<p>Over time, moving parts may have to be lubricated. &nbsp;Printers should come with a maintenance manual to help instruct the user how to do this. &nbsp;It is also helpful to know the cost of the lubricant and how often it will be required.</p>
<h1>Machine Lifetime Cost</h1>
<p>Aside from the cost of the machine, operating a 3D printer can also incur the following costs:</p>
<ul>
<li>Shipping</li>
<li>Insurance</li>
<li>Brokerage fees</li>
<li>Tools for removing support material</li>
<li>Currency conversion</li>
<li>Sales tax</li>
<li>Print material (recurring)</li>
<li>Replacement nozzles (recurring)</li>
<li>Lubricants for moving parts (recurring)</li>
</ul>
<p>As it can be seen, the extra costs can be quite significant.</p>
<h1>Conclusion</h1>
<p>Hopefully this has given a good general overview of some of the considerations in buying a 3D printer. &nbsp;Different people will value different things in the printer and hopefully this subset of possible considerations for buying a 3D printer helps people make a decision as to what to look for in a printer.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2013/05/18/considerations-in-buying-a-3d-printer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1603</post-id>	</item>
		<item>
		<title>RoboCup Mexico City 2012</title>
		<link>https://blog.henrypoon.com/blog/2012/06/29/robocup-mexico-city-2012/</link>
					<comments>https://blog.henrypoon.com/blog/2012/06/29/robocup-mexico-city-2012/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sat, 30 Jun 2012 07:40:43 +0000</pubDate>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[north america]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[All That]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[Assumption]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[China]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Competition]]></category>
		<category><![CDATA[Const]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[Culture]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Dallas]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Erlangen]]></category>
		<category><![CDATA[Euro]]></category>
		<category><![CDATA[Europe]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Final]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Flag]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[Foods]]></category>
		<category><![CDATA[Force]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[German]]></category>
		<category><![CDATA[Germany]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Hail]]></category>
		<category><![CDATA[Hamburg]]></category>
		<category><![CDATA[Health]]></category>
		<category><![CDATA[Hole]]></category>
		<category><![CDATA[Human]]></category>
		<category><![CDATA[Humanoid robots]]></category>
		<category><![CDATA[Humans]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Lag]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Light]]></category>
		<category><![CDATA[Mannheim]]></category>
		<category><![CDATA[Matt]]></category>
		<category><![CDATA[Mech]]></category>
		<category><![CDATA[Mecha]]></category>
		<category><![CDATA[Mexico]]></category>
		<category><![CDATA[Mexico City]]></category>
		<category><![CDATA[Nap]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Pho]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Plants]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[RAR]]></category>
		<category><![CDATA[RoboCup]]></category>
		<category><![CDATA[RoboCup Junior]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[Robotics]]></category>
		<category><![CDATA[robots]]></category>
		<category><![CDATA[Rooms]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Safe]]></category>
		<category><![CDATA[Sauce]]></category>
		<category><![CDATA[Screws]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Shopping]]></category>
		<category><![CDATA[shrine]]></category>
		<category><![CDATA[Sleep]]></category>
		<category><![CDATA[Soccer robot]]></category>
		<category><![CDATA[soccer robots]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Stairs]]></category>
		<category><![CDATA[Steak]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[thailand]]></category>
		<category><![CDATA[The Go]]></category>
		<category><![CDATA[The Organ]]></category>
		<category><![CDATA[Thérèse Kirongozi]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[thunder]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Toronto]]></category>
		<category><![CDATA[Traffic signals]]></category>
		<category><![CDATA[Transport]]></category>
		<category><![CDATA[transportation]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[tuna]]></category>
		<category><![CDATA[UNC]]></category>
		<category><![CDATA[Urge]]></category>
		<category><![CDATA[Vancouver]]></category>
		<category><![CDATA[VANCOUVER INTERNATIONAL]]></category>
		<category><![CDATA[VANCOUVER INTERNATIONAL AIRPORT]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Week]]></category>
		<category><![CDATA[When We]]></category>
		<category><![CDATA[Woke]]></category>
		<category><![CDATA[World Trade Center]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/robocup-mexico-city-2012</guid>

					<description><![CDATA[Almost immediately after the conclusion of the North American Open, the Thunderbots team flew to Mexico for the next competition. &#160;Everyone woke up super early (in fact so early that the sun hadn&#8217;t even come up yet) and arrived at Vancouver International Airport at around 5:40 in the morning. &#160;We flew from Vancouver to Dallas/Forth [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Almost immediately after the conclusion of the North American Open, the Thunderbots team flew to Mexico for the next competition. &nbsp;Everyone woke up super early (in fact so early that the sun hadn&#8217;t even come up yet) and arrived at Vancouver International Airport at around 5:40 in the morning. &nbsp;We flew from Vancouver to Dallas/Forth Worth and then to Mexico City. &nbsp;Walking through that tunnel to board the plane gave a brief sense of deja vu &#8211; it felt exactly the same as the time I flew to Germany. &nbsp; It was a sudden realization that I would be leaving my home for the next little while and staying in a foreign place.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759226543207437746" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh5.googleusercontent.com/-Qiaa1xW2U_4/T-ziBwDhVbI/AAAAAAAAHQ8/BgzYZjSa25A/s640/IMG_6483.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<h1 class="wp-block-heading">Flying to Mexico City</h1>



<p class="wp-block-paragraph">When we got to Dallas Airport, we had a stopover of few hours, so we decided to have some Texan steak &#8211; or at least as Texan as we tried to get without leaving the airport. &nbsp;We ended up at TGI Fridays. &nbsp;It was the first steak that I&#8217;ve had in a long time, and I definitely could use another one. &nbsp;The steak even came with &#8220;Jack Daniel&#8217;s Sauce&#8221;, which made it that much better.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759226383175615378" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh3.googleusercontent.com/-ih5QZUFOgSo/T-zh4b49g5I/AAAAAAAAHQE/qTHt5PqKufM/s912/IMG_6477.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759226428127516930" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-qFaJNaPZwAw/T-zh7DWVGQI/AAAAAAAAHQU/YstVPgK0wE4/s912/IMG_6479.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<p class="has-text-align-left wp-block-paragraph">After eating, we met up with two others on the team who had flown from San Jose and Toronto. &nbsp;After a four hour flight to Dallas, and other few hours of stopover there, we had to fly for another two and a half hours to get to Mexico City.</p>



<p class="wp-block-paragraph">As my friend said, &#8220;it&#8217;s like China happened&#8221;. &nbsp;The Benito Juárez International Airport<strong>&nbsp;</strong>was probably the most disorganized airport I&#8217;ve ever seen. &nbsp;It&#8217;s as if every single flight landed at the same time. &nbsp;The lineup to grow through customs took at least forty-five minutes. &nbsp;During this whole time, everyone was tired and wanted get their sleep. &nbsp;A lot of the people on the team hadn&#8217;t slept the night before (rather than sleep 2 or 3 hours to wake up early for the flight right?). &nbsp;While in this lineup, we saw a couple of other <a class="zem_slink" title="RoboCup" href="http://en.wikipedia.org/wiki/RoboCup" target="_blank" rel="wikipedia noopener noreferrer">RoboCup</a> teams landing as well (Skuba, MRL, among others). &nbsp;After finally getting through customs and a security check, we got a ride to our hostel via transportation that we organized with the hostel prior to our departure.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759226600127095618" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh3.googleusercontent.com/-SQukRmB5BPo/T-ziFEGOY0I/AAAAAAAAHRU/l4HNvswgMTU/s912/IMG_20120616_200422.jpg?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759226627436937330" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-GBm1k1NyXqc/T-ziGp1ZgHI/AAAAAAAAHRc/TmlrBoBw16Q/s912/IMG_0258.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<h1 class="wp-block-heading">Hostel Mundo Joven Catedral</h1>



<p class="wp-block-paragraph">The hostel we stayed had very nice staff that really cared about making its guests feel safe there. &nbsp;It&#8217;s a common feeling among travelers to think that Mexico City is definitely not one of the safer places to travel to. &nbsp;To combat that, the hostel had its own security guards, security cameras, and they even called legitimate taxi&#8217;s for its guests. &nbsp;They even told us which direction to walk when leaving the hostel to avoid going to the shadier parts of town. &nbsp;Furthermore, it was situated in the historic center of Mexico City, within walking distance of the&nbsp;Metropolitan Cathedral of the Assumption of Mary of Mexico City and the&nbsp;Plaza de la Constitución. &nbsp;From some of the rooms at the hostel, there was a nice view of the cathedral.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759226831817075170" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh5.googleusercontent.com/-hGay_Jy_ET8/T-ziSjNa6eI/AAAAAAAAHSE/C44lylRE6vQ/s912/IMG_0264.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759227213653610098" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-X-h9fXl5bu4/T-zioxqWDnI/AAAAAAAAHTU/TST_ZyeRA7w/s912/IMG_0267.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<h1 class="wp-block-heading">Work Day</h1>



<p class="wp-block-paragraph">We spent the next day working on the robots to make sure none of the mechanical parts had been affected during the flight from Vancouver. &nbsp;We had packed all the robots in a regular suitcase with packing foam all around it to protect it. &nbsp;Looking over the mechanical parts, everything was in order. &nbsp;The main things we had to fix were tightening screws, adjusting the wiring etc. &nbsp;The software team had very little to do because they&#8217;ve written all the code they could, and just needed robots to test with. &nbsp;The electrical team on the other hand, toiled tirelessly to troubleshoot all the boards and make sure they were all functioning properly.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759227373884836354" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh5.googleusercontent.com/-syZQkz9jrE4/T-ziyGkcigI/AAAAAAAAHT0/vs2R8qHxRZw/s912/IMG_6494.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<h1 class="wp-block-heading">RoboCup Begins!</h1>



<p class="wp-block-paragraph">We arrived at the competition venue, the World Trade Center at 8 AM to find a slew of other teams patiently waiting to register. &nbsp;After probably an hour long wait, we all finally moved in and set up our work places. &nbsp;When we looked at the field the robots would be playing on, we noticed that the organizers hadn&#8217;t yet set up the cameras yet (required for the robots to &#8220;see&#8221; where they&#8217;re going). &nbsp;This meant that no teams could test. &nbsp;Teams that were ready could only wait until the organizers got those set up. &nbsp;Because of this delay, the games had to be delayed as well. &nbsp;This gave us more time to get the robots ready. &nbsp;For the next little while, we were the first team to arrive and the last team to leave everyday. &nbsp;The electrical team needed all the time they could get to finish everything.</p>



<p class="has-text-align-center wp-block-paragraph"><a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759227497318113602" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh4.googleusercontent.com/-GT5U_j3Enlc/T-zi5SZO4UI/AAAAAAAAHUc/3S9SQSQZJas/s912/IMG_6502.JPG?w=1280&#038;ssl=1" alt=""></a> <a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759227623068564786" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh5.googleusercontent.com/-go61-wffPIw/T-zjAm2efTI/AAAAAAAAHU8/fRD5_PxrguU/s912/IMG_6505.JPG?w=1280&#038;ssl=1" alt=""></a><br><a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759227604623215970" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh3.googleusercontent.com/-TQEm39MV-R0/T-zi_iIwzWI/AAAAAAAAHU0/IglyudyIleQ/s912/IMG_6504.JPG?w=1280&#038;ssl=1" alt=""></a> <a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759227648005243378" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh3.googleusercontent.com/-l27NDnBqLBE/T-zjCDv2AfI/AAAAAAAAHVE/O85N1QeGdJE/s912/IMG_6506.JPG?w=1280&#038;ssl=1" alt=""></a></p>



<p class="has-text-align-left wp-block-paragraph">Because we had already finished most our maintenance work the day before, there wasn&#8217;t a whole lot we could do. &nbsp;The electrical team had to continue working on their stuff to get as many robots ready as possible. &nbsp;For the next day and a half, we let the electrical team do their work and we&#8217;d help them along the way by replacing parts that were broken (encoders and such). &nbsp;Otherwise, there wasn&#8217;t much we could help with.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759228120598112418" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh3.googleusercontent.com/-W8Po6HKbi3Y/T-zjdkSw6KI/AAAAAAAAHXU/67aQEo5oafM/s912/IMG_0284.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759228208707447234" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh5.googleusercontent.com/-Cxbiq2MoaO0/T-zjishqqcI/AAAAAAAAHXs/yVI7r6W6PTA/s912/IMG_6519.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<h1 class="wp-block-heading">Food for the next Week</h1>



<p class="wp-block-paragraph">When we got hungry during the competition, we did a little bit of exploration to find food. &nbsp;Eventually, all the teams wound up at the same shopping mall for food. &nbsp;There was a supermarket downstairs to buy water and a food court upstairs with a variety of foods. &nbsp;We went to this mall pretty much everyday for as long as we were at the World Trade Center. &nbsp;One day we&#8217;d try Mexican food, other days we&#8217;d try plain-old hamburgers and other days we&#8217;d try even Chinese food (at least the white person&#8217;s interpretation of it). &nbsp;It wasn&#8217;t really healthy for us, but we figured it was only for a week.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759227975657811714" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-RwHxN2qZxGI/T-zjVIWTbwI/AAAAAAAAHWs/W3Qr31JuA78/s912/IMG_6514.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759228033043096818" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh3.googleusercontent.com/-Tbw-pryM2rE/T-zjYeIBZPI/AAAAAAAAHW8/tU5tPL-stHY/s912/IMG_6516.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<p class="has-text-align-left wp-block-paragraph">For dinner, most teams ended up ordering pizza from the nearby Domino&#8217;s. &nbsp;We ate it so much that everybody got sick of having pizza. &nbsp;Sometimes, we&#8217;d have dinner with other teams at our hostel restaurant so we could get to know them a little bit better. &nbsp;After all, the competition is more about mutual learning and robotics advancement rather than about winning.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759231932988512722" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh3.googleusercontent.com/-StDy36Hlw7A/T-zm7ejd2dI/AAAAAAAAHnY/jW1W1Y7ATOk/s912/IMG_0374.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<h1 class="wp-block-heading">Let the Games Begin</h1>



<p class="wp-block-paragraph">Because our team wasn&#8217;t that ready to begin with, we had to forfeit our first game against the Immortals from Iran. &nbsp;By the time we got three robots up and running, we played against the RoboJackets from Georgia Tech. &nbsp;They only fielded five robots out of the total six. &nbsp;For most of the game, both teams played pretty evenly, despite their two-robot advantage. &nbsp;All was going well until one of the opponent&#8217;s robots chipped the ball that hit the top of one of our robots, bounced off and rolled into the goal. &nbsp;In that particular situation, the referee had called an &#8220;indirect free kick&#8221;, meaning the shot, even if it went in the net, would not count. &nbsp;But unfortunately, that rule was not applicable because it hit off of another robot. &nbsp;It was an unlucky goal for us, and we definitely could not score a goal to tie up the game. &nbsp;We ended up losing one-nil. &nbsp;For the next few days, we kept complaining about that goal.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759231582027075618" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-7Ji9e3fDUcM/T-zmnDHvUCI/AAAAAAAAHmA/Z_plNkWKCiU/s912/IMG_0369.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<p class="has-text-align-left wp-block-paragraph">In our third game, we played against RoboFEI from Brazil. &nbsp;There were so many good scoring chances in this game from both our teams that made this game so intense. &nbsp;Even though we were only watching machines play, everybody cheered them on. &nbsp;We had four robots on the field this game and they all worked like a charm. &nbsp;The mechanical system, electrical system, and the artificial intelligence worked so well together. &nbsp;It was a great feeling for everyone on our team &#8211; to see our design work. &nbsp;After almost a year of hard work, this was it. &nbsp;We saw our robots move, intercept balls, shoot on the goal, etc. &nbsp;A lot of the robot shortcomings from the North American Open were also dealt with, such as the problem of the break beam sensors not working, and the robot not moving accurately on the field. &nbsp;When we scored, we cheered so loud that every single person in the room could hear us (there were probably about 1000 people in that room). &nbsp;We all got an immense feeling of satisfaction in seeing our working robots score their first goal. &nbsp;A few minutes later, the other team scored a goal. &nbsp;It didn&#8217;t matter to us, we were still high in the clouds in terms of our mood. &nbsp;The game ended 1-1. &nbsp;Despite the tie game, everyone on the team was so happy in seeing our robots work, it didn&#8217;t matter what the result was.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759233041651276162" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-GZTABWUnczQ/T-zn8ApRGYI/AAAAAAAAHso/xUHRlLdRfJU/s912/IMG_6611.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<p class="has-text-align-left wp-block-paragraph">This was a great morale boost for the team because for our forth and last game, we played against BRocks from Turkey. &nbsp;This time, we had our full fleet of robots. &nbsp;We played our first six on six game. &nbsp;Yet again, we saw our robots work. &nbsp;Nothing broke down during the game and everything just worked. &nbsp;It was quite rare for us to just put our robots on the field and have nothing go wrong. &nbsp;At one point, our robot shot the ball into the opposing robot and a piece fell off of it. &nbsp;We knew our design worked when stuff like this happens. &nbsp;This game was less intense for us than our previous game, but we did end up winning. &nbsp;That put our record at 1 win, 1 tie, and 2 losses &#8211; a total of 4 points. &nbsp;Unfortunately, this wasn&#8217;t enough for us to advance to the next round of the competition and as a result we finished 13th out of 20 teams in the league. &nbsp;Not so bad for having zero working robots when we got to Mexico.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759233425222435106" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-2t9nSvv7QDA/T-zoSVjwgSI/AAAAAAAAHug/bcNQZuLNqy0/s912/IMG_6627.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<p class="wp-block-paragraph">After the official games, we played a couple friendly games with other teams. &nbsp;The first game we played was against the Mannheim Tigers. &nbsp;The game was going well, until we found problems where some of the screws on the robot weren&#8217;t tightened sufficiently. &nbsp;As a result, things well off the robot when we played. &nbsp;It was quite embarrassing to see. &nbsp;At least it was only &nbsp;something minor like putting in a screw, and not something major like a design problem. &nbsp;In our second friendly game, this time against ER-Force from Erlangen, we found some electrical parts frying randomly on the board, which wasn&#8217;t good either. &nbsp;Out of six working robots, we now had three &#8211; still a net gain I guess.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759233272206417186" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh3.googleusercontent.com/-nCS454Xm9lE/T-zoJbh5XSI/AAAAAAAAHtw/jDPe76jeN-E/s912/IMG_6620.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<p class="wp-block-paragraph">After we were done playing, we watched the other teams play for first place. &nbsp;From watching their games, it was clear that they played on a way higher level than we did. &nbsp;Everything that their robots did were way better than ours. &nbsp;Shooting was faster, chipping went further, robots moved faster, kicks were more accurate, etc. &nbsp;Everything about their robots was just better. &nbsp;There is definitely a lot we could learn from these teams. &nbsp;The final winner of this year&#8217;s competition ended up being Skuba from Thailand, who beat ZJUNLict from China. &nbsp;Both teams analyzed each others strategies for days, but only one team could come out on top. &nbsp;And now for the fourth year in a row, Skuba remains the undefeated winner of the competition.</p>



<h1 class="wp-block-heading">Other Leagues in RoboCup</h1>



<p class="wp-block-paragraph">During our idle time, we walked around the other rooms to see how the other teams were working. &nbsp;RoboCup has many different competitions under its name, while our Small Size League competition is only one small part of it. &nbsp;Leagues range from soccer robots, rescue, simulation, to even home care robotics. &nbsp;In the home care robotics league, the competition involved a robotic navigating through a mock house to perform certain chores such as picking up objects to hand to people, speaking and hearing instructions, etc. &nbsp;It was an admittedly difficult task to do for these robots, but many teams were quite successful at it.</p>



<p class="has-text-align-center wp-block-paragraph"><a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759228844364218978" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh6.googleusercontent.com/-sBQuxf0EPVE/T-zkHsiDQmI/AAAAAAAAHag/y9RHBnTu_zg/s912/IMG_6529.JPG?w=1280&#038;ssl=1" alt=""></a> <a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759229897543841138" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh4.googleusercontent.com/-v2fgF2XgWBc/T-zlE_7o9XI/AAAAAAAAHeY/XOQ4EYXLgV8/s912/DSC00107.JPG?w=1280&#038;ssl=1" alt=""></a><br><a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759231355143436114" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh5.googleusercontent.com/-CH293bJouzc/T-zmZ16dt1I/AAAAAAAAHlA/bysxXODzPvw/s912/IMG_0365.JPG?w=1280&#038;ssl=1" alt=""></a> <a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759232799630038098" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh6.googleusercontent.com/-GBo0j8EATB8/T-znt7C6FFI/AAAAAAAAHrg/1vf3MRSwJiQ/s912/IMG_0388.JPG?w=1280&#038;ssl=1" alt=""></a></p>



<h1 class="wp-block-heading">Accidents Happen</h1>



<p class="wp-block-paragraph">Just like in the North American Open, there was yet again another accident involving batteries. &nbsp;Except this time, nobody noticed and the whole battery lit up in flames. &nbsp;Somebody just yelled &#8220;fire, fire!&#8221; and started trying to pat it down with something. &nbsp;Knowing that I was too far away to do anything, I just took out my camera and snapped a picture of the whole thing. &nbsp;Eventually, someone just poured lots of water over it to put our the fire. &nbsp;In retrospect, that might not have been a good idea since water in an electrical fire is not really a good thing. &nbsp;Nobody got hurt though, which is good. &nbsp;Afterward, the organizers didn&#8217;t let us charge batteries nearby our work space anymore.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759230750182690946" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-HJWj3DnsPNY/T-zl2oQlUII/AAAAAAAAHiI/VLx_78a5kh8/s912/IMG_6546.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"></p>



<h1 class="wp-block-heading">Some Design Shortcomings</h1>



<p class="wp-block-paragraph">Knowing that our ball kicker would be able to withstand impacts of the ball, what we had forgotten to analyze was how well the kicker would hold up if it hit a object fixed to the ground. &nbsp;We found out the hard way at the competition after a few games when we discovered that our robot kicker head was bent out of shape. &nbsp;We also had a lot of turf buildup inside the robot that was enough to slow down the wheel during the game. &nbsp;This turf had to be cleaned out after every match.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759230896807290706" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-Gx3bpBTCLlc/T-zl_KenJ1I/AAAAAAAAHi4/Kq7fJmR_c5s/s912/IMG_6551.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759232068897755362" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-7L7fcEx6QnY/T-znDY2wUOI/AAAAAAAAHoA/6OQnuZzQfrQ/s912/IMG_0377.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<p class="has-text-align-left wp-block-paragraph">For the kicking mechanism, the robot uses a solenoid/plunger mechanism. &nbsp;Activating the coil would cause the plunger inside the core to move quickly to hit the ball. &nbsp;A rubber band secured to the end of it would allow the plunger to return to its initial position. &nbsp;The problem with this setup was that the rubber band would easily break and had to be replaced after every game. &nbsp;When we took out the rubber band, we could always see cut marks along it. &nbsp;In another instance, a chipper solenoid on a robot almost popped out. &nbsp;It&#8217;s not really clear why this happened at all, but it could have been a screw that was not very tight to begin with.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759232124216180402" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh3.googleusercontent.com/-1qXmuJ66Op4/T-znGm7sfrI/AAAAAAAAHoQ/7rVX1089UYI/s912/IMG_6581.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759232143931913378" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-9S7knYO0NwM/T-znHwYStKI/AAAAAAAAHoY/WhyDaRSn5Pw/s912/IMG_0378.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<h1 class="wp-block-heading">RoboCup Closing</h1>



<p class="wp-block-paragraph">To close the competition, there was a soccer game where humans played against the middle size league robots. &nbsp;It was pretty funny to see the robots struggle to take the ball away from people who could handle the ball way better. &nbsp;At the same time, the humans were really scared of the robots since if a human ever got hit by the kicker head from the robot, it would break bones. &nbsp;The robot goalie however, proved quite competent in blocking shots &#8211; better than the human goal from what I saw. &nbsp;Or maybe the human goalie wasn&#8217;t trying very hard. &nbsp;I&#8217;m not sure who won the game since I didn&#8217;t watch the whole thing, but it was still really interesting to see.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759348499868611634" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-HMwA_RU-4nY/T-1Q8kBY9DI/AAAAAAAAHww/2IfjEAPijrU/s912/IMG_6639.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759348721834600562" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-Px8rbMViTAk/T-1RJe6NKHI/AAAAAAAAHxY/EdIkPT4RF-E/s912/IMG_6643.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<p class="wp-block-paragraph">Afterward, all the teams packed up their things and waited for the closing banquet. &nbsp;At the closing banquet, they served a standard meal for everyone. &nbsp;It was a really good chance for teams to celebrate their achievements and finally relax a little bit after the competition. &nbsp;Everyone deserved a rest after all of that.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759348871333552354" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-2qgMAO7-Z30/T-1RSL1iIOI/AAAAAAAAHx4/JyqJEcATp-0/s912/IMG_6647.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759348933917792626" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-45jbwNqzimM/T-1RV0-x2XI/AAAAAAAAHyI/RmjmEerPB7w/s912/IMG_6649.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<h1 class="wp-block-heading">First Real Tour of Mexico &#8211; Teotihuacan</h1>



<p class="wp-block-paragraph">After the competitions ended, most teams stayed an extra day or two to see the sights in Mexico City. &nbsp;The organizers of the Small Size League were nice enough to organize a tour for everyone the day after the competition ended. &nbsp;Most of the SSL teams went with us to the Aztec pyramids in Teotihuacan. &nbsp;The tour first showed us how their predecessors used different plants and minerals to make tools such as knives and sewing thread. &nbsp;That part was interesting at first, but I think what a lot of us really wanted to see were the pyramids. &nbsp;Afterward, the tour guide led us to the gift shop. &nbsp;For some reason, most of the people were so interested there, it took about an hour for everyone to finish so that we could move on with the tour. &nbsp;After the gift shop, we finally made it to the pyramids.</p>



<p class="has-text-align-center wp-block-paragraph"><a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759352605078227458" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh4.googleusercontent.com/-1FTAi5VWCCc/T-1UrhHoigI/AAAAAAAAH8I/CiOY1QU3k0Q/s912/IMG_6691.JPG?w=1280&#038;ssl=1" alt=""></a> <a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759354614543464770" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh5.googleusercontent.com/-cuxCZxgbfm8/T-1Wge9euUI/AAAAAAAAH_I/3VxUobhr270/s912/IMG_0475.JPG?w=1280&#038;ssl=1" alt=""></a><br><a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759356174485437650" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh3.googleusercontent.com/-ZikqvtlpxOU/T-1X7SMoPNI/AAAAAAAAIAY/biBhrYrBLyI/s912/IMG_0481.JPG?w=1280&#038;ssl=1" alt=""></a> <a rel="noopener noreferrer" href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759356502133848610" target="_blank"><img data-recalc-dims="1" decoding="async" style="width: 300px;" src="https://i0.wp.com/lh5.googleusercontent.com/-Iv9kJNHPT5I/T-1YOWyGOiI/AAAAAAAAIAw/u8fuLlotC8w/s912/IMG_6723.JPG?w=1280&#038;ssl=1" alt=""></a></p>



<p class="has-text-align-left wp-block-paragraph">After walking up and down the pyramids, we had lunch and went back to Mexico City to see the&nbsp;Basilica of Our Lady of Guadalupe. &nbsp;This was one of the most visited Catholic shrines in the world. &nbsp;But because I had already visited so many churchs and cathedrals from my tour around Europe, this part of the tour was less interesting for me.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759358683643309330" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh5.googleusercontent.com/-K80MB8SOZrc/T-1aNVie7RI/AAAAAAAAICw/9L8Bmw2O-TI/s912/IMG_6731.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759358886315197186" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-hEJofN1Tj8k/T-1aZIjOgwI/AAAAAAAAIDA/8hX4IEdGxHE/s912/IMG_6733.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<h1 class="wp-block-heading">Historic City Center</h1>



<p class="wp-block-paragraph">The team would fly back to Vancouver on the day after visiting the pyramids. &nbsp;But before leaving, we made sure to visit the&nbsp;Metropolitan Cathedral of the Assumption of Mary of Mexico City and the&nbsp;Plaza de la Constitución. &nbsp;In the plaza, hung a giant flag of Mexico. &nbsp;This is where the city center used to be, at least during the 19th century.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759363220192152546" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh3.googleusercontent.com/-EqkqL0xoXDI/T-1eVZgAy-I/AAAAAAAAIGo/CCQ9qwqcjV0/s912/IMG_0509.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/RoboCup2012MexicoCity#5759363470968731026" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-H72l-MeOfZk/T-1ej_tztZI/AAAAAAAAIGw/OvuXdfOIoS8/s912/IMG_0510.JPG?w=1280&#038;ssl=1" alt=""/></a></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"> </p>



<h1 class="wp-block-heading">Going Home</h1>



<p class="wp-block-paragraph">After 10 days in Mexico, we all longed to go home.  It had been a long week &#8211; full of stress, adrenaline pumping excitement and overall a good experience.  But after all that, we were ready to go.  We flew out in the afternoon from Mexico City.  Apparently, at around the same time that we were at the airport in Mexico City, three cops had been shot to death.  While we were there though, we didn&#8217;t hear anything of it.  We safely arrived in Dallas for a brief stopover and arrived back in Vancouver at about 8:30 PM, just in time to go home, wash up and go to bed.</p>



<p class="wp-block-paragraph">More photos <a href="https://photos.google.com/share/AF1QipPL8f__dTp4Yus2JOmcikHXC3I-5iy9c6UUKDvagPa6hoHz-gOIuOJTirbgoZITzA?key=Zmd3dVlHYnFZeHFmTGh4dW9yQjU3UEdORHZFeFBn" target="_blank" rel="noreferrer noopener">here</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2012/06/29/robocup-mexico-city-2012/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1477</post-id>	</item>
		<item>
		<title>Setting up Karaoke (KTV) like an actual Karaoke place at home using JetKTV</title>
		<link>https://blog.henrypoon.com/blog/2012/01/02/setting-up-karaoke-ktv-like-an-actual-karaoke-place-at-home-using-jetktv/</link>
					<comments>https://blog.henrypoon.com/blog/2012/01/02/setting-up-karaoke-ktv-like-an-actual-karaoke-place-at-home-using-jetktv/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Tue, 03 Jan 2012 03:00:05 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[.exe]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[agra]]></category>
		<category><![CDATA[AppLocale]]></category>
		<category><![CDATA[Artists]]></category>
		<category><![CDATA[Asian culture]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Bopomofo]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[Chinese language]]></category>
		<category><![CDATA[Click]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[Culture]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[Directory]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[DVD]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[English language]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Japan]]></category>
		<category><![CDATA[Karaoke]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Light]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[Literature]]></category>
		<category><![CDATA[Lyrics]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Password]]></category>
		<category><![CDATA[PATH]]></category>
		<category><![CDATA[Pho]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Plug]]></category>
		<category><![CDATA[Prompt]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Simplified Chinese characters]]></category>
		<category><![CDATA[Singing]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Songs]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[taiwan]]></category>
		<category><![CDATA[Taiwanese culture]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Trac]]></category>
		<category><![CDATA[UNC]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Volume]]></category>
		<category><![CDATA[Websites]]></category>
		<category><![CDATA[YouTube]]></category>
		<category><![CDATA[Z]]></category>
		<category><![CDATA[Zip]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/setting-up-karaoke-ktv-like-an-actual-karaoke-place-at-home-using-jetktv</guid>

					<description><![CDATA[As many people are aware, Karaoke is popular among Asian people.&#160; Generally, people go to a Karaoke establishment to enjoy it, but it can also be done at home.&#160; Current methods involve juggling a bunch of VCD’s, DVD’s, or even LD’s to get the wanted song.&#160; Karaoke establishments have all set up systems for people [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">As many people are aware, Karaoke is popular among Asian people.&nbsp; Generally, people go to a Karaoke establishment to enjoy it, but it can also be done at home.&nbsp; Current methods involve juggling a bunch of VCD’s, DVD’s, or even LD’s to get the wanted song.&nbsp; Karaoke establishments have all set up systems for people to use a computer to choose a song from a database (by artist, name, gender, etc.) that will be played on the TV.&nbsp; This set up can be replicated at home.</p>



<p class="wp-block-paragraph">This guide presents how to mimic the system used in professional karaoke establishments at home.&nbsp; The software this system uses revolves around a Taiwanese program called JetKTV.&nbsp; Much of the content from this guide was drawn from Chinese language websites discussing the usage of this program (scroll all the way down for References).&nbsp;&nbsp;&nbsp; There is little literature on this subject in English and so this guide presents basically an English version of the reference sites plus a few added notes.</p>



<p class="wp-block-paragraph">The program used is in Chinese, so people who are not fluent in Chinese may have a hard time navigating through the software.&nbsp; Those who are brave enough to continue or have a basic knowledge of Chinese with better English fluency may find it helpful to see English instructions. &nbsp;The Chinese sites on this subject are also written for older versions, and the setup procedure for those older versions are slightly different.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2012/01/jetktv.png?ssl=1" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2012/01/jetktv_thumb.png?w=1280&#038;ssl=1" alt="jetktv" title="jetktv"/></a></figure>
</div>


<h1 class="wp-block-heading">Contents</h1>



<ul class="wp-block-list"><li><a href="#tvsetup">Proposed Setup</a></li><li><a href="#jetktvsetup">Setting Up JetKTV2010</a></li><li><a href="#insertsong">Inserting A New Song</a></li><li><a href="#insertartist">Inserting A New Artist</a></li><li><a href="#testing">Testing</a></li><li><a href="#ref">References</a></li></ul>



<h1 class="wp-block-heading"><a name="tvsetup"></a>Proposed Setup</h1>



<p class="wp-block-paragraph">The proposed setup of all the hardware (TV’s, amps, computer, etc.) is in the diagram below.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2012/01/ksetup.png?ssl=1" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2012/01/ksetup_thumb.png?w=1280&#038;ssl=1" alt="ksetup" title="ksetup"/></a></figure>
</div>


<p class="wp-block-paragraph">The computer will play the chosen Karaoke videos and transmit the video signal to the TV (via extended display like in a dual monitor set up).&nbsp; The computer’s audio will go to an amplifier or a mixer, which is then transmitted to a set of speakers.&nbsp; Microphones are plugged into the amplifier/mixer is well so that the speakers can also play the sound picked up by the microphones.&nbsp; Depending on the hardware, the cables could be different (some TV’s may not have HD output etc.)The&nbsp; computer is the source of all the signals transmitted to the other devices and must be set up with the Karaoke software.</p>



<h1 class="wp-block-heading"><a name="jetktvsetup"></a>Setting up JetKTV2010</h1>



<p class="wp-block-paragraph">The PC will use the following software:</p>



<ul class="wp-block-list"><li>JetKTV2010 (<a rel="noopener" href="https://skydrive.live.com/?cid=46746bb36e167913&amp;sc=documents&amp;id=46746BB36E167913!171" target="_blank">link</a>)</li><li>SongMgr (optional – not helpful on English language PC’s – more on that topic later)</li></ul>



<p class="wp-block-paragraph">It is helpful to set up the software using a dual monitor setup.&nbsp; That way, it is easier to test without having to go and plug the computer to the TV each time.</p>



<p class="wp-block-paragraph">Unzip the contents of the JetKTV2010 program in a folder and open JetKTV2010.exe.&nbsp; The GUI buttons are for searching through the database (by looking for the artist, song name, etc.) to find the wanted song. Once a song is selected, it will be added to the list of songs to play just like the software at actual Karaoke establishments. The video will play in full screen on one monitor and the song picker GUI will say on another monitor.&nbsp; To close the program, click on the top left corner of the GUI (hidden button).</p>



<p class="wp-block-paragraph">Some of the software features in addition to searching and adding songs:</p>



<ul class="wp-block-list"><li>Skipping songs</li><li>Fast forwarding, pausing, etc.</li><li>Switching from one audio channel to both audio channels (alternating between vocal on/off)</li></ul>



<p class="wp-block-paragraph">This program reads from a database that contains the song names, artists, language, etc.&nbsp;&nbsp; Therefore, <strong><em>it does not come with songs</em></strong>.&nbsp; Songs must be downloaded separately and added on.&nbsp; These can come from existing DVD’s or YouTube.&nbsp; The next section will explain how to populate the database.</p>



<h1 class="wp-block-heading">Populating the Database</h1>



<p class="wp-block-paragraph">The SongMgr program mentioned above can add/remove contents from the database, but there are problems with it when using it on English language PC’s due to problems in encoding some of the Chinese characters.&nbsp; Even Microsoft AppLocale fails to rectify the problems.&nbsp; The solution is to use Microsoft Access to open up the database file directly and make changes.</p>



<p class="wp-block-paragraph">Adding one song can seem like a lengthy process at the first try, but it will get easier as one becomes more familiar with the system.</p>



<h3 class="wp-block-heading"><a name="insertsong"></a>Inserting A New Song</h3>



<p class="wp-block-paragraph">To insert a new song, one must navigate to the table where the songs are stored and then add an entry to it.</p>



<ol class="wp-block-list"><li>Open <em>Song.mdb</em>in the JetKTV program directory</li><li>When prompted for a password, input “tmwcmgumbonqd” without quotes</li><li>Navigate to the table <em>Tbl_Song.&nbsp; </em>This is the table that records all the song entries.</li></ol>



<p class="wp-block-paragraph">Below is an explanation of each column:</p>



<ul class="wp-block-list"><li>Song_ID: numerical identifier for each song (the program lists them as 5 digit numbers starting at 10000)</li><li>Song_Title: song title</li><li>Song_Singer: each singer has a unique number associated with them (see next section)</li><li>Song_Singer (2nd one): the name of the artist in text</li><li>Song_Word: number of characters in the song name</li><li>Song_Type: a number representing a language (Mandarin,Taiwanese,Cantonese,Hakka Chinese,English,Japanese,Movies,Cartoons,Other&nbsp; in that order starting from 1)</li><li>Song_Volume: song volume, but not sure what units they are in.&nbsp; Default value is 70.</li><li>Song_Channel: the audio channel that does <em>not</em> have the vocal track. (1-Left, 2-Right, 3-Both)</li><li>Song_FileName: filename of the video without the directory</li><li>Song_Path: the directory to the file (could use absolute pathing only, but unsure of whether relative paths work)</li><li>Song_Create: the time that the song was added in</li><li>Song_Count: the play count of a song</li><li>Song_Juyin: the Zhuyin characters representing the song title</li><li>Song_Stroke: number of strokes in the first character of the song name</li></ul>



<p class="wp-block-paragraph">Some of the columns can be left out, but that means that it will not be possible to find a particular song using the omitted information.&nbsp; For example, Song_Juyin can be left out for those who dont use the Zhuyin system, and that feature won’t be used for song searching anyway.</p>



<p class="wp-block-paragraph">To add a song, fill out the following information at the minimum on one row:</p>



<ul class="wp-block-list"><li>Song_ID (must be a unique number and should have five digits)</li><li>Song_Title</li><li>Song_Singer</li><li>Song_Volume (70 is the default)</li><li>Song_Channel</li><li>Song_FileName</li><li>Song_Path</li></ul>



<p class="wp-block-paragraph">For the Song_Singer information, refer to the next section.</p>



<h3 class="wp-block-heading"><a name="insertartist"></a>Inserting A New Artist</h3>



<p class="wp-block-paragraph">Artist information is stored on a different table called <em>Tbl_Singer</em></p>



<ol class="wp-block-list"><li>Open the table called <em>Tbl_Singer</em></li><li>Fill out an entire row to add a new singer (see below for the reference for each information column)</li></ol>



<p class="wp-block-paragraph">Below is an explanation of each column:</p>



<ul class="wp-block-list"><li>Singer_ID: unique identifier for each singer (this is the unique ID that is to put inserted in the Song_Singer column in <em>Tbl_Song</em>)</li><li>Singer_Sex: singer gender (0-Female, 1-Male, 2-Group/Band)</li><li>Singer_Name: artist name in text</li><li>Singer_Juyin: the Zhuyin characters representing the artist name</li><li>Singer_Stroke: number of strokes in the first character of the artist’s name</li></ul>



<h1 class="wp-block-heading"><a name="testing"></a>Testing</h1>



<p class="wp-block-paragraph">One a song or two has been entered into the database, one can test it by opening up the JetKTV program and trying to pick a song.&nbsp; It is working when one screen shows the video playing and another screen showing the JetKTV GUI.</p>



<p class="wp-block-paragraph">One can also try clicking the button labeled &#8220;導唱&#8221; to test if the audio channels are set up properly (toggling it turns on and off the vocals).</p>



<p class="wp-block-paragraph">The next step would be to plug in the computer with all the television components and then trying it again.&nbsp; Once everything works, the system is ready.</p>



<h1 class="wp-block-heading"><a name="ref"></a>References</h1>



<p class="wp-block-paragraph">All reference sites are in Chinese</p>



<p class="wp-block-paragraph">[1] 動手打造窮人 KTV <strong>&lt;</strong>http://www.jetktv.ktvdiy.com/&gt; [Update 2022 October: JetKTV seems to be defunct]</p>



<p class="wp-block-paragraph">[2] [影音相關] JetKTV 輕鬆打造免費 KTV 點唱機 (進階設定篇) &lt;<a href="http://www.soft4fun.net/video-related/%E5%BD%B1%E9%9F%B3%E7%9B%B8%E9%97%9C-jetktv-%E8%BC%95%E9%AC%86%E6%89%93%E9%80%A0%E5%85%8D%E8%B2%BB-ktv-%E9%BB%9E%E5%94%B1%E6%A9%9F-%E9%80%B2%E9%9A%8E%E8%A8%AD%E5%AE%9A%E7%AF%87.htm#doublescr" target="_blank" rel="noreferrer noopener">http://www.soft4fun.net/video-related/%E5%BD%B1%E9%9F%B3%E7%9B%B8%E9%97%9C-jetktv-%E8%BC%95%E9%AC%86%E6%89%93%E9%80%A0%E5%85%8D%E8%B2%BB-ktv-%E9%BB%9E%E5%94%B1%E6%A9%9F-%E9%80%B2%E9%9A%8E%E8%A8%AD%E5%AE%9A%E7%AF%87.htm#doublescr</a>></p>



<p class="wp-block-paragraph">[3] 峰網誌 JetKTV-DIY電腦點歌機..軟體篇 &lt;<a href="http://www.wretch.cc/blog/Linpy/4853370" target="_blank" rel="noreferrer noopener">http://www.wretch.cc/blog/Linpy/4853370</a>></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2012/01/02/setting-up-karaoke-ktv-like-an-actual-karaoke-place-at-home-using-jetktv/feed/</wfw:commentRss>
			<slash:comments>46</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1301</post-id>	</item>
		<item>
		<title>Summer Hailstorm</title>
		<link>https://blog.henrypoon.com/blog/2011/08/30/summer-hailstorm/</link>
					<comments>https://blog.henrypoon.com/blog/2011/08/30/summer-hailstorm/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Tue, 30 Aug 2011 19:18:50 +0000</pubDate>
				<category><![CDATA[europe]]></category>
		<category><![CDATA[cars]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Final]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Hail]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Light]]></category>
		<category><![CDATA[Meteorological phenomena]]></category>
		<category><![CDATA[Mirror]]></category>
		<category><![CDATA[Nature]]></category>
		<category><![CDATA[Outside]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Precipitation]]></category>
		<category><![CDATA[rain]]></category>
		<category><![CDATA[Rainbow]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Storm]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Stuttgart]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Water ice]]></category>
		<category><![CDATA[Weather hazards]]></category>
		<category><![CDATA[Week]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/summer-hailstorm</guid>

					<description><![CDATA[Day 230 The past two months of weather in Stuttgart saw a majority if days that were partly cloudy without a lot of sunshine and a lot of random rain.&#160; Since the beginning of last week, the temperature in Stuttgart rose from a comfortable 20 degrees Celsius to a phenomenal 30 degrees Celsius over the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Day 230</p>



<p class="wp-block-paragraph">The past two months of weather in Stuttgart saw a majority if days that were partly cloudy without a lot of sunshine and a lot of random rain.&nbsp; Since the beginning of last week, the temperature in Stuttgart rose from a comfortable 20 degrees Celsius to a phenomenal 30 degrees Celsius over the course of a day.&nbsp; Also part of this dramatic change was the sudden disappearance of all the clouds.&nbsp; This weather persisted for a few days and I was beginning to think that summer in Stuttgart finally arrived.</p>



<p class="wp-block-paragraph">Last Wednesday, I noticed on the weather report that Stuttgart would get more rain today and when I saw that I thought it was kind of strange.&nbsp; As usual though, the forecast here was generally pretty accurate.&nbsp; As predicted, it started raining as I got to work.&nbsp; The rain was so light that it may as well not be considered rain.&nbsp; Not long after, the weather reverted to the 30 degree sunshine.&nbsp; That was disappointing.&nbsp; I wanted more rain.</p>



<p class="wp-block-paragraph">Later that day, as I was leaving work, the bright summer sky was overrun by a large gathering of storm clouds.&nbsp; A large rainstorm started pretty much around the same time I decided to leave work. I walked from the research building to the main building, which usually takes about a minute, and during that time, it rained so hard that everywhere that my umbrella didn’t cover was soaking wet, namely my jeans from the knees down.&nbsp; I could squeeze the pant leg and water would gush out like a wet towel.</p>



<p class="wp-block-paragraph">Like everyone else, I waited for the bus by the guard booth at the gate under shelter.&nbsp; Looking out, everyone could see the rain turn into hail.&nbsp; Hail the size of loonies rained down.&nbsp; The sound of the hail hitting cars just made a loud and persistent rattling noise.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWTGzLfnbXF37yu-2vjnSZB42vIZ2xPu9JpwvzSanw59gmTBxF6d2XITa3lkOug6gHJkoarB4Y0X42p-jv6MEfAOlZbAyi12L5LuNzqSG7LPEWhhV73K59RwkYqWZgBLFr30hodeRwQCs2gAypa27_kkA=w1226-h919-no" alt=""/></figure>



<p class="has-text-align-center wp-block-paragraph"></p>



<p class="wp-block-paragraph">When the bus came, everyone opened their umbrellas and ran to the bus.&nbsp; While inside, we could still hear the loud rattling from the impact of the hail and we were all thankful that we didn’t have to be outside anymore.</p>



<p class="wp-block-paragraph">As the bus passed under an overpass, we could see the drain on the overpass disposing the drainage water onto the side of the road beneath it and because of that, it ended up flooding the road.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVIFKep_oKlOEVjEp0xbHkGlCdprDLp5JrzoP5fCfKkKaHMD9ATeyk-di8oDc00kQmrxfRnHcVE84DaX35RDk8qt_vKSlrK_JPKsbwchlKReOtjxICxO-XPTeZZvQqVCjeQBQ4LFPcM49GzcwIbLZQ8PQ=w1226-h919-no" alt=""/></figure>



<p class="has-text-align-center wp-block-paragraph"></p>



<p class="wp-block-paragraph">About halfway down the mountain, the rain stopped and almost immediately, a rainbow appeared.&nbsp; After getting off the bus, I started feeling the intense summer heat again.&nbsp; The wet ground now just reflected the intense summer like a giant mirror.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVauDHRDqIR8lYcB7w_al59wmomMtBNgffeJMGyFHfGUpohx7wIRbwRjw3ZTS_znxlI3kLAjB-RPJA9mUPAVYljFFSesSjvrtWHJoVu4vlqNADyJ6o1yt0k_J-jXo3AYqceBMVXy95nAKn7RV4SSuZu-g=w1226-h919-no" alt=""/></figure>



<figure class="wp-block-image size-large"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEV88NSWIZ0-4CfSsOJby38QK2JV58e1_LH9_WUk-VKJpoNPhisbLZ6iTWb-PW0QgYN-EpZfdbM6Cm9Pp2EnzfGDo_FEGs7wdah7Hrz9Y1gwD2faWTBwyzrkP-Y68FtDW-t1XGB-NlGcSkQ37cb7Vrn8iA=w1226-h919-no" alt=""/></figure>



<p class="has-text-align-center wp-block-paragraph"> </p>



<p class="wp-block-paragraph">I don’t think I’ve ever encountered that large of a rainstorm in recent memory and definitely not one where it started hailing in 30 degree weather.&nbsp; Haven’t been that soaked from rain before either.&nbsp; It was really like movie rain – it comes out of nowhere all of a sudden and gets everyone soaked, but it stops really quickly.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2011/08/30/summer-hailstorm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1228</post-id>	</item>
	</channel>
</rss>
