<?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>Computer &#8211; Henry Poon&#039;s Blog</title>
	<atom:link href="https://blog.henrypoon.com/blog/tag/computer/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.henrypoon.com</link>
	<description></description>
	<lastBuildDate>Mon, 03 Oct 2022 05:30:27 +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>Seattle to Portland double century bike ride: my experience from training to the big day</title>
		<link>https://blog.henrypoon.com/blog/2018/09/23/seattle-to-portland-double-century-bike-ride-my-experience-from-training-to-the-big-day/</link>
					<comments>https://blog.henrypoon.com/blog/2018/09/23/seattle-to-portland-double-century-bike-ride-my-experience-from-training-to-the-big-day/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 23 Sep 2018 23:43:45 +0000</pubDate>
				<category><![CDATA[health]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[Chilly Hilly]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Cycling]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[Drinks]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Exercise]]></category>
		<category><![CDATA[Final]]></category>
		<category><![CDATA[Force]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Gran]]></category>
		<category><![CDATA[Happiness]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Light]]></category>
		<category><![CDATA[Mass]]></category>
		<category><![CDATA[Mind]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Opel]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[portland]]></category>
		<category><![CDATA[rain]]></category>
		<category><![CDATA[Rotation]]></category>
		<category><![CDATA[Seattle]]></category>
		<category><![CDATA[Sleep]]></category>
		<category><![CDATA[Sports]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Trac]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Week]]></category>
		<category><![CDATA[Woke]]></category>
		<category><![CDATA[Words]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">https://blog.henrypoon.com/?p=3001</guid>

					<description><![CDATA[The Seattle to Portland bike ride is a ~320 km bike ride that people do in either one or two days. The annual event attracts almost 10000 people every year. As a novice in cycling, I thought that this would be a great way to get involved in actual cycling events, and so I signed [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The <a href="https://www.cascade.org/rides-major-rides/kaiser-permanente-stp-presented-alaska-airlines" target="_blank" rel="noopener noreferrer">Seattle to Portland</a> bike ride is a ~320 km bike ride that people do in either one or two days. The annual event attracts almost 10000 people every year. As a novice in cycling, I thought that this would be a great way to get involved in actual cycling events, and so I signed up, not knowing if I could even complete it, but at least it would give me a strong incentive to train. This post is about my experience in preparing for the ride and doing the actual ride itself in a single day.</p>
<h1>STP 2017</h1>
<p>In the summer of 2017, two friends and I rode STP over the course of two days (this was my first cycling event ever). At the time, I didn&#8217;t really know how to train other than just riding a lot of miles and I never really gave any conscious thought to hydration or nutrition. I clocked in about 1500 km over 70 hours of training from March till July (which was totally below what the <a href="https://www.cascade.org/rides-major-rides-kaiser-permanente-stp-presented-alaska-airlines/preparing-stp" target="_blank" rel="noopener noreferrer">official training plan</a> called for).</p>
<p>On the event day, I ate whatever there was at the rest stops and drank the electrolyte drinks. I also ate this supplement called <a href="http://www.sportlegs.com/" target="_blank" rel="noopener noreferrer">SportLegs</a> that people were giving out. They supposedly improve muscle performance (however, sports dietitian thinks they&#8217;re more placebo than anything). I didn&#8217;t know anything at the time, and I just ate them anyway.</p>
<p><img data-recalc-dims="1" fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-3006" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG-20170715-WA0009_cropped.jpg?resize=1280%2C720&#038;ssl=1" alt="" width="1280" height="720" srcset="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG-20170715-WA0009_cropped.jpg?w=1585&amp;ssl=1 1585w, https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG-20170715-WA0009_cropped.jpg?resize=768%2C432&amp;ssl=1 768w, https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG-20170715-WA0009_cropped.jpg?resize=1536%2C863&amp;ssl=1 1536w, https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG-20170715-WA0009_cropped.jpg?resize=171%2C96&amp;ssl=1 171w" sizes="(max-width: 1280px) 100vw, 1280px" /></p>
<p>We were worried that our legs would be too sore to continue on the second day, but on the morning of the second day, we didn&#8217;t feel fresh, but nonetheless we made it through both days (with both legs still working!) and we were super happy with ourselves for having accomplished this. We joked that maybe it was the SportLegs (to this day we still don&#8217;t know). As we crossed the finish line, I said to my friends, &#8220;OK so we&#8217;re going to do STP in one day next year right?&#8221;. They thought I was joking, but I wasn&#8217;t.</p>
<h1>The problems begin</h1>
<p>The next event that summer was <a href="http://www.obliteride.org/" target="_blank" rel="noopener noreferrer">Obliteride 2017</a>, a century ride to raise awareness and fundraise to fight cancer. I figured that since I had done STP, I&#8217;d be able to do this ride no problem. This is where problems for me started.</p>
<p><img data-recalc-dims="1" decoding="async" class="aligncenter size-full wp-image-3008" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG_20170811_175158.jpg?resize=1280%2C720&#038;ssl=1" alt="" width="1280" height="720"></p>
<p>Around the 50 km mark, I started cramping up a little bit, and I still had 110 km to go. I started drinking much much more of the electrolyte drinks and eating, but the cramping just got worse and worse. It&#8217;s not that I didn&#8217;t have the strength &#8211; but each stroke I took, I felt the cramps. But the cramps weren&#8217;t SO bad that I couldn&#8217;t continue &#8211; I just had a terrible finish.</p>
<p><img data-recalc-dims="1" decoding="async" class="aligncenter size-full wp-image-3010" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/Strava.png?resize=1046%2C529&#038;ssl=1" alt="" width="1046" height="529"></p>
<p>I went to see a physiotherapist to see what was happening, and she took a look, and she could only identify a slight pelvic rotation (my hips were leaning to one side of the bike), but she didn&#8217;t think that was the root cause. She couldn&#8217;t see anything wrong with the bike fit either, but thought it could have been a lack of training since Obliteride was much hillier than STP. I did the exercises she asked me to do and that was about it. I had also signed up for the <a href="https://www.rbcgranfondo.com/whistler/" target="_blank" rel="noopener noreferrer">Whistler GranFondo</a> and <a href="https://www.cascade.org/rides-major-rides/chilly-hilly" target="_blank" rel="noopener noreferrer">Chilly Hilly</a> as well, but I couldn&#8217;t even finish either of them. At one point, my entire right leg locked up on me and I couldn&#8217;t bend it for a couple of minutes. I began to worry if I could even continue cycling anymore.</p>
<h1>Tackling the problem</h1>
<p>I was so fed up with this problem, that I scheduled appointments with different doctors in sports medicine to get their advice. They all suspected that it was a nutrition problem and referred me to a sports dietitian. At my first appointment with the dietitian, she asked me about my lifestyle, how much I ate, exercised, etc. and immediately said, &#8220;you&#8217;re not eating enough for the exercise you&#8217;re doing&#8221; (I estimated that I was eating about 2200 calories/day). She wrote out on the whiteboard a high level guideline as to how I should eat.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="size-full wp-image-3016" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG_20180509_165707.jpg?resize=1280%2C720&#038;ssl=1" alt="" width="1280" height="720"></p>
<p>I saw her for about a month and a half and after following her advice, my problems were solved! In a way, I got the OK from the nutritionist to eat as much as I want, even massive amounts of sodium and sugar, provided that I keep up my level of exercise. Knowing that eating more was the fix, I had no problem with that.</p>
<p>She also got me to measure my sweat rate, so I&#8217;d know how much water to replenish during big rides.</p>
<h1>Training for STP 2018</h1>
<p>I rode sporatically in the winter (I should have followed <a href="http://www.velominati.com/the-rules/" target="_blank" rel="noopener noreferrer">Rule #5 of the Velominati</a>) and didn&#8217;t really start training seriously until June. From January to May, I clocked in only 848 km over 38 hours, which was only a bit less than year before at the same time, but I had started earlier in the year this time.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-full wp-image-3020" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/Strava-1.png?resize=1041%2C518&#038;ssl=1" alt="" width="1041" height="518"></p>
<p>I made a plan for myself where I would do intervals twice a week with a big ride on the weekend (in June alone I clocked in 577 km over 25 hours). Two of the big training rides I had were century rides, where I got to work out the specifics in my nutrition and hydration plan. In total, I rode about 1600 km over 73 hours, not counting the intervals.</p>
<p>Three weeks before the event date, I started sleeping earlier and earlier (by about 15-30 minutes each day) to get myself used to waking up early since I would have to be on the road by 5:30am on event day.</p>
<p>Two days before the ride, I started carb loading (as per instructions from the dietitian).</p>
<h1>My emotional state</h1>
<p>I didn&#8217;t like the fact that training took so much time out of my week. I was already spending 10+ hours on the saddle, and I was beginning to feel mentally tired from all willpower required. The intervals drained me mentally even more because of the mental focus I needed to force myself to spin as hard as I could. It&#8217;s so easy to just stop when things get tough, and interval training was more mentally draining than any training ride I did.</p>
<p>As the event date drew closer, thoughts of my possible failure creeped into my mind, getting stronger day by day. I couldn&#8217;t think of anything else. I thought back to the wise words of Sun Tzu:</p>
<blockquote><p>If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle.</p>
<p>知彼知己，百戰不殆；不知彼而知己，一勝一負；不知彼，不知己，每戰必殆。</p></blockquote>
<p>I even started meditating to calm my mind. My coworkers could tell that I was more distracted than usual and provided me with good encouragement.</p>
<h1>Race day</h1>
<p>My friend and I started the ride around 5:30 am, and because there were so many cyclists on the road, drafting propelled us quickly and we made it to the halfway point around 2:30 pm. I still felt pretty fresh at that time which was good.</p>
<p>I knew that most riders do the ride in 2 days, so I expected not to be able to draft behind other riders. By about 200 km, I started feeling tired, but I knew I had to keep going. There was still 120 km to go.</p>
<p>I wasn&#8217;t having fun anymore. At this point, it was just a grueling grind to the finish, where the finish line was hours away. I wanted the day to be over. and thought to myself, &#8220;this too shall pass&#8221;. Looking at my bike computer frequently to see how far we&#8217;ve gone made it worse &#8211; slowly watching the distance ticking upward while thinking &#8220;when will this end?&#8221;</p>
<p>The temperature that day went up to a max of around 38 degrees Celsius. We rode in the burning heat, slowly becoming more and more dehydrated. I wanted the sun to set faster, so that it&#8217;d be cooler.</p>
<p>Judging by the dozens of people we saw at rest areas, we figured our pace was pretty good. But as we went further along, there were less and less people at the rest stops. Either they bailed, or they were much faster than us.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-full wp-image-3032" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG_20170715_083727.jpg?resize=1280%2C720&#038;ssl=1" alt="" width="1280" height="720"></p>
<p>The finish line would close at 9 pm, and there was no way I&#8217;d get to the finish line in time. I wish I had trained harder.</p>
<p>For most of the last third, we rode mainly on our own, occasionally seeing another rider, whom we&#8217;d ride behind just to get an extra bit of a boost.</p>
<p>At the last rest area, there was almost nobody, maybe like a dozen people at most, but we were only some 25 km away. We could do this.</p>
<p>My friend and I would swap taking the lead every five minutes so that we could balance out the wind load between the two of us. The fact that the two of us rode together allowed us to talk to each other and help lift each other up. I think that helped a greal deal mentally and emotionally.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-full wp-image-3028" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG_20170716_121400.jpg?resize=1280%2C720&#038;ssl=1" alt="" width="1280" height="720" srcset="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG_20170716_121400.jpg?w=1920&amp;ssl=1 1920w, https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG_20170716_121400.jpg?resize=768%2C432&amp;ssl=1 768w, https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG_20170716_121400.jpg?resize=1536%2C864&amp;ssl=1 1536w, https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/IMG_20170716_121400.jpg?resize=171%2C96&amp;ssl=1 171w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></p>
<p>At dusk, we finally entered Portland. We were now just 30 minutes away from the finish line. We joined a group of other riders and rode together till the end.</p>
<p>I called out to the other riders with encouraging words like, &#8220;yeah! We&#8217;re almost there wooo&#8221;, but looking back I think I sounded too happy (despite my true feelings of misery) and the people around me probably thought I was a jerk for being so happy while they felt miserable.</p>
<p>Finally we reached the finish line at 10:30 pm. People were still there and cheering us on as we arrived. I almost shed a tear. I was overjoyed having finally achieving this goal.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-full wp-image-3026" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/MVIMG_20180714_225544.jpg?resize=1280%2C1156&#038;ssl=1" alt="" width="1280" height="1156"></p>
<p>Other friends who drove to Portland met us at the finish line and could see our happiness despite how filthy we were. We weren&#8217;t even hungry nor thirsty. We were in no mood to do anything. We just wanted to sleep. My friend was told that he sounded brain dead because he replied with one word answers and lacked the concentrated gaze that he normally had, whereas I was still considered having a sound mind.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-full wp-image-3030" src="https://i0.wp.com/blog.henrypoon.com/wp-content/uploads/2018/09/Strava-2.png?resize=1040%2C521&#038;ssl=1" alt="" width="1040" height="521"></p>
<p>The next morning, I woke up with quite the hangover even though I drank no alcohol. I was just REALLY REALLY dehydrated from the bike ride in the blazing heat.</p>
<p>After this entire ordeal, I told myself, &#8220;I&#8217;m not going to do this again next year&#8221;. I didn&#8217;t get back on the bike until late August &#8211; I think STP scarred me a little bit. I definitely don&#8217;t regret having done this at all, and I&#8217;m still very proud of what I did.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2018/09/23/seattle-to-portland-double-century-bike-ride-my-experience-from-training-to-the-big-day/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3001</post-id>	</item>
		<item>
		<title>Repairing corrupt PowerPoint files</title>
		<link>https://blog.henrypoon.com/blog/2015/05/13/repairing-corrupt-powerpoint-files/</link>
					<comments>https://blog.henrypoon.com/blog/2015/05/13/repairing-corrupt-powerpoint-files/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Thu, 14 May 2015 05:39:21 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Computer file]]></category>
		<category><![CDATA[corrupt powerpoint]]></category>
		<category><![CDATA[corrupt pptx]]></category>
		<category><![CDATA[corrupt zip]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[diskinternals]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Microsoft PowerPoint]]></category>
		<category><![CDATA[Office software]]></category>
		<category><![CDATA[Office work]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Z]]></category>
		<category><![CDATA[Zip]]></category>
		<category><![CDATA[zip repair]]></category>
		<guid isPermaLink="false">https://www.henrypoon.com/blog/?p=2084</guid>

					<description><![CDATA[A free tool called DiskInternals ZIP Repair&#160;was able to recover a corrupted PowerPoint&#160;file (*.pptx) that I had on my computer. &#160;I learned that pptx files are actually zip files in disguise, and so using a utility to repair a corrupt zip archive could work. &#160;At first I thought it was one of those sketchy bloatware [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A free tool called <a href="http://www.diskinternals.com/zip-repair" target="_blank" rel="noopener noreferrer">DiskInternals ZIP Repair</a>&nbsp;was able to recover a corrupted PowerPoint&nbsp;file (*.pptx) that I had on my computer. &nbsp;I learned that pptx files are actually zip files in disguise, and so using a utility to repair a corrupt zip archive could work. &nbsp;At first I thought it was one of those sketchy bloatware programs, but Lifehacker has written an <a href="http://lifehacker.com/5645798/diskinternals-zip-repair-fixes-up-your-faulty-downloads" target="_blank" rel="noopener noreferrer">article</a> about them before, so it should be fine.</p>
<p>Using the program was pretty simple. &nbsp;I just opened it and told it which zip file (in my case the pptx file which I renamed to a zip file), and then the program did all the work and recovered everything. &nbsp;It was like magic!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2015/05/13/repairing-corrupt-powerpoint-files/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2084</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>Disabling Mouse Acceleration in Ubuntu</title>
		<link>https://blog.henrypoon.com/blog/2015/01/25/disabling-mouse-acceleration-in-ubuntu/</link>
					<comments>https://blog.henrypoon.com/blog/2015/01/25/disabling-mouse-acceleration-in-ubuntu/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 25 Jan 2015 08:31:32 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[AWK]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Computer mice]]></category>
		<category><![CDATA[Computer mouse]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Counter-Strike]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Digital technology]]></category>
		<category><![CDATA[DirectInput]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mass]]></category>
		<category><![CDATA[mouse acceleration]]></category>
		<category><![CDATA[Plan]]></category>
		<category><![CDATA[Plug]]></category>
		<category><![CDATA[Programming languages]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Sleep]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Trac]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://www.henrypoon.com/blog/?p=1955</guid>

					<description><![CDATA[I&#8217;ve been quite accustomed to disabling mouse acceleration on my Windows machine (thanks to playing massive amounts of Counter-Strike back in the day), but now that I&#8217;ve started to use Linux a bit more, I&#8217;ve found that disabling mouse acceleration was not as easy as in Windows. Script I&#8217;ve managed to produce a script to [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I&#8217;ve been quite accustomed to disabling mouse acceleration on my Windows machine (thanks to playing massive amounts of Counter-Strike back in the day), but now that I&#8217;ve started to use Linux a bit more, I&#8217;ve found that disabling mouse acceleration was not as easy as in Windows.</p>



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



<p class="wp-block-paragraph">I&#8217;ve managed to produce a script to disable mouse acceleration (works for me on Ubuntu 14.04).  However, this script needs to be run every time the computer boots because the settings don&#8217;t stay.  Here is the script:</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">#wait for the desktop to settle
sleep 5

#gets the hardware id's of all mice plugged into the system
hardwareIds=$(xinput | grep -i mouse | awk '{print substr($(NF-3),4)}')

#turn off mouse acceleration
for i in $hardwareIds
do
xinput set-prop ${i} 'Device Accel Profile' -1
xinput set-prop ${i} 'Device Accel Velocity Scaling' 1
done</code></pre>



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



<p class="wp-block-paragraph">The script works by extracting the hardware id&#8217;s of the mice that are connected to the system and then applying properties to them that disable mouse acceleration for that device.  The extraction of the mouse hardware id&#8217;s are done with this:</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">#gets the hardware id's of all mice plugged into the system
hardwareIds=$(xinput | grep -i mouse | awk '{print substr($(NF-3),4)}')</code></pre>



<p class="wp-block-paragraph">Calling xinput in the Terminal will list all the connected input devices, which is grepped (case insensitively) for the word &#8220;mouse&#8221;, which gives something like this on my machine:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>⎜ ↳ Logitech G500s Laser Gaming Mouse id=14 [slave pointer (2)]<br>⎜ ↳ Logitech G500s Laser Gaming Mouse id=15 [slave pointer (2)]</p></blockquote>



<p class="wp-block-paragraph">The call to awk extracts the hardware id&nbsp;from those two lines (14, 15 in the above case) and stores them in an array that is iterated through when setting the mouse properties.</p>



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



<p class="wp-block-paragraph">This is the website that showed me how to disable mouse acceleration to begin with:&nbsp;<a href="http://ubuntuforums.org/showthread.php?t=1734400" target="_blank" rel="noopener noreferrer">http://ubuntuforums.org/showthread.php?t=1734400</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2015/01/25/disabling-mouse-acceleration-in-ubuntu/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1955</post-id>	</item>
		<item>
		<title>Resolving dd-wrt bug that prevented computers on a LAN with wired connection from talking/pinging/communicating with each other</title>
		<link>https://blog.henrypoon.com/blog/2015/01/05/resolving-dd-wrt-bug-that-prevented-computers-on-a-lan-with-wired-connection-from-talkingpingingcommunicating-with-each-other/</link>
					<comments>https://blog.henrypoon.com/blog/2015/01/05/resolving-dd-wrt-bug-that-prevented-computers-on-a-lan-with-wired-connection-from-talkingpingingcommunicating-with-each-other/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Tue, 06 Jan 2015 06:27:16 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Computer networking]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Custom firmware]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[dd-wrt]]></category>
		<category><![CDATA[destination host unreachable]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Firmware]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[Linksys routers]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Netgear WGR614L]]></category>
		<category><![CDATA[Networking hardware]]></category>
		<category><![CDATA[Page]]></category>
		<category><![CDATA[Router]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[System software]]></category>
		<category><![CDATA[Telnet]]></category>
		<category><![CDATA[wired connection]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/resolving-dd-wrt-bug-that-prevented-computers-on-a-lan-with-wired-connection-from-talkingpingingcommunicating-with-each-other</guid>

					<description><![CDATA[I just had a problem where the computers in my house that were all using a wired connection could not talk to each other. &#160;Computers on wired connections could not ping, and ping kept giving an error saying &#8220;destination host unreachable&#8221;. &#160;I found the solution in a very hard to find forum post on the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I just had a problem where the computers in my house that were all using a wired connection could not talk to each other. &nbsp;Computers on wired connections could not ping, and ping kept giving an error saying &#8220;destination host unreachable&#8221;. &nbsp;I found the solution in a very hard to find forum post on the dd-wrt forums.</p>



<p class="wp-block-paragraph"><strong>This specific instance of the problem affects users of the dd-wrt firmware. &nbsp;In my case, I am using build 24461 of the firmware.</strong> &nbsp;The solution is to run the following commands on the router (either with ssh or telnet):</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">swconfig dev eth0 set enable_vlan 1
swconfig dev eth0 set apply</code></pre>



<p class="wp-block-paragraph">I&#8217;ve since put this in the startup commands that the router will execute, so these settings will stay even after a router reboot.</p>



<p class="wp-block-paragraph">For some routers, it might be eth1 instead of eth0. &nbsp;It depends on which network interface is assigned to the WAN. &nbsp;This can be check in the router page under Setup &gt; Networking.</p>



<p class="wp-block-paragraph">Link to forum post: <a href="http://www.dd-wrt.com/phpBB2/viewtopic.php?t=152738&amp;postdays=0&amp;postorder=asc&amp;start=0" target="_blank" rel="noreferrer noopener">http://www.dd-wrt.com/phpBB2/viewtopic.php?t=152738&amp;postdays=0&amp;postorder=asc&amp;start=0</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2015/01/05/resolving-dd-wrt-bug-that-prevented-computers-on-a-lan-with-wired-connection-from-talkingpingingcommunicating-with-each-other/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1928</post-id>	</item>
		<item>
		<title>Proof of the Farthest-in-Future Optimal Caching Algorithm</title>
		<link>https://blog.henrypoon.com/blog/2014/02/02/proof-of-the-farthest-in-future-optimal-caching-algorithm/</link>
					<comments>https://blog.henrypoon.com/blog/2014/02/02/proof-of-the-farthest-in-future-optimal-caching-algorithm/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 02 Feb 2014 23:19:13 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[All That]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Cache replacement policies]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Comment]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Computer architecture]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Contents]]></category>
		<category><![CDATA[CPU cache]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Digital technology]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[farthest-first]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[greedy algorithms]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[IOS]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[optimal caching]]></category>
		<category><![CDATA[Outside]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[tuna]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/proof-of-the-farthest-in-future-optimal-caching-algorithm</guid>

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

					<description><![CDATA[From Vimy Ridge, we went back to London for another day and then we parted ways.  Edward flew back to Vancouver while I stayed in Europe for another two and a half weeks.  My next destination was Munich.  Each of our flights were very early in the morning from London Gatwick, so we just went [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">From Vimy Ridge, we went back to London for another day and then we parted ways.  Edward flew back to Vancouver while I stayed in Europe for another two and a half weeks.  My next destination was Munich.  Each of our flights were very early in the morning from London Gatwick, so we just went to the airport and slept there for a night.  It wasn&#8217;t restful sleep at all.  At least I managed to sleep more on the flight there.  I met up with a friend of mine that I met while taking courses at UBC while he was an exchange student.  I stayed with him for a few days.  The <a href="http://henrypoon.wordpress.com/2011/04/11/munich/" target="_blank" rel="noreferrer noopener">last time I went to Munich</a>, I never got the chance to visit the Deutsches Museum, which was my first destination this time.</p>



<p class="wp-block-paragraph">The Deutsches Museum is one of the largest museums I&#8217;ve been to. There were so many topics on technology that the museum had. They had the usual topics on flight, ship building, engines, etc., but they had even more exhibits on classical mechanics, electromagnetism, chemistry, nuclear physics, mining, semiconductors, computers, cartography, microsystems, space exploration, printing, etc.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/DeutschesMuseum#5897602830019444386" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh4.googleusercontent.com/-fd5VbDjgwlM/Udh-hu2lvqI/AAAAAAAAOPs/SjiNZQvchvU/s912/IMG_9263.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">There was even a cool demonstration of arc lightning.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/DeutschesMuseum#5897603009746845554" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh5.googleusercontent.com/-vldccmJOGAg/Udh-sMY8P3I/AAAAAAAAOQM/Rnn07yBmpFs/s912/IMG_9267.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">The section of space exploration was quite interesting too, but it wasn&#8217;t as big as the exhibit at the Smithsonian Museum of Flight.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/DeutschesMuseum#5897603577103634338" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-xKSZFYnT-Ac/Udh_NN9Vz6I/AAAAAAAAORU/_N3vdmfRtgE/s912/IMG_9275.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">The clean room exhibit reminded me a little bit of the type of work I did during my internship at Bosch.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/DeutschesMuseum#5897604088995051634" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh5.googleusercontent.com/-KyvTNaeuxso/Udh_rA5w-HI/AAAAAAAAOSo/Ljkynmsm8zc/s720/IMG_9285.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">Of course in any exhibit on computers, there has to be a computer from <a class="zem_slink" title="Remington Rand" href="http://en.wikipedia.org/wiki/Remington_Rand" target="_blank" rel="wikipedia noopener noreferrer">Remington Rand</a>.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/DeutschesMuseum#5897604179457784914" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-ZXBB0bgggyU/Udh_wR5wvFI/AAAAAAAAOS8/TRqqnDns8M0/s912/IMG_9287.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">Here is the experimental apparatus that was used to discover nuclear fission.</p>


<div class="wp-block-image">
<figure class="aligncenter"><a href="https://picasaweb.google.com/117972094293741244551/DeutschesMuseum#5897604462558494978" target="_blank" rel="noopener noreferrer"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/lh6.googleusercontent.com/-F4g2iB4uVi8/UdiAAwiOwQI/AAAAAAAAOTc/KQg-4qmUcbw/s912/IMG_9291.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">The stuff I looked at was only scratching the surface of the museum. I pretty much skipped entire sections like time keeping, wind turbines, bridge building, among other things. I was there for four hours too and I didn&#8217;t even look at any one section in a lot of detail. To see everything, one would have to spend days here.</p>



<p class="wp-block-paragraph">Link to photo album <a href="https://picasaweb.google.com/117972094293741244551/DeutschesMuseum#" target="_blank" rel="noopener noreferrer">here</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2013/08/03/deutsches-museum/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1728</post-id>	</item>
		<item>
		<title>Taking Control of Your Sleep Routine</title>
		<link>https://blog.henrypoon.com/blog/2012/12/14/taking-control-of-your-sleep-routine/</link>
					<comments>https://blog.henrypoon.com/blog/2012/12/14/taking-control-of-your-sleep-routine/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sat, 15 Dec 2012 06:47:06 +0000</pubDate>
				<category><![CDATA[health]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Branches of biology]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[Click]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Competition]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Const]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Final]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[German]]></category>
		<category><![CDATA[Germany]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Health]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Mind]]></category>
		<category><![CDATA[Motivation]]></category>
		<category><![CDATA[Nap]]></category>
		<category><![CDATA[Neuroscience]]></category>
		<category><![CDATA[Neuroscience of sleep]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[RAR]]></category>
		<category><![CDATA[Sleep]]></category>
		<category><![CDATA[Sleep and weight]]></category>
		<category><![CDATA[Sleep debt]]></category>
		<category><![CDATA[Sleep deprivation]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[Søvnen]]></category>
		<category><![CDATA[Thou]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Time management]]></category>
		<category><![CDATA[Urge]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/taking-control-of-your-sleep-routine</guid>

					<description><![CDATA[I think I speak for a lot of people when I say that we aren&#8217;t getting enough sleep. &#160;We&#8217;re always worried about our next deadline and other things we have to do. &#160;Sleep somehow always becomes a lower priority. &#160;After a while of consistently sleeping less and less, we&#8217;ve forgotten what it felt like to [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I think I speak for a lot of people when I say that we aren&#8217;t getting enough sleep. &nbsp;We&#8217;re always worried about our next deadline and other things we have to do. &nbsp;Sleep somehow always becomes a lower priority. &nbsp;After a while of consistently <a class="zem_slink" title="Sleep" href="http://en.wikipedia.org/wiki/Sleep" target="_blank" rel="noopener wikipedia noreferrer">sleeping</a> less and less, we&#8217;ve forgotten what it felt like to be fully rested all the time, except on the odd day where we sleep-in for 12 hours. &nbsp;It doesn&#8217;t have to be this way.</p>



<p class="wp-block-paragraph">Personally, I simply got tired of sleeping so little. &nbsp;I always sacrificed sleep for more work time in the past. &nbsp;But now, I&#8217;ve come to realize how powerful being rested really is. &nbsp;It feels so empowering when I wake up in the morning, fully refreshed. &nbsp;I don&#8217;t have to struggle to get out of bed or set 5 alarm clocks to get me out of bed in the morning. &nbsp;The reason that the struggle exists is because the body wants more sleep. &nbsp;This is a clear sign of not sleeping enough. &nbsp;I&#8217;m definitely no sleep expert and I don&#8217;t claim to be, but I thought I&#8217;d share some techniques in how to think differently about sleep. &nbsp;But first, I think I should share my experience with sleep deprivation, which I felt heavily motivated me into adopting this way of life. &nbsp;All of this below is just my view on sleep health.</p>



<h1 class="wp-block-heading">My Battle with <a class="zem_slink" title="Sleep deprivation" href="http://en.wikipedia.org/wiki/Sleep_deprivation" target="_blank" rel="noopener wikipedia noreferrer">Sleep Deprivation</a></h1>



<p class="wp-block-paragraph">In high school, I pretty much got 8 hours of sleep a night. &nbsp;It wasn&#8217;t that hard since at that time I didn&#8217;t really think about optimizing my sleep. &nbsp;I just remember being nagged to go to sleep by my parents every night. &nbsp;I never had to stay up doing any homework or anything like that. &nbsp;Even my first year of university was like that. &nbsp;Rarely found myself staying up to do work unless there was a exam the next day or something.</p>



<p class="wp-block-paragraph">Second year of university is when it all changed. &nbsp;A thought clicked in my head that I could&nbsp;sleep less and get more work done. &nbsp;It&#8217;s not like I felt sleepy at night anyways. &nbsp;For a while it was alright, but then as I slept less and less, my <a class="zem_slink" title="Sleep debt" href="http://en.wikipedia.org/wiki/Sleep_debt" target="_blank" rel="noopener wikipedia noreferrer">sleep debt</a> accumulated. &nbsp;<strong>I found myself napping in class. &nbsp;I even micro-slept while I drove and almost got into not one, but a couple car accidents. &nbsp;</strong>I didn&#8217;t try to do anything about it at the time. &nbsp;I liked the extra time. &nbsp;There was a while where I slept about 4.5 hours a night because I stayed up playing computer games. &nbsp;I looked like a zombie. &nbsp;I yawned all the time and everyone knew I was sleepy.</p>



<p class="wp-block-paragraph">In my third year, I lived alone on campus. &nbsp;No one told me when to wake up to go to class. &nbsp;With all the sleep debt I had, <strong>I struggled to get up every morning.</strong> &nbsp;Eventually, <strong>I stopped going to morning classes altogether and my grades suffered</strong>. &nbsp;I started questioning myself, &#8220;why is it so hard to sleep early?&#8221; &nbsp;<strong>I was easily annoyed all the time</strong><strong>. &nbsp;</strong>I was so tired at one point, that&nbsp;<strong>I caught myself hallucinating</strong>. &nbsp;It was weird because I saw this strange bug crawling up the curtain and when I waved the curtain around, it was gone. &nbsp;I couldn&#8217;t find it anywhere on the floor. &nbsp;I wanted to change my sleeping habits, but I couldn&#8217;t do it. &nbsp;Logic told me to do it, but I couldn&#8217;t act on it.</p>



<p class="wp-block-paragraph">My sleeping habits didn&#8217;t change until I went to Germany for my co-op work term. &nbsp;I guess because I was adjusting to this new environment, I actually felt sleepy at night. &nbsp;This urge made me sleep a lot earlier than what I was used to doing. &nbsp;I felt rested for the first time in a long time. &nbsp;It felt so good. &nbsp;My constant zombie look faded away. &nbsp;I could tell that my skin complexion was improving.</p>



<p class="wp-block-paragraph">I guess because I&#8217;ve seen how dangerous sleep deprivation could be, it finally compelled me to change my ways. &nbsp;Ever since I&#8217;ve made sleep a priority, I feel a lot healthier. &nbsp;I lose out on wake-time for working, but I am able to think better when I am rested. &nbsp;My thoughts are a lot clearer. &nbsp;That makes me a more efficient worker.</p>



<h1 class="wp-block-heading">Getting into the Frame of Mind</h1>



<p class="wp-block-paragraph"><strong>You&#8217;ve got to be truly convinced that you&nbsp;<em>want</em>&nbsp;to get more sleep</strong>. &nbsp;I know a lot of people who say things &#8220;yeah I know I don&#8217;t get enough sleep&#8221;, but they don&#8217;t do anything about it. &nbsp;Nothing at all. &nbsp;Everyday they keep their usual sleep routine and they&#8217;re struggling all the time. &nbsp;They&#8217;re the ones who are always late to morning appointments, and some even for afternoon appointments. &nbsp;Why does it have to be that way? &nbsp;It doesn&#8217;t. &nbsp;But before even trying to maintain a proper sleep routine, people really have to change the way they think about sleep.</p>



<p class="wp-block-paragraph"><strong>Sleep is NOT<em> </em>a waste of time. </strong>I&#8217;ve heard people say, &#8220;sleep is a waste of time&#8221; or &#8220;sleep is for the weak&#8221;.  It definitely is not.  Somehow I think there is a competition between who gets the least amount of sleep and still gets the most work done.  I&#8217;ve heard people people saying (sometimes bragging) stuff like how they got only 3 hours of sleep and then pulled an all-nighter to study for an exam.  Sure, they definitely were up for a while, but should we question the efficiency of that work?  Of course.  Anybody who has pulled an all-nighter has experiences how &#8220;out of it&#8221; they were by the end if not half way through.  Nobody <em>wants</em> to do an all-nighter.  That is an extreme case though.  A more common theme is to stay up for 18 hours or so.  That leaves 6 hours to sleep.  The average for most people lies somewhere around 7.5-8 hours.  According to the statistics, more than half of us need more than 6.  By not getting our required amount of sleep, this so-called &#8220;<a href="http://en.wikipedia.org/wiki/Sleep_debt" target="_blank" rel="noreferrer noopener">sleep debt</a>&#8221; will accumulate over time.  Like I mentioned before, I once slept on average 4.5 to 5 hours a night for about 3 months straight.  People around me could tell I looked like a zombie.  I&#8217;ve definitely experienced sleep debt first hand.  In retrospect, doing this was so stupid, but that experience definitely helped me reshape what I thought about sleep.  It is a necessity.</p>



<p class="wp-block-paragraph"><strong>Getting into the right frame of mind takes time. &nbsp;</strong>I definitely did not just one day choose to make sleep a priority. &nbsp;It happened over time. &nbsp;For me it took a few years in order for me to drill it into my head. &nbsp;After sleeping late and waking up early, I&#8217;d ask myself why I did that. &nbsp;Why did I sleep so little the night before when the consequence was me feeling sleep deprived the day after? &nbsp;As I&#8217;m in my early 20&#8217;s, sleeping late is easy. &nbsp;It&#8217;s not difficult to just stay up late doing nothing in particular. &nbsp;In fact, it seems to be natural tendency for most people in my age group to be <a class="zem_slink" title="Night owl (person)" href="http://en.wikipedia.org/wiki/Night_owl_%28person%29" target="_blank" rel="noopener wikipedia noreferrer">night owls</a>.</p>



<p class="wp-block-paragraph"><strong>Going to bed early is not a chore. </strong>&nbsp;Chores are something we&#8217;d rather not do, but we&#8217;re only doing it because we have to. &nbsp;This attitude will not work. &nbsp;Eventually, you&#8217;ll give up&nbsp;and revert to your old ways. &nbsp;You have to change your attitude toward sleep. &nbsp;You know how some people feel passionate about their work and will always feel motivated to do it? &nbsp;That&#8217;s their motivation. &nbsp;There is a similar motivation for sleeping early. &nbsp;I want to go to sleep early today, so I feel rested and ready to go tomorrow.</p>



<p class="wp-block-paragraph"><strong>Ask yourself why your sleep habits are the way they are right now.</strong> &nbsp;Why do I have to wake up feeling terrible every morning? &nbsp;Why do I have to set so many alarms just to get out of bed? &nbsp;Why am I pressing the snooze button so much? &nbsp;Shouldn&#8217;t I be getting up super early? Doesn&#8217;t this struggle to wake up give me less time to get ready? &nbsp;If I don&#8217;t have enough time to get ready, won&#8217;t I look like a mess when I go to work/school? &nbsp;Am I sleeping late all the time because I have so much work to do? &nbsp;Could I be improving on my time management to make me more efficient? Is sleeping late worth it? &nbsp;I&#8217;m sure there are way more questions to be asked, but asking yourself these questions will tell you how you really feel about it. &nbsp;Everyone&#8217;s going to have different answers. &nbsp;Some might want to change, but others might feel that what they&#8217;re doing is the best solution right now.</p>



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



<p class="wp-block-paragraph">Sleep is absolutely essential for good health and its benefits are far reaching. &nbsp;Ever since I&#8217;ve slept better, I&#8217;ve been able to accomplish more. &nbsp;No longer am I the sleep deprived zombie. &nbsp;My grades in school are better despite harder courses and more commitments. Better sleep health is something that anybody can do, but they have to want it. &nbsp;You have to convince yourself that sleep deprivation is a terrible thing and it is something to avoid. &nbsp;You&#8217;ve got to get into the frame of mind that sleep health is good and the will to change. &nbsp;If you truly want to improve your sleep habits for the better, the improvements will happen.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2012/12/14/taking-control-of-your-sleep-routine/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1583</post-id>	</item>
		<item>
		<title>Tortoise SVN freezes when trying to lock/add/commit changes of SolidWorks files</title>
		<link>https://blog.henrypoon.com/blog/2012/02/18/tortoise-svn-freezes-when-trying-to-lockaddcommit-changes-of-solidworks-files/</link>
					<comments>https://blog.henrypoon.com/blog/2012/02/18/tortoise-svn-freezes-when-trying-to-lockaddcommit-changes-of-solidworks-files/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Sun, 19 Feb 2012 03:22:37 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[.exe]]></category>
		<category><![CDATA[3D graphics software]]></category>
		<category><![CDATA[Apache Subversion]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Dassault Group]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[Hex]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Icon]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[ise]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Net]]></category>
		<category><![CDATA[Product design]]></category>
		<category><![CDATA[Proprietary software]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SolidWorks]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Vol]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/tortoise-svn-freezes-when-trying-to-lockaddcommit-changes-of-solidworks-files</guid>

					<description><![CDATA[Tortoise SVN sometimes freezes when SolidWorks files get changed when the user tries to lock/add/commit files.&#160; This is caused by the sldShellExtServer.exe process conflicting with Tortoise.&#160; Disabling the shell extensions that SolidWorks installs on the computer removes the conflict so that SVN can work properly. The Fix The fix involves disabling the shell extensions, so [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Tortoise SVN sometimes freezes when SolidWorks files get changed when the user tries to lock/add/commit files.&nbsp; This is caused by the sldShellExtServer.exe process conflicting with Tortoise.&nbsp; Disabling the shell extensions that SolidWorks installs on the computer removes the conflict so that SVN can work properly.</p>



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



<p class="wp-block-paragraph">The fix involves disabling the shell extensions, so disabling them is not recommended if the user makes use of these features.</p>



<ol class="wp-block-list"><li>Download ShellExView from <a href="http://www.nirsoft.net/utils/shexview.html" target="_blank" rel="noreferrer noopener">http://www.nirsoft.net/utils/shexview.html</a></li><li>Disable the following items: <ul><li>SLDASMIcons Class</li><li>SLDDEWIcons Class</li><li>SLDPRTIcons Class</li><li>SldShellExtension Class</li><li>Solidworks Document Thumbnail Handler</li><li>SolidWorks file Info Tips Class</li><li>SolidWorks file Preview Class </li></ul></li></ol>



<p class="wp-block-paragraph">Once these items are disabled, SVN should work properly.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2012/02/18/tortoise-svn-freezes-when-trying-to-lockaddcommit-changes-of-solidworks-files/feed/</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1323</post-id>	</item>
		<item>
		<title>Removing the annoying Windows language hotkeys “Ctrl+Space”, “Shift+Space” etc. that toggles the full-width/half-width characters on the Chinese IME</title>
		<link>https://blog.henrypoon.com/blog/2012/01/03/removing-the-annoying-windows-language-hotkeys-ctrlspace-shiftspace-etc-that-toggles-the-full-widthhalf-width-characters-on-the-chinese-ime/</link>
					<comments>https://blog.henrypoon.com/blog/2012/01/03/removing-the-annoying-windows-language-hotkeys-ctrlspace-shiftspace-etc-that-toggles-the-full-widthhalf-width-characters-on-the-chinese-ime/#comments</comments>
		
		<dc:creator><![CDATA[hp]]></dc:creator>
		<pubDate>Tue, 03 Jan 2012 23:04:52 +0000</pubDate>
				<category><![CDATA[computer stuff]]></category>
		<category><![CDATA[9]]></category>
		<category><![CDATA[Chan]]></category>
		<category><![CDATA[Click]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Control Panel]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Digital technology]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[EAR]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Family]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Hex]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[Input method]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[It]]></category>
		<category><![CDATA[Keyboard shortcut]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Lie]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Office]]></category>
		<category><![CDATA[Page]]></category>
		<category><![CDATA[STR]]></category>
		<category><![CDATA[UNC]]></category>
		<category><![CDATA[User interface techniques]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows Registry]]></category>
		<category><![CDATA[Z]]></category>
		<guid isPermaLink="false">http://henrypoon.mooo.com/blog/removing-the-annoying-windows-language-hotkeys-%e2%80%9cctrlspace%e2%80%9d-%e2%80%9cshiftspace%e2%80%9d-etc-that-toggles-the-full-widthhalf-width-characters-on-the-chinese-ime</guid>

					<description><![CDATA[There is a bug in Windows that prevents switching the hotkey of some of the language bar features.  The user is unable to change any of the hotkeys in the Advanced Key Settings page.  Some of the changed hotkeys revert to what they were before when the user tries to apply the changes.  Two keys [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">There is a bug in Windows that prevents switching the hotkey of some of the language bar features.  The user is unable to change any of the hotkeys in the Advanced Key Settings page.  Some of the changed hotkeys revert to what they were before when the user tries to apply the changes.  Two keys in particular, the “Ctrl+Space” and the “Shift+Space” key combinations are the most annoying.</p>



<p class="wp-block-paragraph">These two keys toggle the full-width (double-byte), and the half-width (single-byte&#8221;) character sets when typing with the Chinese IME.&nbsp; Full-width characters look like “ｔｈｉｓ “ while half-width is what people are normally used to.&nbsp; The default key combinations are easy to press by accident in situations such as capitalizing a title.&nbsp; Therefore, it is beneficial to remove this hotkey.</p>



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



<p class="wp-block-paragraph">Because changing the key settings manually through Windows does not work, one must go through the registry.&nbsp; The following fix applies to the current user that is logged in.&nbsp; Apply the following registry keys and then restart the computer.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Windows Registry Editor Version 5.00</p><p>[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys]</p><p>[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000010]<br>&#8220;Virtual Key&#8221;=hex:ff,00,00,00<br>&#8220;Key Modifiers&#8221;=hex:00,c0,00,00<br>&#8220;Target IME&#8221;=hex:00,00,00,00</p><p>[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000011]<br>&#8220;Virtual Key&#8221;=hex:ff,00,00,00<br>&#8220;Key Modifiers&#8221;=hex:00,c0,00,00<br>&#8220;Target IME&#8221;=hex:00,00,00,00</p><p>[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000012]<br>&#8220;Virtual Key&#8221;=hex:ff,00,00,00<br>&#8220;Key Modifiers&#8221;=hex:00,c0,00,00<br>&#8220;Target IME&#8221;=hex:00,00,00,00</p><p>[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000070]<br>&#8220;Virtual Key&#8221;=hex:ff,00,00,00<br>&#8220;Key Modifiers&#8221;=hex:00,c0,00,00<br>&#8220;Target IME&#8221;=hex:00,00,00,00</p><p>[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000071]<br>&#8220;Virtual Key&#8221;=hex:ff,00,00,00<br>&#8220;Key Modifiers&#8221;=hex:00,c0,00,00<br>&#8220;Target IME&#8221;=hex:00,00,00,00</p><p>[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000072]<br>&#8220;Virtual Key&#8221;=hex:ff,00,00,00<br>&#8220;Key Modifiers&#8221;=hex:00,c0,00,00<br>&#8220;Target IME&#8221;=hex:00,00,00,00</p><p>[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000201]<br>&#8220;Virtual Key&#8221;=hex:ff,00,00,00<br>&#8220;Key Modifiers&#8221;=hex:00,c0,00,00<br>&#8220;Target IME&#8221;=hex:00,00,00,00</p><p>[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000202]<br>&#8220;Virtual Key&#8221;=hex:ff,00,00,00<br>&#8220;Key Modifiers&#8221;=hex:00,c0,00,00<br>&#8220;Target IME&#8221;=hex:00,00,00,00</p><p>[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000203]<br>&#8220;Virtual Key&#8221;=hex:ff,00,00,00<br>&#8220;Key Modifiers&#8221;=hex:00,c0,00,00<br>&#8220;Target IME&#8221;=hex:00,00,00,00</p></blockquote>



<p class="wp-block-paragraph">In the registry, one can also navigate to “HKEY_CURRENT_USERControl PanelInput MethodHot Keys” and see a list of folders with names that have eight numbers in them with leading zeroes.&nbsp; Each folder here represents a particular hotkey related to an IME.&nbsp; Clicking on one of these folders will show data for these keys.</p>



<p class="wp-block-paragraph">Setting “Key Modifiers” to “00 c0 00 00” removes the use of the Ctrl and Alt key for the hotkey.<br>Setting “Virtual Key” to “ff 00 00 00” sets the key to nothing.<br>The key “Target IME” can be left as is.</p>



<p class="wp-block-paragraph">In the case of the “Shift+Space” hotkey, “Shift” is the key modifier and “Space” is the virtual key.</p>



<p class="wp-block-paragraph">It is unclear which folder corresponds to the key that toggles the character shape, therefore this fix is a blanket approach.</p>



<h1 class="wp-block-heading">If the Above Still Fails</h1>



<p class="wp-block-paragraph">Try combining the fix with an installation of Microsoft Office IME 2010, which can be downloaded here: <a href="http://www.microsoft.com/downloads/zh-tw/details.aspx?FamilyID=60984ecd-9575-411a-bd38-2294f17c4131&amp;displaylang=zh-tw" target="_blank" rel="noreferrer noopener">http://www.microsoft.com/downloads/zh-tw/details.aspx?FamilyID=60984ecd-9575-411a-bd38-2294f17c4131&amp;displaylang=zh-tw</a>.  Despite the name, it does not require Microsoft Office to be installed. After installing, apply the registry keys and restart.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.henrypoon.com/blog/2012/01/03/removing-the-annoying-windows-language-hotkeys-ctrlspace-shiftspace-etc-that-toggles-the-full-widthhalf-width-characters-on-the-chinese-ime/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1305</post-id>	</item>
	</channel>
</rss>
