<?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>Object &#8211; Henry Poon&#039;s Blog</title>
	<atom:link href="https://blog.henrypoon.com/blog/tag/object/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.henrypoon.com</link>
	<description></description>
	<lastBuildDate>Tue, 04 Oct 2022 21:49:22 +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>&#8220;The Cyclist&#8217;s Training Bible&#8221; by Joe Friel &#8211; Chapter 1 summary &#8211; Mental performance</title>
		<link>https://blog.henrypoon.com/blog/2020/05/02/the-cyclists-training-bible-by-joe-friel-chapter-1-summary-mental-performance/</link>
					<comments>https://blog.henrypoon.com/blog/2020/05/02/the-cyclists-training-bible-by-joe-friel-chapter-1-summary-mental-performance/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 03 May 2020 04:55:37 +0000</pubDate>
				<category><![CDATA[books]]></category>
		<category><![CDATA[APT]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Cycling]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Dream]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Effects of fatigue on safety]]></category>
		<category><![CDATA[Family]]></category>
		<category><![CDATA[Fatigue]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Humans]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Joe Friel]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Mechanics]]></category>
		<category><![CDATA[Mental health]]></category>
		<category><![CDATA[Mental toughness]]></category>
		<category><![CDATA[Mind]]></category>
		<category><![CDATA[Motivation]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Physical exercise]]></category>
		<category><![CDATA[Physical fitness]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[rain]]></category>
		<category><![CDATA[Sleep]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[The Go]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[When We]]></category>
		<guid isPermaLink="false">https://blog.henrypoon.com/?p=5869</guid>

					<description><![CDATA[This is summary of chapter 1 of Joe Friel&#8217;s &#8220;The Cyclist&#8217;s Training Bible&#8221;. This chapter discusses the mental component of high performance cycling. For best results, training should be considered a full time job. One&#8217;s entire lifestyle must be directed towards this objective. This lifestyle will also require following the correct training program religiously over [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">This is summary of chapter 1 of Joe Friel&#8217;s &#8220;The Cyclist&#8217;s Training Bible&#8221;.  This chapter discusses the mental component of high performance cycling.</p>



<p class="wp-block-paragraph">For best results, training should be considered a full time job. One&#8217;s entire lifestyle must be directed towards this objective. This lifestyle will also require following the correct training program religiously over time.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>All athletes are limited more by their minds more than their bodies</p></blockquote>



<p class="wp-block-paragraph">One needs to develop a winning attitude. One needs to combine physical fitness with mental fitness.</p>



<p class="wp-block-paragraph">This chapter touches on a few mental opportunities for success:</p>



<ul class="wp-block-list"><li>Motivation &#8211; Competitive cycling demands an inner drive to excel. Everything in your life must be focused on the goal</li><li>Dreams, goals, and missions &#8211; high performance starts with a dream. This turns into a goal, and ultimately the mission. Are you willing to make any sacrifice, ride any number of miles, or do any workouts deemed beneficial to achieving the goal?</li><li>Believe to achieve &#8211; there are bound to be setbacks. One needs to remain confident, patient and mentally tough to power through. Relive each day&#8217;s wins, big or small to boost self-confidence</li><li>Mental toughness &#8211; when we&#8217;re at our limits, fatigue sets in, and the mind tries to make compromises. A fully committed rider gets through it</li><li>Patience &#8211; success won&#8217;t come quickly. We can introduce incremental change, like: sleeping 30 minutes earlier each day, cutting out 10% of junk food from our diets, etc.</li><li>Commitment and tenacity &#8211; there are moments where fatigue says to stop, but the fully commited and tenacious rider finds a way to keep going</li><li>Consistency and routines &#8211; the mind and body like regular and standard schedules. Things like jobs, families, and other responsibilities may interfere</li><li>Your high-performance team &#8211; surrounding each champion is a network of family, friends, teammates, coaches, etc.</li></ul>



<p class="wp-block-paragraph">This topic can get rather deep, so there is value in reading other books on the subject and speaking with other successful professionals from all walks of life.</p>



<p class="wp-block-paragraph">By improving one&#8217;s mental approach to cycling, their training and racing will benefit greatly too.</p>



<p class="wp-block-paragraph">Next: <a rel="noreferrer noopener" href="https://blog.henrypoon.com/blog/2020/05/12/the-cyclists-training-bible-by-joe-friel-chapter-2-summary-physical-performance/" target="_blank">Chapter 2 – Physical performance</a><br>Chapter list: <a href="https://blog.henrypoon.com/blog/2020/05/02/the-cyclists-training-bible-by-joe-friel-chapter-summaries/" target="_blank" rel="noreferrer noopener">Chapter summaries</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2020/05/02/the-cyclists-training-bible-by-joe-friel-chapter-1-summary-mental-performance/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5869</post-id>	</item>
		<item>
		<title>Kathmandu, Nepal</title>
		<link>https://blog.henrypoon.com/blog/2019/10/06/kathmandu-nepal/</link>
					<comments>https://blog.henrypoon.com/blog/2019/10/06/kathmandu-nepal/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Mon, 07 Oct 2019 05:05:43 +0000</pubDate>
				<category><![CDATA[asia]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[Bagmati River]]></category>
		<category><![CDATA[Boudhanath]]></category>
		<category><![CDATA[buddhism]]></category>
		<category><![CDATA[cars]]></category>
		<category><![CDATA[China]]></category>
		<category><![CDATA[Countries]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Flag]]></category>
		<category><![CDATA[Geography of Asia]]></category>
		<category><![CDATA[Geography of Nepal]]></category>
		<category><![CDATA[glacier]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[God]]></category>
		<category><![CDATA[Hindu temple]]></category>
		<category><![CDATA[hinduism]]></category>
		<category><![CDATA[Hole]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[india]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[kathmandu]]></category>
		<category><![CDATA[kumari]]></category>
		<category><![CDATA[Lag]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Mass]]></category>
		<category><![CDATA[nepal]]></category>
		<category><![CDATA[Newar]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Palace]]></category>
		<category><![CDATA[Pashupatinath Temple]]></category>
		<category><![CDATA[Pho]]></category>
		<category><![CDATA[Religion]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Stupa]]></category>
		<category><![CDATA[Subdivisions of Nepal]]></category>
		<category><![CDATA[Temple]]></category>
		<category><![CDATA[The Go]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Traditions]]></category>
		<category><![CDATA[Wiki]]></category>
		<category><![CDATA[Wikipedia]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Words]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">https://blog.henrypoon.com/?p=4583</guid>

					<description><![CDATA[When I first thought about going to Kathmandu, without having done any research, I thought there&#8217;d be a lot of mountains, glaciers, lakes, crisp mountain air and such, but nope, it&#8217;s actually a giant bustling city. It&#8217;s not quite like a city full of skyscrapers and things, but a vast sprawl of low rise buildings. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When I first thought about going to Kathmandu, without having done any research, I thought there&#8217;d be a lot of mountains, glaciers, lakes, crisp mountain air and such, but nope, it&#8217;s actually a giant bustling city.  It&#8217;s not quite like a city full of skyscrapers and things, but a vast sprawl of low rise buildings.  I would have liked to go out of the city, but I didn&#8217;t have enough time.</p>



<figure class="wp-block-image"><a href="https://photos.google.com/share/AF1QipMk4-KxghgwGhJgrnzcvRPgcRwzuCuvoKRW9uXa-flXrS2RpTt6Pb4Wr81FQnw7Yg/photo/AF1QipPpUMEt2slKeXa0mEECrJMxOAb_avMT6pRg1wHY?key=QThFcnV3WWlCaWJ2eVpkbWMteXVVcE1rR2Y1ZzR3" target="_blank" rel="noreferrer noopener"><img decoding="async" src="https://lh3.googleusercontent.com/FopWEyXbhfWlBb_G8cbcmPZy2G9J4F4T4JKee13OYAQX7bsN356pvYhAEflxm31ffCI-Uwhm6n08u3nayvdmEAoPOrwVepfmsiuYLS-bm9o2mFQDi4d3J1HbiGZ0lrvYNhlmniyLPlXzLQ5ciY7tkOuBgzjOvAWiW9KqLz7Keh8mktuYL_82mb9FE1gLkfaacvgYhSS9Ng5nZQ3gau8XbNSAKVnmP0TyXFnPDXGVN1dcz537jKij2r5fQxAy4iEvOO0jd6C2cet2AM78lioEoLCjID4FhhPKSOWWolKv0FTkp5pyh97qVVHTbUlClgjiFlSBqem2y8OmLaZRV0QYNoTvnsjsddTnSXO6krKvIXWdWn3DfPKMsiJcaC6LSbcNJ5sFsUVs5sYXOtg1BDwmX7u9xxL5KbMVJTHJfosx0KoSaHjiRuI6qb33PtXe1Qze17SGDuvsTNiuQv--Qtz_eulZroUezFymxMUlHJeUglm9AUQhCAonfILXVyKgwaCED0verKY7LTIiATwWU4mneUjVhEUHIGJPxDgSJgN2jKYI8n8JIgPirgKCNGbqEpB4ihuWhBPz9BGpm0tGsaZx25Baxqi4AGnu1ONW0Cgot35zo37TgTX5awcugYmwjWfYGZDGrKgoOuhyKuZEtZ-gcHIOhxVoABRZaNz20wLZUrft2MnCs8ELKGzkHKyPouMmODqgRqV5XKZu6v5vCIDIOMyIW9kd6LMnn3CHfvNnQuEi3jsM=w1464-h824-no" alt=""/></a></figure>



<p class="wp-block-paragraph">It&#8217;s reminiscent of other developing Asian nations.  People are riding around in motorbikes, pedestrians cross the street by weaving through vehicles, and there&#8217;s so much traffic that it kicks up a ton of dust.  Cars here often don&#8217;t have AC and more often than not have hand cranked windows.  The official language is Nepali, but many people speak Hindi or at least know some words.  It&#8217;s timezone is also quite interesting&#8230;  Its offset is 5:45 from UTC meaning it&#8217;s got a timezone that shifts in 15 minutes instead of a whole hour.  And I thought India&#8217;s 30 minute shift was annoying.</p>



<figure class="wp-block-image"><a href="https://photos.google.com/share/AF1QipMk4-KxghgwGhJgrnzcvRPgcRwzuCuvoKRW9uXa-flXrS2RpTt6Pb4Wr81FQnw7Yg/photo/AF1QipNkLwSOXwN0cQ4qAUo84T3iWk4OCCfHnUsvxcCF?key=QThFcnV3WWlCaWJ2eVpkbWMteXVVcE1rR2Y1ZzR3" target="_blank" rel="noreferrer noopener"><img decoding="async" src="https://lh3.googleusercontent.com/NZGaOuvUbplrcoIQ0sL3aGgfBAmFnMCC4VwS-teWf-cM1zaJqSIREQaIcoNA8-sIgf72Mw1bexzJSiCM-T_wjqAn9XOBPVBsH-FxOktNduNJa-QETm3ysTpg_BaSclWTtIkcX_hJpfZeqzTyJwM8aR8-r6bbp17pmgiY-O1BoC8XpIcAHoqVu4CDJhPyCyAFZnob0eA2BhDYfTovaTQfALadBQaO2zfAC2fFdgJX-pDwfncWyXdu2O5Ll71slgDFl2NJo6Xinvtj-Uiwb226rKg8W7PGNtvq0TvI7REySQo_Hq6UZS6BdXC5U4mBaC2YadEiE8qnBHtVhuTE08LmNu9s4XBOEqMP6-atQ2Ic2PYMyFha5KFNqDkfcMuJ--s67lP7hiUHUW4HZhJ2J9Mhg1XoSqkTmIuTBBaceX2KeWx5O44zhlKeXXPKYA0iHSqTym2msXVXyPcLBWs58Ctd6VyrUSomSRp-JqBHz3izeBEG4lvl37L67vr602TrhV8G2M-6Y9lKBC1oZEmO2cQ0KwEhm3V8_mIrWbBjXZx9rmdNai-xMejUrOGAcyZ4tGNEI7TfQqBV7uOR5JNsQ5S88KOLKZHvNVXWcdHy29PCRgluDdSkj8UOkxGLuyM_N7LGzQtf7FL_PrTe4Ja-qNPQxvqG9w_A1imFYsSEaK9rTAFNPsJfx5oFlgtJvM_HtANe2CyKrQ_70ABUHUp0sIl5AP3KmpGEfv_23ci6Uiv9nfYLfdla=w1464-h824-no" alt=""/></a></figure>



<p class="wp-block-paragraph">Durbar Square once held the palaces over the kings that ruled over the city.  In the surrounding area, there are also some courtyards and temples.  The architecture of the temples is reminiscent of temples in China, which makes sense since Buddhism is quite prevalent in both countries.</p>



<figure class="wp-block-image"><a href="https://photos.google.com/share/AF1QipMk4-KxghgwGhJgrnzcvRPgcRwzuCuvoKRW9uXa-flXrS2RpTt6Pb4Wr81FQnw7Yg/photo/AF1QipMuB4HAmMfPyPqwt4h28upWs1khnJ-8Zo2P8VcG?key=QThFcnV3WWlCaWJ2eVpkbWMteXVVcE1rR2Y1ZzR3" target="_blank" rel="noreferrer noopener"><img decoding="async" src="https://lh3.googleusercontent.com/7yqxizxXrkJlfdbn7G8l3on4fAQQHlt5TjJwHi6p4Q7_TCRk_RdtaRSNWpuziQGz2QGeOTu6sOb3O-cqPuw0AXYeRGosNLqsS_Z-pB8N3U2OyXD53vUtX5C6dDlih4QoR0MSkkdRCd4CNUak20usyj14sjPyezObjEqVST-PnCxn69WmcgBrqu1L14SwlLf1LlKxHGFToUJlFQUQPf8l8qTROh8zkciDQ0hOnvQOpiwj7rwwllHtDHcYP3e3P5gvXbpjnyKNVL3-wFtHHS7eKkh986z6EDQlyEGwwXuAP-skwXSV1MH6n3v69euLJzUP5nS8ansdOd7ogAUmcAQmuVkCsvrGSIbJgZg93fJV54Zbisi2ff1E3MjTSEPRfV0yBiG7zgp3srymk4HXELl2kHz6WkFVunMAvHpFqcwondvCwLXbIEQgaBTZHZCZd83TlgYCzRmncdv271vdT4yqdkufcbqZyR-3OSibezEtTFF2wfFHNaqIvvnh9CZbN5nvsFw9N0YyQ70FkAk7juEaHsVw9XpwMzeWxkawolEwOOXdxfBixo7P1RnQRemNFasSNcnrVjyNJCjNJAKF0Dkq9QRvfrou7fMxQ0e58znxwt39mMT-HSNylu8cVAni462BWFQV7qnpp10VQJEgXTG26W06_lZdphzmXrRu1UvRu5TA0zqS5WLICf7AfQOeRB2nftFwN3czFgBbUijSDItIBfbuoiRmuosthGxdkVmxcXh32GKJ=w1464-h824-no" alt=""/></a></figure>



<p class="wp-block-paragraph">In the center of the square, masses of street vendors sell trinkets to visitors.  The trinkets are mainly Buddhist prayer bowls, and other religious paraphernalia.</p>



<figure class="wp-block-image"><a href="https://photos.google.com/share/AF1QipMk4-KxghgwGhJgrnzcvRPgcRwzuCuvoKRW9uXa-flXrS2RpTt6Pb4Wr81FQnw7Yg/photo/AF1QipM1DL8DCE0k_j2PWGqQEYtfRzGcgi0jrG7lTKE3?key=QThFcnV3WWlCaWJ2eVpkbWMteXVVcE1rR2Y1ZzR3" target="_blank" rel="noreferrer noopener"><img decoding="async" src="https://lh3.googleusercontent.com/em-NaPM2uhGUi7XIK7TmNA_fxAQTFlVOPVmf0-_RM9CMR8x8Hi9hM8fMxW3c3baVwRfJ12lztrNDqz9EtLwmeFH_z8BGJFQ9L-XHEQZN65grXEZUoIW8DbRB0whYyY6VMlFkj922kFAHSqRmoH9z6sLRPqsWCPS_U24xGtzjibS2-T4XHQpzXIbNg9ENolK9ZNPmy43sOWZUe6WyIY1-1tJsqo1IwcbwCl1cddUzTY8PrOB9RWlk-y7TqiX7O6Xs71Rxt8_Sir6-1hYdYRGlycUjg1Zn_dc4sMafWsL7EF6ZY8vVeqv8jSpeZ7LBF3lon9jUi3xXFpeQRZcnDh3jDjdNZCKWe2_ztS0z6nPaXoe4Wds14HaqaE2hIPFQ0Zj54xn7QgbtrJJz4UgPGneW8h0SLreA1RjXjGYKeG9p-f2UuQVoPHA9Rz3NNsYNJnI8i9awATBBS34bg6vZLzlvDB1zMduCb4YK7NcYXinC9qaIUZyEhJmLCh8ffErdGfYXhsflO8Vu-QJ1qwANLBc08jrQs3hqWaFZLtiCNUjSrEacI80TvWXpFpCshaYNKpYESoJfYojMCivskduNijKIo7ywR2gw7PcGOhCVlOAwSD4kW6qq9dYiwHCLVv4Fg0_IcPqTzFTeku4isuFFC8EdmMEvRfvlyDBmQuqy_l87ImDxEcVhm1xMqKqiAxMGCvBC5cZNM3W7Ob-o_XUJzK6b71Hz83JjoqRuhQgUMhespuhWBc0I=w1464-h824-no" alt=""/></a></figure>



<p class="wp-block-paragraph">The most shocking thing to me in Nepal, is that as a part of their Hindu and Buddhist traditions, people worship &#8220;<a rel="noreferrer noopener" aria-label="kumari (opens in a new tab)" href="https://en.wikipedia.org/wiki/Kumari_(goddess)" target="_blank">kumari</a>&#8220;, young prepubescent girls that represent the manifestation of divine female energy.  </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>The worship of the goddess in a young girl represents the worship of  divine consciousness spread all over the creation. As the supreme  goddess is thought to have manifested this entire cosmos out of her womb, she exists equally in animate as well as inanimate objects</p><cite><a href="https://en.wikipedia.org/wiki/Kumari_(goddess)" target="_blank" rel="noreferrer noopener">Wikipedia</a></cite></blockquote>



<p class="wp-block-paragraph">Within Durbar Square, in an almost non-descript brick building, the kumari appears from time to time within the windows that look into the courtyard of the building, but no photography is allowed.  I had randomly stumbled upon this building only because there were so many people around it.</p>



<figure class="wp-block-image"><a href="https://photos.google.com/share/AF1QipMk4-KxghgwGhJgrnzcvRPgcRwzuCuvoKRW9uXa-flXrS2RpTt6Pb4Wr81FQnw7Yg/photo/AF1QipNF1Ka7g1mAxGpzEBsR1uH0CSEtlL2TYMWD3o5t?key=QThFcnV3WWlCaWJ2eVpkbWMteXVVcE1rR2Y1ZzR3" target="_blank" rel="noreferrer noopener"><img decoding="async" src="https://lh3.googleusercontent.com/X1Yxibest5LtQalVPNs_jOhHoXnUyhFhLsI3SyRdybyPMNWsOXaeH1snuYid-akl018qGAsWFA3j7rQkOLY_Quw6gb9vn3CN1Dq6J-Il1WMR3rz_5f4xjNyjoo7xwOGZjHKgrH5GkTrss-0jjD6hwOoEjDhovxkBDCNIfXjXImwRcVkwPFcyHHHuTeyCiA4urL1vib9Hn0x1N_w3e7joqdD7KjbSA4isxFEc7tdZ50vMbnOIVxUgNbGSU5XjPI1zgvJDUeQNAtt8FFj_JVGVseszb9fVm4fjenQNBXg9Q7djuHTN6XMxix61j7_VnX4-BZLGQ0H67EOWVrl7bqqrbIbpBJx_k4AH9TIhmJLAAL6zEBaVVOvxeYriVlQkhxLWnUAmvTry5JOmCJ_4qLZW3MIwNAyADJMT6An7DebAxB3WZMmXECVVZDJE-RmFMizo9yL6Ce2idRhGTboEYgm97gZT_w2cBEyi8tbldmVUH6LPVLdqkIhGxgiajb_UQCSa6Y4UAooX7DgmXuwunC2_csEZvF-zmVaiAUnVAh4sbpb7GLtVn3OjCpWJ7YoFjn_yCBcbkEquu9eRXv6KuCMuA2pDVxbdXpGFJQlBDEVP62KX1JB_iSTgOKjyOaGphpfIKFQ1FWKLph34dyOhBhbtF1AyAJeBUoh5QdwRkF0bAVa08aBG8xlFPs7ICyzjlQaCmNSDDb0K3xIELw5vPFp7WzEbuW75E9KlQeOVurAFy37a_zGl=w1464-h824-no" alt=""/></a></figure>



<p class="wp-block-paragraph">The Boudhanath is one of the largest Buddhist stupas Nepal, and it&#8217;s architecture is unlike anything in the city, so it&#8217;s quite prominent.  The prayer flags have five colours, which represent different &#8220;elements&#8221;: earth, water, fire, air, and space.   The elements are also represented as a part of the structure with the base as earth, the dome as water, the square platform as fire, the spire as air, and the umbrella as space. </p>



<figure class="wp-block-image"><a href="https://photos.google.com/share/AF1QipMk4-KxghgwGhJgrnzcvRPgcRwzuCuvoKRW9uXa-flXrS2RpTt6Pb4Wr81FQnw7Yg/photo/AF1QipMVQizsqbE_PRp5DovUKtunac3p2BO15RTNbfRH?key=QThFcnV3WWlCaWJ2eVpkbWMteXVVcE1rR2Y1ZzR3" target="_blank" rel="noreferrer noopener"><img decoding="async" src="https://lh3.googleusercontent.com/5HYPEOtzSwdVNnSFNykdoeJVO5GNKCdO2VEue5m3fy8vpZhkp7ZJO_ZpWJgRv58AwUD6Nr86iT_lgQNWaqPASaW8ZLIWkMEPGREEaK1EpychwO9w-0IZZIcf5_OCzUD6jdn41_eJvTOY4Zacj8a4eOUuAUx7GOmnDyV1_AxrORqO2kyYVmzUiQdyp3KxaFSZL1sk73dNfghHfcfqO_lPewO84KVj9ezFLg9IHaXE4DCLnLnYe9JxitYYk0PviWcyNHviDm8u_bZ9JFtU_pHoKHUMJYr8Vhu-pu6Zn395Auzau-xpKj3ULljj5zkDN5MyMDUF3DdYOt8FV8Le8ry_OKjndM3Q9x1FkJvr0xJyZVN5QOIyvCOAB6jm76fC7eBhJ5kRFOU8WuEDJZM7_gxbxTdVRXUpicWmHb9Fd6vHYB3kLTXgULCvP-EAA5yuvNnx1w1IzxuL-VroxSoaUALkrWN-0vadnZe_VItusM5UCskbdlaFJp-UvEfJ_IJkFqDyg5RaORvlF-mxZl1hy90c6DusDLYnAWzojy7c2VTeljrz_me-wWg3e-Au9DmeHKT7nML7Kzf764C09b5WJF17QeWDOFL782pNHBfdUxN4d2BVXQEwPrxNTgw3MNumVxJthntYpQVM2GR8m3JfmZLk_1LfSbX_P16-Pzfcr6vKevMPtB7WO-s80bcLLdHr8S15Frse38RgTGOEb_z54ILrvnATKGSG65AUrdY4QzbaByFQR4O0=w1464-h824-no" alt=""/></a></figure>



<p class="wp-block-paragraph">The Pashupatinath Temple is situated on the banks of the Bagmati River, and is a Hindu religious place.  Where the fires burning in the picture is the actual place where cremations happen.  Within the area are a collection of different temples, but I wasn&#8217;t allowed to visit them because I&#8217;m not a Hindu.  I never thought I&#8217;d ever be discriminated for my religion (or lack thereof)!</p>



<p class="wp-block-paragraph">See more pictures of my trip to Kathmandu <a href="https://photos.google.com/share/AF1QipMk4-KxghgwGhJgrnzcvRPgcRwzuCuvoKRW9uXa-flXrS2RpTt6Pb4Wr81FQnw7Yg?key=QThFcnV3WWlCaWJ2eVpkbWMteXVVcE1rR2Y1ZzR3" target="_blank" rel="noreferrer noopener" aria-label="here (opens in a new tab)">here</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2019/10/06/kathmandu-nepal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4583</post-id>	</item>
		<item>
		<title>Running League of Legends in PlayOnLinux (Ubuntu 14.04)</title>
		<link>https://blog.henrypoon.com/blog/2015/03/08/running-league-of-legends-in-playonlinux-ubuntu-14-04/</link>
					<comments>https://blog.henrypoon.com/blog/2015/03/08/running-league-of-legends-in-playonlinux-ubuntu-14-04/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Mon, 09 Mar 2015 01:45:11 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[APT]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[Click]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Comment]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[Directory]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Icon]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[league of legends]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Light]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[lol]]></category>
		<category><![CDATA[Nap]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[NVIDIA]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[PATH]]></category>
		<category><![CDATA[Pawn]]></category>
		<category><![CDATA[PlayOnLinux]]></category>
		<category><![CDATA[Radeon HD 5000 Series]]></category>
		<category><![CDATA[Riot Games]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Speed]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[System software]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Video cards]]></category>
		<category><![CDATA[Video gaming]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Volume]]></category>
		<category><![CDATA[WINE]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">https://www.henrypoon.com/blog/?p=2053</guid>

					<description><![CDATA[There are various guides floating around on the Internet for running League of Legends on Linux, and no single guide worked for me, but after piecing the information together from various places, I managed to get it to work on my system. My computer specifications: Intel Core i5-4570 16 GB Memory Radeon HD 5770 I [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">There are various guides floating around on the Internet for running League of Legends on Linux, and no single guide worked for me, but after piecing the information together from various places, I managed to get it to work on my system.</p>



<p class="wp-block-paragraph">My computer specifications:</p>



<ul class="wp-block-list"><li>Intel Core i5-4570</li><li>16 GB Memory</li><li>Radeon HD 5770</li></ul>



<p class="wp-block-paragraph">I followed the instructions <a href="http://askubuntu.com/questions/459888/shop-and-in-game-item-shop-not-working-in-league-of-legend-lol/461256#461256" target="_blank" rel="noopener noreferrer">here</a>, with these changes:</p>



<ul class="wp-block-list"><li>Using video driver &#8220;fglrx-updates&#8221; (the tutorial talks about NVIDIA cards)</li><li>Did not install TuxLoL</li><li>Did not do anything regarding the &#8220;Maestro error&#8221; since it only applies to Optimus Notebook users</li><li>Did not follow step 6 because I did not run into the problem for big item icon text for the item shop</li><li>EDIT: Thanks to Ingvar&#8217;s comment, the installation progress for the game can be viewed like so: open terminal (Ctrl+Alt+T) and execute: </li></ul>



<pre class="wp-block-code"><code lang="bash" class="language-bash">tail -f ~/.PlayOnLinux/wineprefix/LeagueOfLegends/drive_c/Riot\ Games/League\ of\ Legends/Logs/Patcher\ Logs/*.log</code></pre>



<p class="wp-block-paragraph">There are also other steps that I had to do, which I read from <a href="https://www.playonlinux.com/en/app-1135-League_Of_Legends.html" target="_blank" rel="noopener noreferrer">here</a>:</p>



<ul class="wp-block-list"><li>Click configure for the &#8220;League of Legends&#8221; entry in &#8220;PlayOnLinux&#8221; and find the &#8220;Display&#8221; tab and then choose the following options: <ul><li>Direct Draw Renderer &#8211; gdi</li><li>Video memory size &#8211; 4096 (or something else depending on graphics card)</li><li>Offscreen rendering mode &#8211; fbo\0</li><li>Everything else on default </li></ul></li><li>Create a file called &#8220;game.cfg&#8221; in the directory &#8220;/home/your-username-here/PlayOnLinux&#8217;s virtual drives/LeagueOfLegends/drive_c/Riot Games/League of Legends/Config&#8221;. Below is what I have in my &#8220;game.cfg&#8221;:</li></ul>



<pre class="wp-block-code"><code lang="properties" class="language-properties">[General]
EnableAudio=1
GameMouseSpeed=10
UserSetResolution=1
BindSysKeys=0
SnapCameraOnRespawn=0
OSXMouseAcceleration=1
AutoAcquireTarget=0
EnableLightFx=0
WindowMode=0
ShowTurretRangeIndicators=0
PredictMovement=0
WaitForVerticalSync=0
Colors=32
Height=1080
Width=1920
SystemMouseSpeed=0
CfgVersion=5.3.296
x3d_platform=1</code></pre>



<pre class="wp-block-code"><code lang="properties" class="language-properties">[HUD]
CameraLockMode=0
MiddleClickDragScrollEnabled=0
KeyboardScrollSpeed=0.5000
ChatScale=50
ObjectTooltips=0
AutoDisplayTarget=0
ShowAllChannelChat=1
ShowTimestamps=1
ItemShopPrevY=39
ItemShopPrevX=106
NameTagDisplay=1
ShowChampionIndicator=0
ShowSummonerNames=1
ScrollSmoothingEnabled=0
MiddleMouseScrollSpeed=0.5000
MapScrollSpeed=0.5000
ShowAttackRadius=0
NumericCooldownFormat=1
SmartCastOnKeyRelease=0
EnableLineMissileVis=0
FlipMiniMap=1
ItemShopResizeHeight=0
ItemShopResizeWidth=164
ItemShopPrevResizeHeight=1080
ItemShopPrevResizeWidth=1920
ItemShopItemDisplayMode=1
ItemShopStartPane=1</code></pre>



<pre class="wp-block-code"><code lang="properties" class="language-properties">[Performance]
CharacterInking=1
ShadowsEnabled=1
EnableHUDAnimations=0
PerPixelPointLighting=0
EnableParticleOptimizations=0
BudgetOverdrawAverage=0
BudgetSkinnedVertexCount=0
BudgetSkinnedDrawCallCount=0
BudgetTextureUsage=0
BudgetVertexCount=0
BudgetTriangleCount=0
BudgetDrawCallCount=0
EnableGrassSwaying=0
EnableFXAA=0
AdvancedShader=0
FrameCapType=6
GammaEnabled=0
Full3DModeEnabled=0
AutoPerformanceSettings=0
CharacterQuality=4
EffectsQuality=4
EnvironmentQuality=4
ShadowQuality=4
GraphicsSlider=6
paths=0</code></pre>



<pre class="wp-block-code"><code lang="properties" class="language-properties">[FloatingText]
EnemyTrueDamageCritical_Enabled=1
EnemyMagicalDamageCritical_Enabled=1
EnemyPhysicalDamageCritical_Enabled=1
TrueDamageCritical_Enabled=1
MagicalDamageCritical_Enabled=1
PhysicalDamageCritical_Enabled=1
Countdown_Enabled=0
EnemyTrueDamage_Enabled=0
EnemyMagicalDamage_Enabled=0
EnemyPhysicalDamage_Enabled=0
TrueDamage_Enabled=0
MagicalDamage_Enabled=0
PhysicalDamage_Enabled=0
Score_Enabled=0
QuestComplete_Enabled=0
QuestReceived_Enabled=0
Disable_Enabled=0
Level_Enabled=0
Dodge_Enabled=0
Heal_Enabled=0
Special_Enabled=0
Invulnerable_Enabled=0
Debug_Enabled=0
Absorbed_Enabled=0
OMW_Enabled=0
EnemyCritical_Enabled=0
MagicCritical_Enabled=0
Critical_Enabled=0</code></pre>



<pre class="wp-block-code"><code lang="properties" class="language-properties">[Volume]
SfxVolume=0.5
MasterVolume=0.5</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2015/03/08/running-league-of-legends-in-playonlinux-ubuntu-14-04/feed/</wfw:commentRss>
			<slash:comments>27</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2053</post-id>	</item>
		<item>
		<title>Valuable Resource for Learning UnrealScript Game Programming</title>
		<link>https://blog.henrypoon.com/blog/2013/10/06/valuable-resource-for-learning-unrealscript-game-programming/</link>
					<comments>https://blog.henrypoon.com/blog/2013/10/06/valuable-resource-for-learning-unrealscript-game-programming/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Mon, 07 Oct 2013 01:36:23 +0000</pubDate>
				<category><![CDATA[books]]></category>
		<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[APT]]></category>
		<category><![CDATA[Click]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Cookbook]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Epic Games]]></category>
		<category><![CDATA[Essentials of Programming Languages]]></category>
		<category><![CDATA[Game programming]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Languages]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[object oriented programming]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Student]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[UDK]]></category>
		<category><![CDATA[Unreal]]></category>
		<category><![CDATA[Unreal Development Kit]]></category>
		<category><![CDATA[Unreal Engine]]></category>
		<category><![CDATA[UnrealScript]]></category>
		<category><![CDATA[Video game development]]></category>
		<category><![CDATA[Video gaming]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/valuable-resource-for-learning-unrealscript-game-programming</guid>

					<description><![CDATA[About three years ago, I dabbled briefly in programming for the Unreal Engine (AKA the Unreal Development Kit).  As a student at the time, it was my way to get more experience in the coding scene.  The mistake I made at the time was trying to build a project that was way too advanced for [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>About three years ago, I dabbled briefly in programming for the Unreal Engine (AKA the <a href="http://www.unrealengine.com/udk/" target="_blank" rel="noopener">Unreal Development Kit</a>).  As a student at the time, it was my way to get more experience in the coding scene.  The mistake I made at the time was trying to build a project that was way too advanced for my skill level.   I should have learned the basics.</p>
<p>Looking back, I should have used a book like the &#8220;<a href="http://www.packtpub.com/unrealscript-game-programming-cookbook/book" target="_blank" rel="noopener noreferrer">UnrealScript Game Programming Cookbook</a>&#8221; by Dave Voyles.  This book is directed towards audiences who have never touched Unreal programming before.  However, it does require readers to have some familiarity with general object oriented programming knowledge.</p>
<p>This book in particular follows a recipe-based approach for teaching the basics of Unreal programming and covers the core topics in programming for UDK.  The recipes are designed to be basic in order to give learners good exposure without too much of a knowledge dump.  Some may argue that having a recipe-based approach doesn&#8217;t teach people how to synthesize solutions for themselves.  I see recipes as a good stepping stone.</p>
<p>This book is not meant to teach you everything there is to know about UDK, but enough for people to get started with a good foundation to learn off of.  From the book, I would have liked to see more details about the nuances of the UnrealScript language, as well as a more big picture view of how all the different topics illustrated in the book fit together &#8211; perhaps a chapter dedicated to that.  The way it is organized right now is that the big picture is explained, but the explanations are scattered throughout the book.  I am someone who much prefers a more top-down approach on topics like this.</p>
<p>In any case, this book is still a great resource for learning Unreal programming and I would recommend it to people who would like to start their learning adventure in UDK.  Here is a sample chapter of the book for those who are curious in seeing for themselves what this book has to offer (<a href="http://www.packtpub.com/sites/default/files/9781849695565_Chapter_03.pdf?utm_source=packtpub&amp;utm_medium=free&amp;utm_campaign=pdf" target="_blank" rel="noopener noreferrer">here</a>).  For more information about the book, click <a href="http://www.packtpub.com/unrealscript-game-programming-cookbook/book#overview" target="_blank" rel="noopener noreferrer">here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2013/10/06/valuable-resource-for-learning-unrealscript-game-programming/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1769</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>Reflections from MECH 45X Capstone Design Project</title>
		<link>https://blog.henrypoon.com/blog/2012/05/13/reflections-from-mech-45x-capstone-design-project/</link>
					<comments>https://blog.henrypoon.com/blog/2012/05/13/reflections-from-mech-45x-capstone-design-project/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 13 May 2012 22:07:32 +0000</pubDate>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[Brian Welch]]></category>
		<category><![CDATA[Bullet]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Competition]]></category>
		<category><![CDATA[Const]]></category>
		<category><![CDATA[Creative works]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Family]]></category>
		<category><![CDATA[Films]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Guitarists]]></category>
		<category><![CDATA[Health]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Mech]]></category>
		<category><![CDATA[Mecha]]></category>
		<category><![CDATA[Mechanical engineering]]></category>
		<category><![CDATA[Meetings]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Product development]]></category>
		<category><![CDATA[Project and Program Management]]></category>
		<category><![CDATA[Project management]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[rain]]></category>
		<category><![CDATA[RoboCup]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[Scope]]></category>
		<category><![CDATA[Sleep]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Student]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[thunder]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Time management]]></category>
		<category><![CDATA[UNC]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/reflections-from-mech-45x-capstone-design-project</guid>

					<description><![CDATA[Around 8 months ago, myself and three others began to design and build&#160;a robotic object manipulation device for the RoboCup@Home Competition in 2013 that is able to handle a variety of household objects. &#160;My experience in this project taught me aspects to a design project that to be learned by doing. Team Formation I think [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Around 8 months ago, myself and three others began to design and build&nbsp;a robotic object manipulation device for the RoboCup@Home Competition in 2013 that is able to handle a variety of household objects. &nbsp;My experience in this project taught me aspects to a design project that to be learned by doing.</p>
<h1>Team Formation</h1>
<p>I think this is where a lot of students struggle when things go wrong. &nbsp;It&#8217;s always possible to get a teammate that is hard to work with. &nbsp;While it is no fault of either person, the two personalities (either in values, cultural background, style of working, way of thinking, etc.) are different enough to cause disagreements. &nbsp;At times, the disagreements can become so heated that the team&#8217;s progress in the project is hindered.</p>
<p>I realized that there were communication issues among each other in the group, which delayed progress in the early stages of the project.&nbsp; These issues came about in the form of misunderstandings of what people said during team meetings.&nbsp; I found myself in the position where I was expressing my own interpretation of what people said in the hopes that everyone would reach a common understanding.&nbsp; As the project went on, family issues prevented one member from continuing this project further.&nbsp; In a way, this eased our communication problems since communication between three people was a lot easier than between four people, based on what I experienced in the project.&nbsp; Afterward, our team became a lot more efficient and progressed at a faster rate than before.</p>
<p>One of the things that the mechanical engineering curriculum at UBC teaches is team dynamics. &nbsp;After learning a lot of theory as to how to work best with teams, doing projects with other people puts that knowledge to the test. &nbsp;Some people don&#8217;t really manage working with others and feel set in their ways. &nbsp;Differences among people exist and I realize that adjustments in the way I work with them is required in order to promote a healthy functioning group.</p>
<h1>Project Scope</h1>
<p>In retrospect, I would have advocated reducing the project scope since; I feel that the hours we put in were beyond what the course asked for.&nbsp; I estimate that each member put in over 300 hours on the project.&nbsp; Since a large part of this course is about design justification, time is very realistic constraint that can limit project scope. &nbsp;At the same time, there are other courses to worry about. &nbsp;By spending extra time on 45X, less time is available for other courses.</p>
<p>In the beginning of the project, I couldn’t predict well how long things would take. &nbsp;Therefore, time for “messing up” or “unforeseen consequences” should be budgeted for.&nbsp; Many people say things like “I can finish this in about 2 hours”, but in reality, it will take him two days.</p>
<h1>Documentation</h1>
<p>Very often I found myself referring to old dossier documents to find out information that I needed to know. For example, if I forgot how much something cost, I looked back on the dossier to find out.&nbsp; If I forgot one of the project requirements, back to the dossier I looked.&nbsp; At times, it is a bit of a pain to write some sections of the dossier since I couldn’t make sense of the some of the wording.&nbsp; To deal with it, I had to ask the project supervisor during team meetings.</p>
<h1>Project Logistics</h1>
<p>I booked as much machine shop time as we could ahead of time knowing that we would need it.&nbsp; The team would have liked to send in parts for the waterjet or have the technicians work on them, but we were way too late for that.&nbsp; With a simpler project scope, we could have designed our parts faster and could have been further ahead in those manufacturing lineups to decrease the lead time.&nbsp; My teammates and I spent quite a bit of time in the machine shop to get as much as we could ready for the design review.&nbsp; At the same time, I had to look at when ordered parts arrived such that things would arrive in time so that we had everything prepared while building the prototype.</p>
<h1>Time Management</h1>
<p>While doing 45X, I was also working on New Venture Design and Thunderbots at the same time, which also took up a lot of my time.&nbsp; As with design projects, they take up the most time relative to other courses.&nbsp; For me, I had to juggle these three for the entire year.&nbsp; This gave me a lot of stress at times, but it taught me to be more productive.&nbsp; For example, on the way home, I would be responding to e-mails that I received during the day so I would have more time to work on the project when I got home.&nbsp; Since my commute to campus is 1.5 hours just to get to campus (one direction), I had to learn how to make use of this time.</p>
<h1>Project Management</h1>
<p>I took up the role of “project manager” in the beginning of the project and this role showed me a lot of the logistics that had to be considered in a project.&nbsp; Very often I found myself asking for progress on certain tasks and pushing teammates to finish faster.&nbsp; Different issues often came to my head that I had to find an answer for such as “are our parts going to arrive in time for machining” or “do we need to have another meeting with the client”.</p>
<h1>For Future 45X Students</h1>
<p>Don’t wait until the last minute to do something.&nbsp; There is always something that needs to be done in this course from beginning to end.&nbsp; Mech students like to aim high, which is good, but 99% of the time there is not enough time to accomplish the “perfect” design that they always aim for.&nbsp; This leads to a lot of sleepless nights or worse, a prototype that isn’t ready to be handed in.&nbsp; Be ready to bite the bullet and make compromises like cutting features to make work less for the team and to meet deadlines.&nbsp; No design will be “perfect” at the end of the course and this fact, however brutal it may be, must be accepted.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2012/05/13/reflections-from-mech-45x-capstone-design-project/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1449</post-id>	</item>
		<item>
		<title>MECH 45X–Designing the Motor Control Circuit</title>
		<link>https://blog.henrypoon.com/blog/2012/02/21/mech-45x-designing-the-motor-control-circuit/</link>
					<comments>https://blog.henrypoon.com/blog/2012/02/21/mech-45x-designing-the-motor-control-circuit/#respond</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Tue, 21 Feb 2012 08:58:29 +0000</pubDate>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[Actuators]]></category>
		<category><![CDATA[agra]]></category>
		<category><![CDATA[APT]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Brushless DC electric motor]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[DC motor]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[driving]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Electric motors]]></category>
		<category><![CDATA[Electrical engineering]]></category>
		<category><![CDATA[Electromagnetism]]></category>
		<category><![CDATA[Final]]></category>
		<category><![CDATA[Friction]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Maxon Motor]]></category>
		<category><![CDATA[Mech]]></category>
		<category><![CDATA[Mecha]]></category>
		<category><![CDATA[Mechanical engineering]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Paris]]></category>
		<category><![CDATA[Plug]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[rice]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[robots]]></category>
		<category><![CDATA[Rolling]]></category>
		<category><![CDATA[Routing]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Servomotor]]></category>
		<category><![CDATA[Speed]]></category>
		<category><![CDATA[Stall torque]]></category>
		<category><![CDATA[Stepper motor]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[thunder]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Transmission]]></category>
		<category><![CDATA[Truth]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Voltage]]></category>
		<category><![CDATA[Websites]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/mech-45x%e2%80%93designing-the-motor-control-circuit</guid>

					<description><![CDATA[Knowing that two motors will be controlled for the grasper, a control circuit was required to determine how much voltage would be delivered to the motor and when they would be on or off.&#160; Each motor would also require position feedback for determining when to stop the motor actuation.&#160; The following section describes the process [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Knowing that two motors will be controlled for the grasper, a control circuit was required to determine how much voltage would be delivered to the motor and when they would be on or off.&nbsp; Each motor would also require position feedback for determining when to stop the motor actuation.&nbsp; The following section describes the process used for designing this microcontroller based circuit.&nbsp; These sections also show a heavy emphasis on the electrical portion of the design and less of the physical portion.&nbsp; The physical portion of the design can be visualized with the CAD design.</p>



<h1 class="wp-block-heading">1.0 Motors</h1>



<p class="wp-block-paragraph">The chosen motors are:</p>



<ul class="wp-block-list"><li>Finger grasping &#8211; Cytron IG32E-264K at a cost of USD $57.03 from RobotShop</li><li>Finger sliding &#8211; Cytron MO-SPG-30E-20K at a cost of USD $22.58 from RobotShop</li></ul>



<p class="wp-block-paragraph">Both motors meet the torque speed requirements for this project.</p>



<h2 class="wp-block-heading">1.1 Finger Grasping Actuation</h2>



<p class="wp-block-paragraph">From the initial budget, the budget set for actuators was set at $325.&nbsp; The torque requirement needed for gripping was also calculated and each finger would require 4 Nm at its output to lift a 4 kg object using only the fingertips.&nbsp; The evaluation criteria states that the device grasp as fast as possible and that the client would have the highest satisfaction if the device cost was less than $700.</p>



<p class="wp-block-paragraph">Looking on several websites that sold motors, the following DC motor was chosen: Cytron IG32E-264K at a cost of USD $57.03 from RobotShop.&nbsp; The specifications are as follows:</p>



<figure class="wp-block-table"><table><tbody><tr><td>DC voltage</td><td>12 V</td></tr><tr><td>Gear ratio</td><td>264:1</td></tr><tr><td>Stall torque (w/o gearing)</td><td>0.0392 Nm</td></tr><tr><td>No load speed (w/o gearing)</td><td>7300 rpm</td></tr><tr><td>Stall current</td><td>5 A</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">At 12 V with gearing included, the stall torque would be 20.7 Nm (without consideration of mechanical efficiency).&nbsp; A motor with a high stall torque is also beneficial because it lowers the gear ratio required, which leads to the use of less space for gearing.&nbsp; The motor also comes with its gearing, which contributes to its high torque.&nbsp; Given the high stall torque of this motor addition gear reduction is not required.&nbsp; During grasping, the motor will be exerting high torque at low speeds and therefore, the motor will be operating near the stall torque.&nbsp; The torque here is more than sufficient even with mechanical efficiency losses accounted for.</p>



<p class="wp-block-paragraph">For finger actuation before grasping occurs, there is a low load and therefore the motor will be operating closer to the no load speed.&nbsp; The no load speed with gear reduction is 27.7 rpm (without consideration of mechanical efficiency).&nbsp; Split among three output shafts, the speed would be 9.21 rpm.&nbsp; Even with the load of the fingers accounted for, this is still acceptable. based on requirements and evaluation criteria.</p>



<p class="wp-block-paragraph">While the torque is a lot higher than required, this motor was only more expensive than a motor of one size smaller by less than three dollars.&nbsp; The electrical characteristics were also identical.&nbsp; With a higher motor torque, the grasper would be comfortable in lifting objects even heavier than 4 kg, which is another benefit based on the evaluation criteria.</p>



<h2 class="wp-block-heading">1.2 Finger Sliding Actuation</h2>



<p class="wp-block-paragraph">The motor required here does not require a large torque since motion in this degree of freedom is not expected to handle heavy loads.&nbsp; This motor only requires enough torque to overcome the friction of the finger on the power screw that it is mounted on.&nbsp; Therefore, a low-cost motor (relative to the grasping motor) will suffice.&nbsp; The DC motor of choice is the Cytron MO-SPG-30E-20K at a cost of USD $22.58 from RobotShop.</p>



<p class="wp-block-paragraph">The specifications are as follows:</p>



<figure class="wp-block-table"><table><tbody><tr><td>DC voltage</td><td>12 V</td></tr><tr><td>Gear ratio</td><td>20:1</td></tr><tr><td>Rated torque (after gearing)</td><td>78.4 mNm</td></tr><tr><td>Rated speed (after gearing)</td><td>185 rpm</td></tr><tr><td>Rated current</td><td>410 mA</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">The consistency of the stated specifications do not match the previous motor because the information that was provided by the manufacturer was not consistent.</p>



<p class="wp-block-paragraph">An initial estimate of two 200 g fingers sliding on a 1/2” diameter power screw with a steel-steel sliding interface (friction coefficient of 0.8) shows that only 20 mNm of torque is required.&nbsp; Therefore, this motor meets the requirement.&nbsp; The power screw also has 13 threads per inch, and at the rated 185 rpm, the power screw would slide linearly at 6 mm/s.</p>



<h2 class="wp-block-heading">1.3 Motor Type</h2>



<p class="wp-block-paragraph">DC and servo motors are motors that are suitable for the project.&nbsp; An investigation between DC and servo motors showed that many manufacturers of motors did not provide the necessary specifications for choosing a servo motor in terms of the values of the no load, stall torque, and stall current.&nbsp; While servos generate a lot of torque relative to their size when compared to DC motors, it is not feasible to use a servo motor because of the unknowns in the specifications.&nbsp; It is possible to buy several servos and test them, but this is costly and time consuming.&nbsp; At this stage in the project, the team is not able to commit the time to investigate further.</p>



<p class="wp-block-paragraph">Comparison of the cost of the grasping motor relative to motors from Maxon Motor, a supplier of motors for UBC Thunderbots, shows that the price of a motor of the same power output costs approximately the same amount.&nbsp; However, a fundamental difference is that the motor from Maxon does not include a gearbox, while the chosen motor for this project does.</p>



<h1 class="wp-block-heading">2.0 Microcontroller</h1>



<p class="wp-block-paragraph">The microcontroller of choice is the Arduino Diecimila.&nbsp; The primary motivator for using this board is because the UBC Thunderbots team already has this board and is currently unused.&nbsp; The Thunderbots team has generously provided the board for use on this project.</p>



<p class="wp-block-paragraph">The MCU will allow the turning the motors on and off, changing motor direction, changing motor speed, and reading encoder feedback.</p>



<h1 class="wp-block-heading">3.0 Voltage Regulation for Encoders</h1>



<p class="wp-block-paragraph">Since the power supply is likely going to be run at 12 V, the encoders will require voltage regulation down to 5 V (the operating voltage of the encoder for the motors).&nbsp; The chosen voltage regulator is the MC78L05A at a cost of USD from Digikey.&nbsp; According to the typical application diagram of the datasheet, two capacitors will also be required (0.33 μF and 0.1 μF).&nbsp; The cost of these are less than $1.</p>



<p class="wp-block-paragraph">The voltage regulator will be wired up in this way as the datasheet shows:</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2012/02/image.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/02/image_thumb.png?w=1280&#038;ssl=1" alt="image" title="image"/></a></figure>
</div>


<p class="wp-block-paragraph">The input will be from the 12 V source, and the output will be to the encoders.</p>



<h1 class="wp-block-heading">4.0 Motor Driver</h1>



<p class="wp-block-paragraph">To control the motors, an H-Bridge is to be used.&nbsp; However, due to the different current flows for each motor, one motor driver will require a high current capacity while the other one will not.&nbsp; The high current capacity motor driver consists of a driving circuit using two half-bridges.&nbsp; The low current capacity motor driver is made up of 1 IC.</p>



<h1 class="wp-block-heading">4.1 Finger Grasping Motor Driver</h1>



<p class="wp-block-paragraph">To design the H-Bridge for controlling the motor, an L6205 motor driver will be used.&nbsp; Each of them costs USD $11.36 from Digikey and can withstand a continuous current of 2.8 A and a peak current of 5.8 A and can be interfaced with the microcontroller with PWM inputs.&nbsp; The driver can also be run in a parallel mode to double the current ratings by using both of its full bridges together.&nbsp; The datasheet provides an application circuit as follows:</p>


<div class="wp-block-image">
<figure class="aligncenter is-resized"><a href="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2012/02/image1.png?ssl=1" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" fetchpriority="high" decoding="async" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2012/02/image_thumb1.png?resize=600%2C138&#038;ssl=1" alt="image" width="600" height="138" title="image"/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter"><a href="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2012/02/image2.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/02/image_thumb2.png?w=1280&#038;ssl=1" alt="image" title="image"/></a></figure>
</div>


<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Output pins from the Arduino can turn the motor on and off through the enable pins.&nbsp; Direction is controlled by adjusting the voltage polarity between IN1 and IN2.</p>



<p class="wp-block-paragraph">There are also two output pins for current sensing.&nbsp; By using it to measure the current draw, the microcontroller program can determine what the torque is through the use of the motor curves provided in the motor specifications.</p>



<h1 class="wp-block-heading">4.2 Finger Sliding Motor Driver</h1>



<p class="wp-block-paragraph">The motor driver of choice is the L293D and each one costs $2.50 from Digikey.  Bidirectional control of a DC motor can be achieved by adapting the application circuit from the datasheet:<a href="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2012/02/image3.png?ssl=1" target="_blank" rel="noreferrer noopener"><img data-recalc-dims="1" decoding="async" title="image" width="278" height="220" border="0" style="background-image: none; padding-left: 0; padding-right: 0; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0; border-width: 0;" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2012/02/image_thumb3.png?resize=278%2C220&#038;ssl=1" alt="image"></a></p>



<p class="wp-block-paragraph">The 1A and 2A pins determine the direction of the motor or the motor deceleration.&nbsp; A truth table is provided in the datasheet.</p>



<h1 class="wp-block-heading">5.0 Power Supply</h1>



<p class="wp-block-paragraph">To power the grasper, a power supply plugged into the wall will be used.&nbsp; It is expected that the future robot will have a power source of its own which will power the hand as well.&nbsp; Therefore, for the purposes of testing the grasper for this project only a wall power supply will be required.</p>



<p class="wp-block-paragraph">Looking at the maximum electrical power consumption of the two motors, the total comes to ~65 W (12 V * 5 A + 12 V * 0.41 A).&nbsp; The other components also consume power and so the final power consumption will be higher.&nbsp; To compensate, a 12 V power supply with a maximum wattage and current of 84 W and 7 A was selected.&nbsp; The part number is CENB1090 and each costs USD $70.48 from Digikey.</p>



<h1 class="wp-block-heading">6.0 Power Supply Connector</h1>



<p class="wp-block-paragraph">The power supply chosen has one port that uses a Molex Mini-Fit Jr. Receptacle.&nbsp; Therefore, a proper receptacle must be used so that proper wire routing can power all the circuitry.&nbsp; This also means that the future robot will also require a matching plug for this receptacle.</p>



<h1 class="wp-block-heading">7.0 Fuses</h1>



<p class="wp-block-paragraph">Fuses will also be used as a redundant mechanism to stop the motor in case the current draw is too high.&nbsp; The primary method of stopping the motor is through the current sense pins on the motor driver.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2012/02/21/mech-45x-designing-the-motor-control-circuit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1346</post-id>	</item>
		<item>
		<title>Hamburg</title>
		<link>https://blog.henrypoon.com/blog/2011/07/25/hamburg/</link>
					<comments>https://blog.henrypoon.com/blog/2011/07/25/hamburg/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Mon, 25 Jul 2011 20:54:13 +0000</pubDate>
				<category><![CDATA[europe]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[Amsterdam]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[beach]]></category>
		<category><![CDATA[Beef]]></category>
		<category><![CDATA[beer]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[cheese]]></category>
		<category><![CDATA[Cities in Europe]]></category>
		<category><![CDATA[Cities in Germany]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Comment]]></category>
		<category><![CDATA[Const]]></category>
		<category><![CDATA[Construction]]></category>
		<category><![CDATA[Countries]]></category>
		<category><![CDATA[Cuisine]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[dog]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[driving]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Euro]]></category>
		<category><![CDATA[Europe]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Expressionist architecture]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[fish]]></category>
		<category><![CDATA[Force]]></category>
		<category><![CDATA[Frankfurt]]></category>
		<category><![CDATA[German]]></category>
		<category><![CDATA[German cuisine]]></category>
		<category><![CDATA[German food]]></category>
		<category><![CDATA[Germany]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Hamburg]]></category>
		<category><![CDATA[herring]]></category>
		<category><![CDATA[Hole]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[In Germany]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Lag]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Light]]></category>
		<category><![CDATA[Meadowbrook Country Club]]></category>
		<category><![CDATA[Meat]]></category>
		<category><![CDATA[Mech]]></category>
		<category><![CDATA[Mecha]]></category>
		<category><![CDATA[Mercedes-Benz]]></category>
		<category><![CDATA[Mind]]></category>
		<category><![CDATA[Munich]]></category>
		<category><![CDATA[Nap]]></category>
		<category><![CDATA[Napoleonic Wars]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Nomenclature of Territorial Units for Statistics]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[old town]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Page]]></category>
		<category><![CDATA[Pho]]></category>
		<category><![CDATA[Pilgrimage]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Potato]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[rain]]></category>
		<category><![CDATA[Renault]]></category>
		<category><![CDATA[rice]]></category>
		<category><![CDATA[rotterdam]]></category>
		<category><![CDATA[Safe]]></category>
		<category><![CDATA[Ships]]></category>
		<category><![CDATA[Shopping]]></category>
		<category><![CDATA[Sleep]]></category>
		<category><![CDATA[Solar panel]]></category>
		<category><![CDATA[Speed]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Stuttgart]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Transmission]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[tuna]]></category>
		<category><![CDATA[UNC]]></category>
		<category><![CDATA[Urge]]></category>
		<category><![CDATA[Vienna]]></category>
		<category><![CDATA[villa]]></category>
		<category><![CDATA[village]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Voltage]]></category>
		<category><![CDATA[When We]]></category>
		<category><![CDATA[Wiki]]></category>
		<category><![CDATA[wind turbines]]></category>
		<category><![CDATA[WINE]]></category>
		<category><![CDATA[World War I]]></category>
		<category><![CDATA[World War II]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/hamburg</guid>

					<description><![CDATA[Day 194 As one of the largest port cities in Europe, we got a chance to go to Hamburg to see its beauty.&#160; We went there by car and saw much of the historical part of the city as well as took a ferry ride along the coast of the Elbe River and walked along [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Day 194</p>



<p class="wp-block-paragraph">As one of the largest port cities in Europe, we got a chance to go to Hamburg to see its beauty.&nbsp; We went there by car and saw much of the historical part of the city as well as took a ferry ride along the coast of the Elbe River and walked along the city&#8217;s canals.&nbsp; The weather was pretty much raining for the whole time we were there.&nbsp; As my friend put it, “when you go to Hamburg, plan for rain”.</p>



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



<p class="wp-block-paragraph">We left work at around noon to pick up our rental car.&nbsp; It took us a bit longer than we expected because we had to go grocery shopping so we could have lunch and dinner in the car on the way there for our 6 hour drive (or so we thought).&nbsp; The drive ended up taking 8 hours because of a stau (traffic jam).</p>



<p class="wp-block-paragraph">The car we got from the rental company was a Mercedes-Benz C220.&nbsp; When we got into the car, it smelled like new and being in such a new car for a road trip was undoubtedly awesome. We only got this car because it was the cheapest car with automatic transmission available.&nbsp; I guess the Renault that we got last time was booked for today.&nbsp; I wish that I got the chance to drive it though.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipNhW7CcjkDf3f89MS3XvQRjccUZ9vFmw1Gk25qz?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEW458IXCrRssxPBPhTpP0F3UCTB82i5HDmvqF6Wgx-852cBm0kRstTaUk3KqGaedFiWMOEnJtiZzujevitEyK0jnpMjoPcKESn4atZSjKhykmg64FPw19nGDOXHcSBpppUt8ejUFZfEJEGb7xDQZac3Ow=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">On the way there, we got to see a lot of the German countryside (as anyone typically does when going from one major city to another).&nbsp; On the grass plains and knolls, we saw countless villages, farms, vineyards, and the like.&nbsp; We even saw farms of wind turbines and solar panels.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipMoQKXezs-x6O265bbo11OEx9vtSsc8q8FR5axk?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWh_2DmTX4FUuhwN-0tKWk3SG5HOmz4IrhVBXObaxaCv7X08D79IwMptpMK2jgLuFdXK1WBoLROiEg7CwvcIFf2loPMycsMyqtjJwJa_MWlCDJtXz6CKVTDkwgGnwxS4QxT_0EbEqrX1I1bH88qBqLmag=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipNMRDiyrsT3J6oQ6IwTWWuTGcCHP2Bjl5HEcN70?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEU9pjxpPrXM8TW1pqXKeWD4Zfgl_eGdDKFBxTIasqK_x1FWk2F4CYGF8HuYAWbwfcqgTcGo6alw8yOU_aL-h9Z6wV5Jo1t6LkpRX9j9_AjgvRAjUGw79vv882JaIm4THuUF4oB83IMJlOIMAFjOHmemyA=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">After a few hours of driving, we stopped a few times.&nbsp; We stopped at a rest area and at this middle-of-nowhere village.&nbsp; The GPS guided us off the highway and into this village just to avoid the traffic jam.&nbsp; For the first third of the trip, I sat in the front while three of my friends had to squish together in the back.&nbsp; When it was my turn to sit in the back, I didn’t really feel the discomfort while I was reading on my friend’s Kindle.&nbsp; I ended up going through about 90 pages of Band of Brothers.&nbsp; Maybe the book was so interesting that I just completely zoned out of the real world for a little bit.</p>



<p class="wp-block-paragraph">We reached our hostel at around 9 at night and parked the car.&nbsp; After moving our stuff into our room, we began our sightseeing tour of Hamburg.</p>



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



<p class="wp-block-paragraph">Our first destination was the Reeperbahn street.&nbsp; Similar to Amsterdam, this area is one of the most famous red light districts in the world.&nbsp; The whole area was full of sex shops, strip clubs, and brothels.&nbsp; On the street corner, many women wearing fanny packs kept trying to approach tourists and we figured that these women were all prostitutes (that stuff is legal in Germany).</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipMQEKMXVN3UjhPW-6FkyQJk5Mez_d1ADxzzse-S?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXJDsILo0hW35nC8vl7eMw7jdrZdAYMetQIEY4gvpX_5EMKixvN6ftIPacEaLZ0B2RqNS2YgYBL9HFoEbthXs5S0KWBAO4Nh8CrS3NbJCwbJqQSIMBc3eZUnhdftB9btijNCGJSMxmvVnvQbm0n9Z85xQ=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipON6rjFLP5Y9dToGP0M489njZknqLUhs5M_IQrr?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVI_QP0VCz1jhGBROP22Rrz-vPRqc6N65pxhHkQRpGQD14Lo0oF9Bypm6ytys4Wz8ICF8Ykr4bCTrGfWPj92SBdW0naugolw9Rij067DWTyVsvKlfPkC68gL3JNfN1DscBgv6CS4EBFeRlK1taSpxBFkw=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">One of the more peculiar things was that there was a church that stood pretty much in the core of the whole area.&nbsp; Really convenient for people to go to confess their sins I guess.</p>



<p class="wp-block-paragraph">We meant to find a bar here for a drink, but pretty much all of the places reeked with pungent cigarette smoke or was way too loud.&nbsp; Two of my biggest pet peeves in one place.&nbsp; We ended up just going back to the hostel instead.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipN9dSLTd-1coBT0YRR4GzQSqGUzd-vqkH_l2h7c?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUuNFYsSbOsE2I-rMDFnXJFbjP2PBva3SrkL6COhWKaIZ_biCTbx45O4SdBBvk_hxWgl3dmHR8Vtgu6ESdIsUjMfNSSruSdWNVUb1xfDetINax01VLRMJ8oIf0AR-iWT3nnT_XElSHSD7V6Mc0U3H4m_w=w690-h919-no" alt=""/></a></figure>
</div>


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



<p class="wp-block-paragraph">In order to keep up my “try-as-much-kinds-of-beer-as-possible mentality”, I tried a type of beer called Astra Urtyp.&nbsp; It tasted horrible – too much of hops flavour.&nbsp; Some of the others drank a few more beers and got tequila shots before heading out again.&nbsp; As usual, I went to sleep.&nbsp; The next morning, I found that they returned at around 5:30 in the morning.</p>



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



<p class="wp-block-paragraph">At around 11, on a cloudy day with a large and persistent ocean breeze (it was super cold even with my jacket on), we showed up at the meeting point for the walking tour – a Starbucks.&nbsp; This tour company receives some sort of sponsorship from them.&nbsp; Our tour guide, didn’t look like a German, and when he spoke, a clear Northern USA accent came about – apparently, he had been living in Germany for some time.&nbsp; He led us to the first destination of the tour – the Rathaus (city hall).</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPMJW5EWyV8Nc8PVIdAwQcWBE3RNU9HpX86uZRX?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWnDOJjtb8GfmVSEzaTkBOzZ98B-HPe922LwvmG9oL01RcKSiGJKdGJlsNJZ2WZ06UYdGpSfTrcci8yDxPDXXERk8VlgsRbyboktyX18mgLLKy7d6nR1X2_2YjUyYspjsq4vUmy0RiOyAJMSbmg9Pt3Og=w690-h919-no" alt=""/></a></figure>
</div>


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



<p class="wp-block-paragraph">Located by the Alster River, this rathaus replaced the old one that was destroyed in the fire of 1842.&nbsp; This building looked quite similar in form to other city halls, like the one in Munich and Vienna, with a clock tower-like structure that extended directly above the main entrance.&nbsp; Right above the gate of the main entrance, the Hamburgers proudly displayed their coat of arms that depicted the old fortress of Hammaburg (where the city got its name) that used to exist in the area before its destruction by the Vikings.&nbsp; Once more this coat of arms was displayed on the clock tower of the rathaus, just beneath a large antiquated mechanical clock.&nbsp; Statues of German Kaisers decorated the side of the building as each one stood in a line just beneath the rooftop.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPH55FiyxGNG0zwGj2PNKHsJGXsvu-DSk0GRYT3?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEX2VU6XSwcSeOkLwR7S3zei6V6JXOR_ZWVHg7ez6SLlv39gF2c88voVQH5vXOW_yhBN-ommnrnvfUGSMDNO-iDrlBSlTDNjkr8u3wLUTmPoLp9l_SRyKIXu5IJNVG2OXMLYlLeKy0ocbCIBaa6rjM-WxA=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipOc_C1pIB8FkuDajJe25O8g_otmnE08JePAatLR?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXG_r3qwPY5VDvSC2QD3mwhYi84KSg2Tnh6o8GiRY5pcWX_vvsZAQpVTdSugHJVOkDBJuw7Q69GvE-mT97WiuWrU1gZcicbY9i-DptqDmHRN64o0ShwyrwepqKTcGgvsYbRmwsyCPo-ISK7ET3AQ8DHSQ=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">In front of the building was a giant courtyard and during World War II, a bomb landed here, but didn’t explode.&nbsp; If it had, the rathaus would have been badly damaged.&nbsp; The bomb was defused and the timing mechanism removed from the bomb is now on display in the rathaus.&nbsp; In the courtyard, the Hamburgers held the Stuttgart Wine Festival, which apparently coincided with the Hamburg Fish Market in Stuttgart.&nbsp; Here, people set up tents selling South German cuisine – the kind of German food that I’m always used to eating.&nbsp;</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipNlgS_0M-u6_wgM1FmHrWh83Yg7wEHej_fevaul?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXggoP0cLXS9lkPfMulkGHdNkPL8eDkCln_q7hRn1bVrFRZLnRLfc2YNc4m9qn7dbpCmYOxBLXWW8QWdGloDPQBgKFJHuv2CjZAJWGMkiGua1P-OIU2KULtwYjFMVhjBLN8TPzoDlJjUMDOSmfvY5hIyA=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">Along the Alster River stood a giant stone plaque engraved with a message saying that 40000 sons of the city gave their life for us all.&nbsp; Everyday, people going to the rathaus are reminded of the tragedy that befell the country.&nbsp; Beside it, swans, ducks and other birds frolicked about and went on with their day to day lives.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipMtom4CL5KHJ4Mt1e2Zrs9VjQW-9L-My_0j6Jb5?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXR9XpRUsR5wxqqi-_k3clzuwRDLc_ABiMxihhoYLYjlqXVUyL0P7xQXRYrR8AujY3zpX8-CUbD8aPQ2aSXKYMQcdFVQvwIqOSlhu2-eTsNeSpi4ZP4IJK_EUEbuBj7JWQhErebefr8WfAuh_Z-PIYBeQ=w690-h919-no" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipNbGA7tViKJOoxDDfM8JLwY-ivW9KY0AbLBh8uq?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUE8LcpOlt64Ha6IrhqNK8SSXPZxweTcEhuXFOGsEBRKOY6iiQr4H5ONqty7f-AiNjZTRMOzDdx0AKwYZEQ6AG8hctxg8fd3HStuiAnOgRQedTPjF-M6gqQ3AmBEjfcAnOWQBaMyJqP2eID3Ddqtdc2oQ=w690-h919-no" alt=""/></a></figure>
</div>


<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipN_oMp0cPHzHu-A2yYlJ6tWfpluAaZoErQmhEkK?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEViafqQn_rEgu1UZB6AF9U69N-e4ys2Hy75K4TrB2MD_9RtApSeUUf4Yj3gzraE2EwXrvvOrCPRuUTavMwm-XSwNCJ3fWe_AU1VsEy_w-LRC0rD3c1pJJ5Y2eBEVpYy2F04BecXl0Un14EJmJPKNcNuIg=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipNh9wf-ihwWF0eloSrjrnmg2RBXtPJZPqmMqYbH?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXPqcH2KyHRsI1oGV3iLRawUKkH_dJygseXZciHE_suzKB0ZRzRRxoRegsDGuxkPVJmaQMQUAXBcVXdvUwGg_Bx0-24sMvG3zTVgEaTCIbu1XR6zuXQxYKdI1jp9DE8KMsp9CrYnLYPQl4nn_lvn2_RMA=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">Buildings on the other side of the river formed a canal much like in Amsterdam.&nbsp; Canals could be seen throughout much of the city and in fact, the city holds the world record for having the most amount of bridges.&nbsp; At first I thought Amsterdam’s 900 bridges was a lot, but apparently Hamburg has around 2300.</p>



<h1 class="wp-block-heading">St. Peter’s Church</h1>



<p class="wp-block-paragraph">Although, not so significant as a work of architecture, many believe this place to be the site of where the old Hammaburg fortress once existed.&nbsp; When we stood at the entrance of this church, the tour guide said, “welcome to the highest point of Hamburg!”&nbsp; I looked around and just saw a gentle slope and nothing more.&nbsp; I guess Hamburg must not have any mountains!&nbsp;</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipP_C94JL9422Na2N4fZ0H0IsXQN0k1FWmpr9JQD?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXBHaLt9P6WkIVKIhaAC4Z5TgABblnL-0ngOktkzxejeJgnp9SmhCZduECq6EmB402cQWE3EHeVoQk1_c-sn_FUdyUS_TBMNwWx1hWT5JAS7zG7oOlDtr58ewJe21MSGBQIPRsmHNbMy3Pq2CW5G5t_XQ=w690-h919-no" alt=""/></a></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipM0y0oNBwj9tY9eXX6R0W00nmlaaFbLBJkXUziR?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVJyQrblxWmvJnRHovIBeF_qqYP_MOOeR3WbfZN0f3SP_2OMsWJO9Ri-TMIhM8LPkgWBIhv_-0aHIHBWdzuay1Hj7a_4BwLPiMPFJlWYQh3mnRtcaEiWtPSb5QmgygUBmy1zMP1EJry9dPTAsmzd326bw=w690-h919-no" alt=""/></a></figure>
</div>


<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPJQk9mpqykTMS3_kHH0TYtjEtNTT_ANPWN-hWy?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWY2P4KEYwmlaOzpmcCMI5XAArIN2OTp52lKnml6zM3jWIEHgjmtXFdMpFU-h1HJ7SqrzUUhPmH_Re9VlvMDlUjhfkXZiS9MRIpgRhqESX0etiENL_6amWpx8w9WO86tyKXp41n6gENQrnL1vLyVTHz9A=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipNkVPN4p8HYSdeJk__SZ4MAjvkTimmLA3eHGeTY?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEV9iE0xDVW8JVtjFQijjnPT5kLF5EKWCWpHvXhWaMPBmpeQSrl3gb6zy8pE4H0fwNca1GeCAbeUHiVjD4IdcWWJTqTUmCsQYyOhpM9xLUWLFvqUswpX-kIeKIVVaobGm_c5euMnVqvWN922svSGzyUniA=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">Besides being a church, this building once served as a stables for Napoleon’s forces.&nbsp; Not long after the Napoleonic Wars, the church was destroyed in the fire of 1842.&nbsp; Despite the fire, much of the art in the building was saved including the lion shaped door knocker – the oldest artifact in the city.&nbsp; At the back of the church, vegetation grew along the brick walls over the years and not far beside it, a wooden sign stood with directions to various places for pilgrimages.</p>



<h1 class="wp-block-heading">Expressionist Architecture</h1>



<p class="wp-block-paragraph">During the height of Hamburg’s power in sea trade, many firms set up offices in the city.&nbsp; Many of these firms had buildings resembling the architecture style of the expressionists – elements of the building’s exterior would reflect the purpose of the building.&nbsp; For example, in one of the accounting houses for sea trade, one could see elements of the building protruding from its side in the shape of a caravel or an anchor.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPjNvceYcqv2qlyqE1IuCC-r3dH0uwbuBu8LTNC?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVZ7Zxt3ZU8benJoVIKnZtvn5T40UjaYA3KShmQ6I8HmpYR__D_JFmYuXNw-LmNKAAHKXyJtlM-wrFVYmjsNDobgkST5Mw3KhAPxguUOkXWr92avTHbBe9hLzNCqfvCrcuHClju7hcj4TH4QosigGbZsA=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipOx8a0sQB9nWTNB0CvWANoqWYolErydyI8203gA?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWCRlZOMagD2qd2jXRLjVC5r847nOtoaJXkBCixuiIoLXoGlhlqq0YGLxw4ebaEEa8833LKcHv7H9PxTwmSooBAVUnWCY_qyd3COUhCOVCRStWi1cSQPfYVhDPq6yhppDyCAO5XO46Ei0qhCZ8RT5oX1Q=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">In another building, known as the Chilehaus, held the shape of a ship and above the front entrance, there were various objects representing the country of Chile.&nbsp; Similarly, in the Afrikahaus, there was a giant statue of a tribesman wielding a spear and behind the statue on the gate, was a sculpture of a plant indigenous to Africa.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipOGPZGvKXHqZLL1TJ81xB0KiVZq6_u4fZc5LSwq?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEU9hWYAolZBQsX-mqlMxnpJS7bPTtKSH5Wtf57Mu_iwU_w49uZK_likzGUv-I-sMp-fBrIt5nFWzC068KpRCSCL6BGeF-vpnGuv3_q4YYupqYBUGBOuRfDhLjTUzPCkirx5patFzPzBYT9dJfyI-n85QQ=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipOXCf7-nZdKd4DbeUwA_KYZ8sXFd7WVynSE-qGp?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWdOOOgjoSL-Fi18ycAMkxeIueqS8ACph0gzMQz7p-ezuhquq727nQBGf_riqeYGJfM6AcVO3mxO7R6ZxCZIu6Ygp5fqGuI6C1RHG3GTNS3UiF-aOlpGJAdm1JrK3Q1k7OTLxRTAifb_RodFkrEBOtpPw=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">We also visited the Patriotische Gesellschaft (no idea what that is in English), but this building too had examples of the expressionist art.&nbsp; Statues of caravels and Poseidon stood on the roof.</p>



<h1 class="wp-block-heading">World War II Stuff</h1>



<p class="wp-block-paragraph">While on the tour, the guide pointed out a plaque on the side of a building and on it was information saying that the building was once the location of the firm that manufactured the Zyklon B gas that killed millions of people in the death camps.&nbsp; This plaque used to be located at the main entrance of the building, but the building owners and people working there did not want a daily reminder of those atrocities.&nbsp; To counteract this, they used a different entrance as the main one instead.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipNwzMuwrOCWq3fRyyG0inGe5D80FWcwVVRMLceu?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXDcf-OLwpVB_k2Fd3RK51WUgixLiBan38nVhNyrQ4DbrgyJzaaUdRjoJ2pZNBacSlk4XvZxbNKx4HNeqdrGyco18X0b_KPWbTkjDOm5_ZEngCSyHlAp0cY4Q1cnPXLuvcj6CTQKaSNWRkn8EOId82uPA=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipN6OoeLbvlBcbrENthPoluYX67XsQOQdDiorTzX?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUSFrNVGaq9Ai-KtXcRxrNWkK0DOqUkYO4z5UtZsMK7yJZHNsIeUS0ZD05JuhmT2Lv8AsOtwhtBRxgrZ8bXgECBAp_8ut2iavPJS9IioN18Lgyc80TK4PrqS_y6SGFW5yfzUjHhK_JGcHslWM9XxYKXeg=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPgn4mciSTZpRAniZmyf0VHcPDH-RJviRqVECs2?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEU-0QJjjYWIB8dFx8788ubUmb9WBY67E0tlm5sbKYVR-QVO_dbiIw_7vAqy9Lp1-d7ZRofgpKJMhE5C0MhH4VHvJnMFoazU2yurTOXglkOC5qUxd3eFbUUK5n4pLAT1QtU8AsVz21WJEha0a25UEZl5VA=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipMOncZcN6VE6YXUM66HliPG_jjtfBN6zY_-iqUK?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXIDfuPpzUmbukZgo670RHUE4zq0Xyk821QtuFx9sTp1Zp02aDdJ298iao_8KhBHFMFlHlVTYz3HuEg1q9GZ-RhKfLpVb3xAM3HBnmPbVXw0UMl-VWWd4YvShrR08twklfE4U5zYdgxJWvfOYqKMPkt9Q=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">Another destination, the Church of Saint Nicholas was one of the many buildings destroyed during the instead bombing raids on Hamburg.&nbsp; The church did not get a complete repair after the war, but instead it now stands as a memorial – another reminder of the devastation of World War II.</p>



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



<p class="wp-block-paragraph">Located near a large network of canals, this area of the city is the oldest part of Hamburg.&nbsp; Undoubtedly, this area was filled with old architecture and complete with the cobblestone roads that are so prevalent in Europe.&nbsp; The building style also resembled a lot of 18th and 19th century architecture.&nbsp;</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipNDAtuzuXU8sZqjNtjBT7w7CuXnxEOYNtKc51rT?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXuqTYe7PVlYgFppe4AGS-IAzPf7c4de0b5Vx8HClih8e17onTDkvIPcF5Oi9NTWTaRCnHnqwkX18-C2Xg5m7Vsv03BOvP5FtYlySGOlPHlZrEtFV_lyKzQQcnRY-YirMwk2yFyRXXoWH0iBd8kg21UXQ=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipNtKS9wtJFHrAwZI7fo0t9qJqMqraAL_336idlR?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUpfqggoxBghpz1hGFsfSiAZyEwmCT3eD_NfVWWv4mL7d9jgm9wc-qmtFWGBlgjGfj60HS5tJmduCQoU920plU4yTAkyu7XPdsUQNZ0hCYU9DtxhGBHEmlHpppsohSBRjdukne0P4zAz0d4SW4ZfLtlHQ=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPmzJbKX6q4lQoE3l2y8PCbxe5yYpJnrufSyiHS?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVeBbNRGuGpoytY1N3UR50jQGc0Dvr-9YknEPQqGCrasMjq1unN-0_x-EID52pP2CZD4Rgn7hZLzM2AyYO9Zf_Gslh3ErLg1yCW4j3Gj_kVtNVXBVzDzUZE3mOK7rKeb0dZ8zu2o07MaarLh1s4PMfJqw=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPOLvXho07jgKWXwekwdjuRUa3TvF3kbbYS42AL?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUHsYHbKeTIVAHX3aGVMPEocRZ_BVSSG_zwaeUruM4ITBIl7dPD5YB5YV2qCRHG6uFUj8n_hhS7U1j9ZCcBYLALE08J8XYpaj5FGDw9Pv87jYvNM05q4pAWNffEakH74mAUpqXt7ZABUxg1ZM_vMVq7fA=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">There would have been more buildings in this area, but through several fires and bombings, much of it was destroyed.&nbsp; In fact, one of the buildings here was where the fire of 1842 started.&nbsp; It must have been reconstructed since then.</p>



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



<p class="wp-block-paragraph">Literally translated, the title means a “city of warehouses”, which indeed is what the area was for – storing cargo.&nbsp; Back in the day, this area used to be where the Hamburgers traded without having to deal with customs tariffs.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipM5Kf_cdtLx3ZsSMfd2kA4Rmhu6VPpuOIdAn_Hk?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVSkK_4jtX0y-VETkxDckEk2LtTo2H4UoVJHpP_0LY2OcKldOddTfW8hnbNu_bofmyfVuYT0oCSkVlNDLT5lDi3ZyCxdG1vrBrorXvKOTz_sfhVwzMHPwyRNELOPOUh0FcD00pj2ubRAq_1wAP_ZdZX7Q=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipM1058CeL5vLgTSZcH8egjzmeOHSDcKTPZQ1-I8?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVWlegBzgTKPdddV_dBNcYIrd0n_XFbIuMGt3iMObqp8mLlpx32p9V60xMHn1xXeBy7XrULhmTHDjvUxAixIT0ZHyJMAhcVjbasvh_Nwi1fZi9yFSwBkPfz2p3D3HpaRcWAhVhHkKEbIWFUTkG9S9mdyQ=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">As the size of cargo ships got larger, these buildings began to be obsoleted as many of these cargo ships could not fit in the narrow city canals.</p>



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



<p class="wp-block-paragraph">Probably the most modern part of the city, this district serves as a playground for architects.&nbsp; Much of the buildings here don’t follow any sort of mainstream design ideas – lots of buildings here looked really bizarre.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipOn8QWb5XBmgkbIB_G9K_iTbMwhT1htzqLDoJMk?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXs1jrziX4-2qqodh5H8AnmbTE77hS3AwebREc-Mi3PjmyYxcswC-apn9NL2yfiuB5xnIn4ZgbVpe1ltHJc2JqyDp6xH8vAyTY4WnWyz4caMRDaz75NyHVqFLUQ1jCeijFmY0bhE3dWhZDkhEvTZHuJxA=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipNgBBOxwRRBrZtwY0hG_yyrxrcXZqNV3-5RRA4q?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWrrGL7IBVJKodCYvvGJEDSUxxTyq6h_NPcNVXCKtxM_4g_zmTTaqO6uIMdwCjz605y-CF3mEIxqAhfPWZEOWtd1m8g1XWdZ3M_0TsP7leZV6WWEP5NK2bpRBQ4duef4MU_IFNMEIYhbzQl0SDbMqlN9w=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">One building to note though, is the concert house under construction.&nbsp; It has the shape of ocean waves to represent the city’s rich history of sea trade.&nbsp; Originally budgeted for 100 million euros, due to construction delays and other unfortunate events, the cost of the building is now nearing 500 million euros.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipP0DfNpcx8CHTJnlUD6eGT_L6GqX1aDwFh5FOhG?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUNzMwt0HWQ_VXvBmMQ5miHstM0TlINYb2ebKmNL_SYQ8JoNHQJsPK6e5qfZiZcyoZNEoawWuPgp96iH1M-C9nxibbkW_vO7hR5WaGrMXiXPuI4uuAXP9D8x85IrnIJDGbXXGLDmFdKMvztdkhRGbHwqQ=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">Before this area became popular, the city had trouble getting people to move here, so they rented out flats here for as low as 500 euros a month, but now people can’t rent a flat here for anything less than 3000 euros a month.</p>



<h1 class="wp-block-heading">Shopping and Food</h1>



<p class="wp-block-paragraph">After our tour, some of my friends couldn’t stand the freezing ocean wind anymore and decided they had to go buy a hoodie.&nbsp; The wind was so strong that the clouds weren’t just floating across anymore.&nbsp; There was like a wind speed of about 20 km/h.&nbsp; We walked around the old town and found an H&amp;M.&nbsp; I looked around inside and to my surprise, I found that the prices at this H&amp;M seemed to be a lot higher than Stuttgart.&nbsp; Otherwise, I most probably would have bought something there.</p>



<p class="wp-block-paragraph">Later on, we went back to the old part of Hamburg for traditional Hamburg cuisine.&nbsp; We entered a restaurant that had a theme of sailing.&nbsp; The wall had on display some schematics and black and white photos of various types of ships.&nbsp; The color scheme of the place even coincided with the stereotypical blue and white colour combination of sailors. We went to eat at around 3, so it was kind of empty at the time.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipMCiHn3yrEUfXGlkjltvnB5SIfSXSQT2RhU4Oy1?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVnpS0AiT3CEjZwrzO0Lyxp269fOEf78y0g0hCbGtS_p9Q4s1dz1qrGwqkogItWf5JzroGu0QkTrObyzUxhiQA0XbkOFNvWNfY13WbqDamN9MVcfvYSX2e5DvhWrqFsanacmOqVCq4hCNQs2tv87N48SA=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipMhnZ5DbKALOUoqvwiEylOMUfb6J6VU6V_jtCmO?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXMn3XW1scxBXLFQszXrtqxdw-R0-YErIXy8W4assWhK8Tmc9FE2gp7SOacCLKA7iEeVIyMOaIXzm8KIoMoWH5TZxdvd-4IYpGxQAx2vQ6IIWvKmnPjEic9cnyWDvyPIDH2_xhXr8mkERn5LOz1uO3DOA=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">The food I tried here was Labskaus – a dish typically served in Northern Germany and according to Wiki, “the main ingredients are salted meat or corned beef, potatoes, and onion. Some – non-traditional – recipes put beetroot, pickled gherkin, or even herring into it.”&nbsp; Mine was served with beetroot and pickled herring, which was typical of the Hamburg style.</p>



<h1 class="wp-block-heading">Hamburg Hafen</h1>



<p class="wp-block-paragraph">After our meal, we went to the harbour for a ferry ride along the Elbe River.&nbsp; The ferry drove along the coastline and gave us a really good view of the city.&nbsp; We rode the ferry from HafenCity all the way to the beach near the Elbtunnel.&nbsp; In addition to the city scape, we even saw a docked submarine and a cruise ship about to begin its journey.&nbsp; The travellers on the ship happened to be doing their lifeboat safety drill as we passed by so the people on the two ships happily waved to each other.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipOyARiQ4lRYWqHcoQ9UEh5Ve6ik-NbwHm2ev-7v?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEXKfFt256bj2RKraQWrA2AE0icqis2pbRsRR_AlpQ212rQkOFkrnBSu_1t6QLQ9kDogiqlX3Y0F6l8oYX8USobcqElo-QR10g_SS9vyiwe06P_3SuS8DFA3IAe4J-bVyegO8S8r-7rSNB9UXam_DkFKLQ=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPrig5ootGQB9TcxO3i2h3iuuOG9p9QxFEYA3Ae?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWTRiBjrVW8ND-LchOjzrtpy2X6eAf4yxfg0XcjKN4p5WkkhGklZT058918hupgSlwQm09BM5StlBoD4zFOLrDamshJxQA-4C6OiJNq0LfIZUgMN37mOVeRpBiOc-TY2UZud_81UKmiwVQe-kScu7NHXw=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipOxfhMwbyfjh3wfmEsoLxMZ8kT_I9SQJZLhllcq?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUK6KZGVL8N8LgN_dSfIGZpmDrILvkFQrNc6Tyc5Iiht9u5RtbO-SUCm_YyqCDxsnfqXQutjOWwdCn9Jfd6mBg3xhS6OwitH4lnQV6dFOtCHju6lnNEbEO3MVwPqhN3szGAprEDezqNE2aax9yc1fd1pw=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipMUwVrNCkNKWZsiDkXAoUhQAUXQGCzmnym_sx4j?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUoLCpYlFkl__LWhe0kgrPGFYPCneO_8aU7q-Jd46k3OemMoDoUAyNDc-x23QrpnbK5fWxQjQbJadYssCleqhjqjqzpFqW-sDi_VuXM6eWeEYpXGM9-q3pvJOMW1yGCOOLxzjCAv-mcnX7IraB5j_ziKQ=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">The ocean wind we felt on the ship was so strong that I probably needed a winter coat to keep warm.&nbsp; The wind even caused the waves to be strong enough such that water splashed onto the deck of the boat and onto everyone standing on it.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPSPtu-Ll8hF71usiDkBnvNCfBCRgrdKZre5PFn?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUlGeG4JzQSKrGCIXunX8albjdDL5Zoy8-xrih-j2yymDvE0-pVqyWoCVxxBmsYGiZt1Ug53_kcu--3L-BSYScd4I1o6ptT32fUaZarQJVdKLQFVD6w-KFoPQbsFjXiBQ0xQfV-ythBrPqo2nFqzOa0XQ=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipN4QYCGFE7ZDeidHG8AE_UgZbYZ6C-62NIwxUTx?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWypNhC58p1biJ7kOcV1lgMEWFS7Zr5bea-Icq_sqqWB1lLTAHRY7hhJwp-TFWj9W_TpVnhpCWtADoiAal8HOKWLGTc1inCWbwaUkALn7rAE_vnqs9DJ90DQIM53XWBn2tJEXWxVE4BExw4Z3fuVIU1ZA=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">On the other side of the river, miles of cranes lined up the shore, ready to unload any cargo on ships that docked.&nbsp; What we were seeing was the second largest port in Europe, the largest being the one in Rotterdam.</p>



<h1 class="wp-block-heading">Bar District</h1>



<p class="wp-block-paragraph">Supposedly, this area is known as the bar district (at least that’s what we called it).&nbsp; Despite its name though, there was a really tight concentration of bars here, but the cost of beer was even more than Stuttgart.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipOsJ9YBSH6hf4LxUITxukQgjOVgM7W9Uountpqn?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWIrEWxOuB89N14Zr6WN_Baoq14C3cDrdZ2vGHZxSmOklsHIUUH-uQSEuuIz982oJLiUTOXEUfr2uwg9aGxukpbbtWVgCo0PAnGYb1Ijtl0iH47V7596vrMfHgxLA-4NzKn55uCuxeaDnHVlB-qgXZKQA=w1226-h919-no" alt="" width="840" height="630"/></a></figure>



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



<p class="wp-block-paragraph">At the bar/restaurant, I ordered an apple strudel to help combat my hunger from walking around all day instead of going for beer like everyone else did (although I did have a little bit).&nbsp; The apple strudel I got wasn’t that expensive and it looked and tasted amazing.</p>



<h1 class="wp-block-heading">Fish Market</h1>



<p class="wp-block-paragraph">The next morning, we went to the fish market – Hamburg is famous for it.&nbsp; However, we got there a little late, so by the time we got there, a lot of the places were closing down.&nbsp; As a last ditch attempt to sell more stuff, a lot of shops there started giving people really good deals on food like selling a whole box of fruit for only 1 euro.&nbsp; I would have bought it if I could eat all of that.&nbsp; A pile of garbage behind all these people went to show how much food they sold that day.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPWh7OYjkCEUQ69-NoZtfKXLXjv16LCNHuvYCSG?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVSf6jYLcyY0E5oqROXp6I8lBFuczBmDJ-rlLZ3IXpu5pzQD1xilboV1H-ToQygSQA17eREiHvsJnIaFFk3LEZJpskhVwCDNmKr6sNvLVyCOP1pRUcFLR-v0KrbHMnt5srtl662MOymbna9BGCHgNsFBg=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPQbR6u1uoNPCsFkkRZeo5433eQtNPyS2ATymVJ?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUfp1GUbSvpEPIk5cwvaehcDwT8a4bh0H1qQoM49XC9zLBY3k0Ey9qLEVnF4cGNCvIX2QXiLKugh0mlFJeGii7hU3C1EQ3w_rl4_9NVOcfdSJPvIPwUlp84h0WcYzO-vHvZl6-lX5TC-UHdtfR_RFdJ1g=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">Although the market by named says “fish”, people sold all sorts of things in addition to fish.&nbsp; Many sold bread, cheese, and various types of meat.&nbsp; I wondered if I’d see something similar to the <a href="https://henrypoon.wordpress.com/2011/07/18/the-hamburg-fish-market-and-the-german-wurst-man/" target="_blank" rel="noopener noreferrer">wurst man</a> I saw a while back, but I didn’t.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipOtHSzyxEBzxbQDuHsTfKjgwV8BN15rbf82AdlI?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEV8FxfAGnGTYwwJnZtcARvNgJD5ngHqUnYnYrXhguYT32OJ9Vm_8n6kBhqIAdPB4RgTdIF3jgWfy-wVWIyv_xzLiD8PXFM7p4EiZTNdFKakvKGDgCp9dMmbg7cDzameXWWZwoMStaOE86RxPpFSMhVB3A=w1226-h919-no" alt=""/></a></figure>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipM-eQANNsFcjiKndsLyz7KJlPRWxHXsBXppZbtg?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEV3kbHbrUuedIKuV2b2LcgnHvxWuB9NClMHaVVvMCZNc7qxzklltog5_xG0MhDTBS4W5ipiW_Wf3-i2ygQQc8sqWZvAudeJUFLdpan1f3rLHOnyR36i2j6XZsk3u_tqfb9yN3ngWm00F1ioqhJGaewgkA=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">The market even had an indoor beer garden with a live band playing.&nbsp; It was quite a nice place.&nbsp; If only we were there early enough.</p>



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



<p class="wp-block-paragraph">As I probably should have known, I could not resist the urge to drive.&nbsp; I ended up taking the wheel for about half an hour and managed to get the Benz up to 200 km/h.&nbsp; While driving at that speed though, the steering wheel was really shaky.&nbsp; I felt that if the car ran over a pebble or something like that, the car would just plunge into the side of the road.&nbsp; If it wasn’t for that, I would have reached the car’s top speed.</p>



<p class="wp-block-paragraph">Before I started driving though, we stopped at a rest area.&nbsp; When we took a good look at the back seat of the car and noticed a giant mess of crumbs from all our snacking during the trip.&nbsp; I don’t think I had any to do with that since I never considered myself to be a messy eater.&nbsp; Just as we finished commenting about the messiness of the car, one of my friends had apparently stepped on dog poop and got it in the car.&nbsp; It smelled horrible.&nbsp; He even got it onto another friend’s pants.&nbsp; He cleaned it up right away, but a faint smell of the poop lingered in the car for the rest of the journey.&nbsp; It’s a shame that the car rental company gave us a car smelling like new just so we’d give it back with a bad smell.</p>



<figure class="wp-block-image size-large"><a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q/photo/AF1QipPWTZrJW3BeoGoOd_pUAK5NfrPAdMtMdWL1PLQN?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noopener noreferrer"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWWNlYE5AaPnplSHWPO9hnBG5ppHhGmDVKOuhHmTvsBnxYZM1_LwIthiuOzHH1LmQj17uw0g4PNSCHHOZZYNWpf_z0cjjkYnB8OtKlmMrg_uEi4DRECFlvzIVnZO_Nd62HW6ZzQihrsZd30W0QwggukSA=w1226-h919-no" alt=""/></a></figure>



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



<p class="wp-block-paragraph">In another rest area near Frankfurt, we stopped for a bite to eat and went up to the observation tower there to look at the Frankfurt skyline.  That was a nice sight except for the giant high voltage line that blocked part of the view.  By then we were already pretty much 3/4 of the way home.  I continued reading Band of Brothers on the Kindle and managed to get through about 65% of the book in total.  We got back into Stuttgart at around 7:30 in the evening, returned the car, and went home.</p>



<p class="wp-block-paragraph">More photos <a href="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" data-type="URL" data-id="https://photos.google.com/share/AF1QipN_XqGejb5vvVv2MiWG5elKVJTJVW5hz0boeCFvx-JltwU5VsXTGF54FYfO_pT73Q?key=cF95ZFFrZHZjMDlMcFcxMjloTFJJQm1fZ054VXhn" target="_blank" rel="noreferrer noopener">here</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2011/07/25/hamburg/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1144</post-id>	</item>
		<item>
		<title>Serial Communication in Java with Example Program</title>
		<link>https://blog.henrypoon.com/blog/2011/01/01/serial-communication-in-java-with-example-program/</link>
					<comments>https://blog.henrypoon.com/blog/2011/01/01/serial-communication-in-java-with-example-program/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 02 Jan 2011 01:46:37 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[All That]]></category>
		<category><![CDATA[APT]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Comment]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Computer languages]]></category>
		<category><![CDATA[Const]]></category>
		<category><![CDATA[Cookbook]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Data types]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Final]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Flag]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Hole]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[Introduction]]></category>
		<category><![CDATA[IOS]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lag]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Object-oriented programming languages]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Page]]></category>
		<category><![CDATA[Parameter]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Programming languages]]></category>
		<category><![CDATA[RAR]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Rolling]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Serial]]></category>
		<category><![CDATA[Serial communication]]></category>
		<category><![CDATA[Software design patterns]]></category>
		<category><![CDATA[Software engineering]]></category>
		<category><![CDATA[Speed]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Swing]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[UNC]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[Variable]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Wiki]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress.com]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[XBee]]></category>
		<category><![CDATA[Z]]></category>
		<category><![CDATA[Zip]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/serial-communication-in-java-with-example-program</guid>

					<description><![CDATA[This is more of a follow-up to my previous post about serial programming in Java (here) and how to install the RXTX libraries (here).&#160; This post also assumes that Java is already properly set up with RXTX. Generally, communication with serial ports involves these steps (in no particular order): Searching for serial ports Connecting to [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">This is more of a follow-up to my previous post about serial programming in Java (<a title="Java Serial&nbsp;Programming" href="http://henrypoon.wordpress.com/2010/10/11/java-serial-programming/" target="_blank" rel="noopener">here</a>) and how to install the RXTX libraries (<a title="Installing RXTX for Serial Communication with&nbsp;Java" href="http://henrypoon.wordpress.com/2010/12/25/installing-rxtx-for-serial-communication-with-java/" target="_blank" rel="noopener">here</a>).&nbsp; This post also assumes that Java is already properly set up with RXTX.</p>



<p class="wp-block-paragraph">Generally, communication with serial ports involves these steps (in no particular order):</p>



<ul class="wp-block-list"><li>Searching for serial ports</li><li>Connecting to the serial port</li><li>Starting the input output streams</li><li>Adding an event listener to listen for incoming data</li><li>Disconnecting from the serial port</li><li>Sending Data</li><li>Receiving Data</li></ul>



<p class="wp-block-paragraph">I wrote an example program that includes all of those steps in it and are each in their own separate method within the class, but first I will go through my hardware set up.</p>



<h1 class="wp-block-heading">Hardware Setup</h1>



<p class="wp-block-paragraph">My current hardware setup is as follows:</p>



<ul class="wp-block-list"><li>PC connected to an XBee</li><li>Arduino connected to an XBee</li></ul>



<p class="wp-block-paragraph">User input is given from the PC through the a Java GUI that contains code for serial communication, which is the code presented here.</p>



<p class="wp-block-paragraph">The Arduino is responsible for reading this data.&nbsp; This set up is pretty much using my computer as a remote control for whatever device is on the Arduino end.&nbsp; It could be a motor control, on-off switch, etc.</p>



<h1 class="wp-block-heading">Existing Code</h1>



<p class="wp-block-paragraph">The purpose of this post is to discuss serial programming in Java, and not GUI’s.&nbsp; However, I did create a GUI for testing purposes.&nbsp; See the Code Downloads section for the actual files.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" width="300" height="136" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2011/03/javagui.png?resize=300%2C136&#038;ssl=1" alt="" class="wp-image-933" srcset="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2011/03/javagui.png?resize=300%2C136&amp;ssl=1 300w, https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2011/03/javagui.png?w=640&amp;ssl=1 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure>
</div>


<p class="wp-block-paragraph">Above is the picture of the GUI complete with the buttons that I use to interact with the program.&nbsp; I also added key bindings which I can use to control the throttle.</p>



<p class="wp-block-paragraph">When the program is first started, none of the GUI elements will work except for the combo box and the connect button.&nbsp; Once a successful connection is made the controls are enabled.&nbsp; This is done through the use of the <em>setConnected(true)</em> and the <em>toggleControls()</em> methods shown in the example code that follows.</p>



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



<p class="wp-block-paragraph">The imports i used for this program were as follows:</p>



<pre class="wp-block-code"><code lang="java" class="language-java">import gnu.io.*;
import java.awt.Color;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.TooManyListenersException;</code></pre>



<p class="wp-block-paragraph">Depending on the Java IDE it might already know to tell you to use these imports except for the first one.&nbsp; That first import is specific to RXTX, and all its library methods/classes are in there.</p>



<h1 class="wp-block-heading">Class Declaration</h1>



<p class="wp-block-paragraph">The code here reads:</p>



<pre class="wp-block-code"><code lang="java" class="language-java">public class Communicator implements SerialPortEventListener</code></pre>



<p class="wp-block-paragraph">I named my class <em>Communicator</em>, but the name is really up to the programmer.&nbsp; The name pretty much reflects its intended use.</p>



<p class="wp-block-paragraph">The class should also <em>implement</em> the <em>SerialPortEventListener</em> class.&nbsp; This is a class in RXTX and is required in order to receive incoming data.</p>



<p class="wp-block-paragraph">On some IDE’s this may generate a public void method called <em>serialEvent()</em>.&nbsp; This method will be defined later.</p>



<h1 class="wp-block-heading">Class Variables and Constants</h1>



<p class="wp-block-paragraph">Below are the variables and constants that I defined in my class.&nbsp; What the variables are for is in the comments but a more detailed explanation will follow.</p>



<pre class="wp-block-code"><code lang="java" class="language-java">    //passed from main GUI
    GUI window = null;

    //for containing the ports that will be found
    private Enumeration ports = null;
    //map the port names to CommPortIdentifiers
    private HashMap portMap = new HashMap();

    //this is the object that contains the opened port
    private CommPortIdentifier selectedPortIdentifier = null;</code></pre>



<p class="wp-block-paragraph">I could have easily put the variable definitions in the constructor but it wouldn’t change anything.</p>



<p class="wp-block-paragraph">The <em>GUI</em> object is another class that I wrote separate from this one that contains all the GUI elements.&nbsp; The GUI class extends <em>javax.swing.JFrame</em>.</p>



<p class="wp-block-paragraph">The <em>HashMap</em> is for mapping each of the ports’ names to the actual object. What that means is that I can associate (<em>put()</em> method) the name of a serial port, say a string that says COM1, to an object in the code.&nbsp; Later, I can access the name COM1 from the <em>HashMap</em> by using the <em>get()</em> method and it will return the object that it was associated with previously.</p>



<p class="wp-block-paragraph">The <em>CommPortIdentifiers</em> object is needed to gather the list of ports that are available for connection. by using its <em>getPortIdentifiers()</em> method.</p>



<p class="wp-block-paragraph">The <em>SerialPort</em> object is for storing the data for the port once a successful connection is made.</p>



<p class="wp-block-paragraph">The <em>InputStream</em> and <em>OutputStream</em> is the object that is required for sending and receiving data.</p>



<p class="wp-block-paragraph">The Boolean variable <em>bConnected</em> is just a flag that I use for enabling and disabling elements on the GUI.</p>



<p class="wp-block-paragraph">The constant <em>TIMEOUT</em> is a number required when opening the port so that it knows how long to try for before stopping.</p>



<p class="wp-block-paragraph">The constants for the ASCII values are some values that I use to send through the output stream that act as delimiters for data.</p>



<p class="wp-block-paragraph">The string <em>logText</em> is basically what the comment says.&nbsp; When stuff happens in the program, the program stores a string in this variable and it will be appended to a text area in the GUI.</p>



<h1 class="wp-block-heading">Searching for Available Serial Ports</h1>



<p class="wp-block-paragraph">The method below is for searching for available serial ports on the computer.&nbsp; Code adapted from Discovering Available Comm Ports from the Reference Material.</p>



<pre class="wp-block-code"><code lang="java" class="language-java">    //search for all the serial ports
    //pre style="font-size: 11px;": none
    //post: adds all the found ports to a combo box on the GUI
    void searchForPorts()
    {
        ports = CommPortIdentifier.getPortIdentifiers();

        &lt;span style="color: blue;"&gt;while (ports.hasMoreElements())
        {
            CommPortIdentifier curPort = (CommPortIdentifier)ports.nextElement();

            //get only serial ports
            &lt;span style="color: blue;"&gt;if (curPort.getPortType() == CommPortIdentifier.PORT_SERIAL)
            {
                window.cboxPorts.addItem(curPort.getName());
                portMap.put(curPort.getName(), curPort);
            }
        }
    }</code></pre>



<p class="wp-block-paragraph">The method <em>getPortIdentifiers()</em> returns an Enumeration of all the comm ports on the computer.&nbsp; The code can iterate through each element inside the Enumeration and determine whether or not it is a serial port.&nbsp; The method <em>getPortType()</em> can identify what kind of port it is.&nbsp; If it is a serial port, then the code will add its name to a combo box in the GUI (so that users can pick what port to connect to).&nbsp; The serial port that is found should also be mapped to the HashMap so we can identify the object later.&nbsp; This is helpful because the names listed in the combo box are the actual names of the object (COM1, COM2, etc), and so we can use these names to identify the actual object they are tied to.</p>



<h1 class="wp-block-heading">Connecting to the Serial Port</h1>



<p class="wp-block-paragraph">The method below is for connecting to the serial port once they have been found (see previous section).&nbsp; See How to Open A Serial Port in the Reference Material for more information.</p>



<pre class="wp-block-code"><code lang="java" class="language-java">
    //connect to the selected port in the combo box
    //ports are already found by using the searchForPorts
    //method
    //post: the connected comm port is stored in commPort, otherwise,
    //an exception is generated
    public void connect()
    {
        String selectedPort = (String)window.cboxPorts.getSelectedItem();
        selectedPortIdentifier = (CommPortIdentifier)portMap.get(selectedPort);

        CommPort commPort = null;

        try
        {
            //the method below returns an object of type CommPort
            commPort = selectedPortIdentifier.open("TigerControlPanel", TIMEOUT);
            //the CommPort object can be casted to a SerialPort object
            serialPort = (SerialPort)commPort;

            //for controlling GUI elements
            setConnected(true);

            //logging
            logText = selectedPort + " opened successfully.";
            window.txtLog.setForeground(Color.black);
            window.txtLog.append(logText + "n");

            //CODE ON SETTING BAUD RATE ETC OMITTED
            //XBEE PAIR ASSUMED TO HAVE SAME SETTINGS ALREADY

            //enables the controls on the GUI if a successful connection is made
            window.keybindingController.toggleControls();
        }
        catch (PortInUseException e)
        {
            logText = selectedPort + " is in use. (" + e.toString() + ")";

            window.txtLog.setForeground(Color.RED);
            window.txtLog.append(logText + "n");
        }
        catch (Exception e)
        {
            logText = "Failed to open " + selectedPort + "(" + e.toString() + ")";
            window.txtLog.append(logText + "n");
            window.txtLog.setForeground(Color.RED);
        }
    }</code></pre>



<p class="wp-block-paragraph">Using the <em>HashMap</em> we can retrieve the <em>CommPortIdentifier</em> object from the string that was mapped earlier.&nbsp; This is achieved through the <em>HashMap’s</em> <em>get()</em> method.&nbsp; The object must also be casted as a <em>CommPortIdentifier</em> because the <em>get()</em> method has a return type of <em>Object</em>.</p>



<p class="wp-block-paragraph">The <em>setConnected </em>method just changes a boolean flag so that the program can store whether or not it is connected to a serial port or not.</p>



<p class="wp-block-paragraph">The <em>CommPort</em> must also be initialized because the port object will be stored here once a successful connection is made.</p>



<p class="wp-block-paragraph">The main method of interest here is the <em>open()</em> method.&nbsp; This instructs the program to open the port, and this method will return the object for the opened port, which I store in in the previously initialized <em>CommPort </em>object.&nbsp; I then cast this object as a <em>SerialPort</em> and store it as well.&nbsp; This is helpful for accessing the methods and variables specific to the <em>SerialPort</em> class.</p>



<p class="wp-block-paragraph">It should also be noted that the <em>open()</em> method requires the use of a try-catch block.&nbsp; So applying that, I catch two different exceptions.&nbsp; The <em>PortInUseException</em> is what the name says.&nbsp; If the port is in use, then this exception is thrown.&nbsp; The next catch block is just for the generic exceptions that occur.&nbsp; I never came across that during testing, nor do I know how to replicate that.</p>



<p class="wp-block-paragraph">I neglected to include any code for setting the baud rate and other settings on the XBee’s (see Hardware Configuration), because I already set those parameters previously using X-CTU (more on setting up XBee’s here).</p>



<h1 class="wp-block-heading">Initializing the Input and Output Streams</h1>



<p class="wp-block-paragraph">This method is pretty short and is pretty straightforward to read.</p>



<pre class="wp-block-code"><code lang="java" class="language-java">    //open the input and output streams
    //pre style="font-size: 11px;": an open port
    //post: initialized input and output streams for use to communicate data
    public boolean initIOStream()
    {
        //return value for whether opening the streams is successful or not
        boolean successful = false;

        try {
            //
            input = serialPort.getInputStream();
            output = serialPort.getOutputStream();
            writeData(0, 0);

            successful = true;
            return successful;
        }
        catch (IOException e) {
            logText = "I/O Streams failed to open. (" + e.toString() + ")";
            window.txtLog.setForeground(Color.red);
            window.txtLog.append(logText + "n");
            return successful;
        }
    }</code></pre>



<p class="wp-block-paragraph">The streams are initialized by returning the input and output streams of the open serial port.&nbsp; In order for the serial port object to not be null, it must store the object for the open serial port.</p>



<p class="wp-block-paragraph">The <em>getInputStream()</em> and <em>getOutputStream()</em> methods both require a try-catch block.&nbsp; The important exception to catch here is the <em>IOException</em> to signify whether the streams failed to open or not.&nbsp; For more information see How to Open A Serial Port in the Reference Material.</p>



<p class="wp-block-paragraph">I also call a method called <em>writeData(0, 0)</em>.&nbsp; This is the method that encapsulates the code required to write serial data.&nbsp; More on that later.&nbsp; Right now it is just used to set variables on the microcontroller side to zero.</p>



<h1 class="wp-block-heading">Setting Up Event Listeners to Read Data</h1>



<p class="wp-block-paragraph">Once the port is open, the serial port must know whenever there is data to be read.&nbsp; This approach is event driven rather than by polling.&nbsp; When the event is hit, a special block of code will run.&nbsp; This is advantageous to polling because polling requires constantly asking if data is available.&nbsp; The code for the event driven approach is below.&nbsp; See Event Based Two Way Communication for more information.</p>



<pre class="wp-block-code"><code lang="java" class="language-java">    //starts the event listener that knows whenever data is available to be read
    //pre style="font-size: 11px;": an open serial port
    //post: an event listener for the serial port that knows when data is received
    public void initListener()
    {
        try
        {
            serialPort.addEventListener(this);
            serialPort.notifyOnDataAvailable(true);
        }
        catch (TooManyListenersException e)
        {
            logText = "Too many listeners. (" + e.toString() + ")";
            window.txtLog.setForeground(Color.red);
            window.txtLog.append(logText + "n");
        }
    }</code></pre>



<p class="wp-block-paragraph">The code here is pretty much the whole reason why this class implements <em>SerialPortEventListener</em>.&nbsp; The parameter for adding the event listener is just the object itself.&nbsp; The base class has a method called <em>serialEvent(event)</em> that should be overridden before the event code will work.&nbsp; Overriding that method defines what happens when the event is hit.</p>



<p class="wp-block-paragraph">The method <em>addEventListener(this)</em> is the event that is always checking for <em>SerialEvents</em>.&nbsp; It isn’t really important to know what the events actually are, just that the one we’re interested in is the one that tells us whenever data is received.&nbsp; Adding the event listener is complemented by the method <em>notifyOnDataAvailable(true)</em>, which definitely helps us achieve what I mentioned previously.</p>



<p class="wp-block-paragraph">This code requires a try-catch box.&nbsp; The exception here is that there may be too many event listeners.&nbsp; I only use one in the code, so this exception should never be hit.</p>



<h1 class="wp-block-heading">Disconnecting from the Serial Port</h1>



<p class="wp-block-paragraph">Once all the communication is completed, the serial port must be disconnected.&nbsp; In some instances, some ports stay stuck open, which isn’t exactly a good thing.</p>



<pre class="wp-block-code"><code lang="java" class="language-java">    //disconnect the serial port
    //pre style="font-size: 11px;": an open serial port
    //post: closed serial port
    public void disconnect()
    {
        //close the serial port
        try
        {
            writeData(0, 0);

            serialPort.removeEventListener();
            serialPort.close();
            input.close();
            output.close();
            setConnected(false);
            window.keybindingController.toggleControls();

            logText = "Disconnected.";
            window.txtLog.setForeground(Color.red);
            window.txtLog.append(logText + "n");
        }
        catch (Exception e)
        {
            logText = "Failed to close " + serialPort.getName()
                              + "(" + e.toString() + ")";
            window.txtLog.setForeground(Color.red);
            window.txtLog.append(logText + "n");
        }
    }</code></pre>



<p class="wp-block-paragraph">The code here requires a try-catch block so there it is.&nbsp; The exception to catch here is pretty generic.</p>



<p class="wp-block-paragraph">Before closing the port, I reset the data on the microcontroller.&nbsp; That step is optional depending on the application.&nbsp; For example, if the value sent to the microcontroller is controlling the speed of a motor, I’d want the motor to turn off if I turn off the remote control.</p>



<p class="wp-block-paragraph">The event listener should be removed as it is no longer needed.</p>



<p class="wp-block-paragraph">The method to close the port is the <em>close()</em> method.</p>



<p class="wp-block-paragraph">The input and output streams should also be closed via the same method as above.</p>



<p class="wp-block-paragraph">See How to Close A Serial Port in the Reference section for more information.</p>



<h1 class="wp-block-heading">Reading Data – The <em>serialEvent</em> Method</h1>



<p class="wp-block-paragraph">This is a follow-up to the section on preparing to Read Data.&nbsp; It has information on how to process the data that the program reads.</p>



<pre class="wp-block-code"><code lang="java" class="language-java">    //what happens when data is received
    //pre style="font-size: 11px;": serial event is triggered
    //post: processing on the data it reads
    public void serialEvent(SerialPortEvent evt) {
        if (evt.getEventType() == SerialPortEvent.DATA_AVAILABLE)
        {
            try
            {
                byte singleData = (byte)input.read();

                if (singleData != NEW_LINE_ASCII)
                {
                    logText = new String(new byte[] {singleData});
                    window.txtLog.append(logText);
                }
                else
                {
                    window.txtLog.append("n");
                }
            }
            catch (Exception e)
            {
                logText = "Failed to read data. (" + e.toString() + ")";
                window.txtLog.setForeground(Color.red);
                window.txtLog.append(logText + "n");
            }
        }
    }</code></pre>



<p class="wp-block-paragraph">Since we only want to read data if it exists, we test the condition in the if statement above.&nbsp; This could be redundant because we wouldn’t be in this method if the event never got triggered.</p>



<p class="wp-block-paragraph">Reading the data requires a try-catch block.&nbsp; The <em>read()</em> method returns an integer, but the value in it is actually a byte value so this is casted to a byte, in which I store in a variable called <em>singleData</em>.&nbsp; When I was testing this code before, I noticed that the data being read would always have random new line characters in it, and I never knew why this happened.&nbsp; I never wrote any new line characters.&nbsp; Since I don’t want these, I add an if condition saying that if it encounters that, don’t display that data on the screen.</p>



<p class="wp-block-paragraph">Java also has a nice way of converting bytes to a string.  A byte array can be used as a parameter when initializing a string, which is what I’ve done when I assign a value to <em>logText</em>.</p>



<p class="wp-block-paragraph">The exception here is just the usual generic one.</p>



<h1 class="wp-block-heading">Writing Data</h1>



<p class="wp-block-paragraph">Here is the method for writing data.&nbsp; In my application, I am writing two integers sequentially to my microcontroller.&nbsp; Data that is sent to the MCU can be used for such things such as controlling motor speeds, which is what I am trying to do here.&nbsp; I hope to use the data sent do control the PWM duty cycle of the motor for speed control.</p>



<pre class="wp-block-code"><code lang="java" class="language-java">    //method that can be called to send data
    //pre style="font-size: 11px;": open serial port
    //post: data sent to the other device
    public void writeData(int leftThrottle, int rightThrottle)
    {
        try
        {
            output.write(leftThrottle);
            output.flush();
            //this is a delimiter for the data
            output.write(DASH_ASCII);
            output.flush();

            output.write(rightThrottle);
            output.flush();
            //will be read as a byte so it is a space key
            output.write(SPACE_ASCII);
            output.flush();
        }
        catch (Exception e)
        {
            logText = "Failed to write data. (" + e.toString() + ")";
            window.txtLog.setForeground(Color.red);
            window.txtLog.append(logText + "n");
        }
    }</code></pre>



<p class="wp-block-paragraph">The <em>write() </em>method here requires a try-catch block just like many of the other methods used for serial communication.&nbsp; Using the output stream, I call that method to write an integer value.&nbsp; I also write a dash and a space to separate the actual data being read.&nbsp; See the ASCII Table for the values of what these characters should be.&nbsp; This helps me differentiate the sets of data that is sent back and forth.&nbsp; The dash separates the two integers being sent and the space separates the entire set.&nbsp; On the Arduino end, four called to <em>read()</em> can separate the data without mixing things up.&nbsp; Example of that later.</p>



<h1 class="wp-block-heading">Putting All the Java Code Together</h1>



<p class="wp-block-paragraph">Once all these methods are setup, they need to be called somewhere in the program so we can put them to use.&nbsp; When the program starts, the code for searching for serial ports will run so that it can populate the combo box on the GUI.&nbsp; The GUI buttons also need to be disabled to reflect the fact they should be disabled when there is no connection to a port.&nbsp; When the connect button is pressed, the input and output streams are started and the event listener is added.&nbsp; The code for that is shown below.</p>



<pre class="wp-block-code"><code lang="java" class="language-java">        private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) {
            communicator.connect();
            if (communicator.getConnected() == true)
            {
                if (communicator.initIOStream() == true)
                {
                    communicator.initListener();
                }
            }
        }</code></pre>



<p class="wp-block-paragraph">The if statement is needed such that the code will not run if a successful connection was not made.&nbsp; This is the precondition for the <em>initIOStream() </em>and the <em>initLIstener() </em>methods.</p>



<p class="wp-block-paragraph">When the user decides to disconnect from the serial port, the user only needs to call the <em>disconnect()</em> method when the disconnect button is pressed.</p>



<p class="wp-block-paragraph">The up/down arrows on my GUI are set to write data to the serial port when they are pressed.&nbsp; When data is written to the Arduino, the MCU will send the data back to the Java program, which will signal the event listener to display that data back to the screen.</p>



<h1 class="wp-block-heading">Arduino Code</h1>



<p class="wp-block-paragraph">The Arduino code is pretty straight forward.&nbsp; There are just a few calls to the <em>read()</em> method.</p>



<p class="wp-block-paragraph">Update 6 May 2012: the syntax for the Arduino code has updated since the writing of this article. &nbsp;Apparently, the lines</p>



<pre class="wp-block-code"><code lang="c" class="language-c">Serial.print(separator, BYTE);
Serial.print(space, BYTE);</code></pre>



<p class="wp-block-paragraph">are no longer valid and have since been replaced by the following:</p>



<pre class="wp-block-code"><code lang="c" class="language-c">Serial.write(byte(separator));
Serial.write(byte(space));</code></pre>



<p class="wp-block-paragraph">The code below hasn&#8217;t been edited with this change, but basically the code required for writing a byte value through serial communication has changed.</p>



<pre class="wp-block-code"><code lang="c" class="language-c">
// this is where we will put our data
int left = 0;
int right = 0;
byte space = 0;
byte separator = 0;

void setup(){
  // Start up our serial port, we configured our XBEE devices for 38400 bps. 
  Serial.begin(9200);
}

void loop(){
  // handle serial data, if any
  if (Serial.available() &amp;gt;= 4){
    left = Serial.read();
    separator = Serial.read();
    right = Serial.read();
    space = Serial.read();
    Serial.flush();

    Serial.print(left);
    Serial.print(separator, BYTE);
    Serial.print(right);
    Serial.print(space, BYTE);
    Serial.print("n");
  }
}</code></pre>



<p class="wp-block-paragraph">I first declare four variables to reflect the fact that I’m writing four different variables to the serial port.</p>



<p class="wp-block-paragraph">In the loop method, I added a condition which will check whether there are four pieces of data available before reading them.&nbsp; This again reflects the fact I’m writing four values.</p>



<p class="wp-block-paragraph">The four variables initially declared store the values in the order that they are written, and then are just printed to the screen.</p>



<p class="wp-block-paragraph">The <em>print()</em> method is able to convert the byte value to an actual character by adding a second parameter called <em>BYTE</em>.&nbsp; The left and right variables don’t need it because the values written were integers to begin with, however, the dash and space characters were written as ASCII values.</p>



<p class="wp-block-paragraph">For more information about Arduino and Java, and Arduino’s Serial library, please refer to those in the Reference Section.</p>



<h1 class="wp-block-heading">Code Downloads</h1>



<p class="wp-block-paragraph">Here are the code downloads for the GUI, key bindings and the serial communication.&nbsp; WordPress doesn’t allow uploads of zip or java files so I uploaded it all to Megaupload.</p>



<p class="wp-block-paragraph">Link to download:&nbsp;<a href="http://www.mediafire.com/?z2l26ncypmzn20z" target="_blank" rel="noopener">http://www.mediafire.com/?z2l26ncypmzn20z</a></p>



<h1 class="wp-block-heading">Other Examples</h1>



<p class="wp-block-paragraph">There are also other sites I looked at which had example code for serial port communication in Java.&nbsp; The sites are Programming Serial and Parallel Ports and Serial Port Access Using RXTX in Java, which are both in the Reference section.</p>



<h1 class="wp-block-heading">Reference Material</h1>



<p class="wp-block-paragraph">Below are a bunch of links to reference sites that I used to find some of the information written here.&nbsp; I mostly referred to bits and pieces of each article to understand the serial code and to come up with the example I present here.&nbsp; The list is in the order that I referenced them.</p>



<h2 class="wp-block-heading">Discovering Available Comm Ports</h2>



<p class="wp-block-paragraph"><a href="http://rxtx.qbang.org/wiki/index.php/Discovering_available_comm_ports" target="_blank" rel="noopener">http://rxtx.qbang.org/wiki/index.php/Discovering_available_comm_ports</a></p>



<p class="wp-block-paragraph">The code on this page is pretty specific to the title of this heading, and the code is pretty easy to follow.</p>



<h2 class="wp-block-heading">How to Open A Serial Port</h2>



<p class="wp-block-paragraph"><a target="_blank" rel="noopener">http://embeddedfreak.wordpress.com/2008/08/08/how-to-open-serial-port-using-rxtx/</a></p>



<p class="wp-block-paragraph">This page provides a very concise and detailed explanation on what each line of code does in order to get a serial port open.&nbsp; Definitely work a look if you’re trying to understand the code.</p>



<h2 class="wp-block-heading">Event Based Two Way Communication</h2>



<p class="wp-block-paragraph"><a href="http://rxtx.qbang.org/wiki/index.php/Event_Based_Two_Way_Communication" target="_blank" rel="noopener">http://rxtx.qbang.org/wiki/index.php/Event_Based_Two_Way_Communication</a></p>



<p class="wp-block-paragraph">This page has example code on how to connect to a serial port and how to interact with it.&nbsp; The code here uses events, rather than polling, to send data back and forth, which means that whenever data is received, the event code is triggered.</p>



<h2 class="wp-block-heading">How to Close A Serial Port</h2>



<p class="wp-block-paragraph"><a target="_blank" rel="noopener">http://embeddedfreak.wordpress.com/2008/08/08/how-to-close-serial-port-in-rxtx/</a></p>



<p class="wp-block-paragraph">This article is written by the same author who wrote the article on how to open serial ports.  Good example code here.</p>



<h2 class="wp-block-heading">ASCII Table</h2>



<p class="wp-block-paragraph"><a href="http://www.asciitable.com/" target="_blank" rel="noopener">http://www.asciitable.com/</a></p>



<p class="wp-block-paragraph">Having the ASCII Table is quite handy for serial data because data being sent and written are bytes, so being able to know what byte values correspond to what character really helps.</p>



<h2 class="wp-block-heading">Arduino and Java</h2>



<p class="wp-block-paragraph"><a href="http://www.arduino.cc/playground/Interfacing/Java" target="_blank" rel="noopener">http://www.arduino.cc/playground/Interfacing/Java</a></p>



<p class="wp-block-paragraph">This article discusses how to use the serial port communication with Java and Arduino, which is exactly what I am after.&nbsp; It has example code on pretty much the entire process of serial port communication, but it may be too much to read since there is little explanation about the code.</p>



<h2 class="wp-block-heading">Arduino Serial Class</h2>



<p class="wp-block-paragraph"><a href="http://arduino.cc/en/Reference/Serial" target="_blank" rel="noopener">http://arduino.cc/en/Reference/Serial</a></p>



<p class="wp-block-paragraph">A good reference for Arduino’s Serial class methods.&nbsp; Also has example code to look at.</p>



<h2 class="wp-block-heading">Programming Serial and Parallel Ports</h2>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
https://docs.google.com/viewer?url=http%3A%2F%2Fjava.sun.com%2Fdeveloper%2FBooks%2Fjavaprogramming%2Fcookbook%2F11.pdf
</div></figure>



<p class="wp-block-paragraph">This article provides a brief introduction to programming serial ports and has information on the steps required to talk to the serial port.&nbsp; However, the code examples in there may be hard to follow for someone new to serial programming.</p>



<h2 class="wp-block-heading">Serial Port Access Using RXTX in Java</h2>



<p class="wp-block-paragraph"><a href="http://gomultidomain.blogspot.com/2008/06/serial-port-access-using-rxtx-in-java.html" target="_blank" rel="noopener">http://gomultidomain.blogspot.com/2008/06/serial-port-access-using-rxtx-in-java.html</a></p>



<p class="wp-block-paragraph">This page also has complete code for serial communication in Java, but what I was looking for here was how to use the write method to send serial data from Java.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2011/01/01/serial-communication-in-java-with-example-program/feed/</wfw:commentRss>
			<slash:comments>144</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">566</post-id>	</item>
	</channel>
</rss>
